@taiga-ui/kit 4.2.0 → 4.4.0-canary.6e6e993
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/components/calendar-range/calendar-range.component.d.ts +16 -6
- package/components/carousel/carousel.component.d.ts +1 -1
- package/components/input-phone-international/input-phone-international.options.d.ts +1 -1
- package/components/preview/preview.component.d.ts +1 -1
- package/components/segmented/segmented.directive.d.ts +2 -3
- package/components/slider/slider.component.d.ts +1 -1
- package/components/tiles/tile-handle.directive.d.ts +1 -1
- package/directives/button-close/index.d.ts +0 -1
- package/directives/button-select/button-select.directive.d.ts +12 -0
- package/directives/button-select/index.d.ts +1 -0
- package/directives/icon-badge/icon-badge.directive.d.ts +9 -0
- package/directives/icon-badge/index.d.ts +1 -0
- package/directives/index.d.ts +2 -0
- package/esm2022/components/accordion/accordion-item.component.mjs +10 -19
- package/esm2022/components/avatar/avatar-labeled.component.mjs +3 -6
- package/esm2022/components/avatar/avatar-stack.component.mjs +6 -7
- package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +6 -7
- package/esm2022/components/button-loading/button-loading.component.mjs +3 -5
- package/esm2022/components/calendar-month/calendar-month.component.mjs +6 -7
- package/esm2022/components/calendar-range/calendar-range.component.mjs +41 -46
- package/esm2022/components/carousel/carousel.component.mjs +17 -28
- package/esm2022/components/checkbox/checkbox.component.mjs +2 -2
- package/esm2022/components/checkbox/checkbox.options.mjs +3 -3
- package/esm2022/components/compass/compass.component.mjs +6 -7
- package/esm2022/components/elastic-container/elastic-container.component.mjs +8 -11
- package/esm2022/components/elastic-container/elastic-container.directive.mjs +2 -2
- package/esm2022/components/files/file/file.component.mjs +6 -7
- package/esm2022/components/files/input-files/input-files-validator.directive.mjs +6 -6
- package/esm2022/components/files/input-files/input-files.component.mjs +3 -5
- package/esm2022/components/files/input-files/input-files.directive.mjs +6 -3
- package/esm2022/components/filter/filter.component.mjs +6 -7
- package/esm2022/components/input-inline/input-inline.component.mjs +5 -6
- package/esm2022/components/input-phone-international/input-phone-international.component.mjs +3 -3
- package/esm2022/components/input-phone-international/input-phone-international.options.mjs +3 -3
- package/esm2022/components/items-with-more/items-with-more.service.mjs +4 -4
- package/esm2022/components/line-clamp/line-clamp-box.component.mjs +7 -8
- package/esm2022/components/line-clamp/line-clamp.component.mjs +5 -6
- package/esm2022/components/pagination/pagination.component.mjs +5 -13
- package/esm2022/components/pdf-viewer/pdf-viewer.component.mjs +4 -6
- package/esm2022/components/pin/pin.directive.mjs +6 -6
- package/esm2022/components/preview/pagination/preview-pagination.component.mjs +6 -9
- package/esm2022/components/preview/preview.component.mjs +4 -6
- package/esm2022/components/progress/progress-bar/progress-bar.component.mjs +7 -10
- package/esm2022/components/progress/progress-bar/progress-color-segments.directive.mjs +2 -2
- package/esm2022/components/progress/progress-circle/progress-circle.component.mjs +8 -13
- package/esm2022/components/push/push-alert.component.mjs +3 -3
- package/esm2022/components/radio/radio.component.mjs +2 -2
- package/esm2022/components/radio-list/radio-list.component.mjs +7 -10
- package/esm2022/components/range/range-change.directive.mjs +5 -5
- package/esm2022/components/range/range.component.mjs +10 -20
- package/esm2022/components/rating/rating.component.mjs +9 -19
- package/esm2022/components/segmented/segmented.component.mjs +8 -9
- package/esm2022/components/segmented/segmented.directive.mjs +17 -21
- package/esm2022/components/slider/helpers/key-steps.mjs +3 -2
- package/esm2022/components/slider/helpers/slider-key-steps.directive.mjs +5 -9
- package/esm2022/components/slider/helpers/slider-readonly.directive.mjs +7 -9
- package/esm2022/components/slider/slider.component.mjs +8 -12
- package/esm2022/components/stepper/step.component.mjs +12 -23
- package/esm2022/components/stepper/stepper.component.mjs +12 -21
- package/esm2022/components/switch/switch.component.mjs +6 -8
- package/esm2022/components/tabs/tabs-horizontal.directive.mjs +7 -13
- package/esm2022/components/tabs/tabs-vertical.directive.mjs +8 -12
- package/esm2022/components/tabs/tabs-with-more.component.mjs +7 -6
- package/esm2022/components/tabs/tabs.directive.mjs +7 -7
- package/esm2022/components/tiles/tile-handle.directive.mjs +15 -21
- package/esm2022/components/tiles/tile.component.mjs +9 -16
- package/esm2022/components/tiles/tiles.component.mjs +7 -10
- package/esm2022/components/tree/components/tree-item/tree-item.component.mjs +4 -6
- package/esm2022/components/tree/components/tree-item-content/tree-item-content.component.mjs +7 -8
- package/esm2022/directives/button-close/button-close.directive.mjs +5 -6
- package/esm2022/directives/button-close/index.mjs +1 -2
- package/esm2022/directives/button-select/button-select.directive.mjs +41 -0
- package/esm2022/directives/button-select/index.mjs +2 -0
- package/esm2022/directives/button-select/taiga-ui-kit-directives-button-select.mjs +5 -0
- package/esm2022/directives/fade/fade.directive.mjs +11 -19
- package/esm2022/directives/fluid-typography/fluid-typography.directive.mjs +2 -2
- package/esm2022/directives/highlight/highlight.directive.mjs +2 -2
- package/esm2022/directives/icon-badge/icon-badge.directive.mjs +41 -0
- package/esm2022/directives/icon-badge/index.mjs +2 -0
- package/esm2022/directives/icon-badge/taiga-ui-kit-directives-icon-badge.mjs +5 -0
- package/esm2022/directives/index.mjs +3 -1
- package/esm2022/directives/lazy-loading/lazy-loading.directive.mjs +15 -20
- package/esm2022/directives/lazy-loading/lazy-loading.service.mjs +2 -2
- package/esm2022/directives/present/present.directive.mjs +4 -8
- package/esm2022/directives/sensitive/sensitive.directive.mjs +5 -5
- package/esm2022/directives/skeleton/skeleton.directive.mjs +2 -2
- package/esm2022/directives/tooltip/tooltip.directive.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-accordion.mjs +9 -18
- package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-avatar.mjs +6 -10
- package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -6
- package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-button-loading.mjs +2 -4
- package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +5 -6
- package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +40 -45
- package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-carousel.mjs +16 -27
- package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-checkbox.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-compass.mjs +5 -6
- package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-elastic-container.mjs +8 -11
- package/fesm2022/taiga-ui-kit-components-elastic-container.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-files.mjs +15 -15
- package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-filter.mjs +5 -6
- package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -5
- package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +9 -11
- package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pagination.mjs +4 -12
- package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +3 -5
- package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pin.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-preview.mjs +8 -13
- package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-progress.mjs +13 -21
- package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-push.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs +6 -9
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-radio.mjs +1 -1
- package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-range.mjs +13 -23
- package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-rating.mjs +8 -18
- package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-segmented.mjs +22 -26
- package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-slider.mjs +17 -26
- package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-stepper.mjs +21 -41
- package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-switch.mjs +5 -7
- package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-tabs.mjs +23 -32
- package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-tiles.mjs +26 -42
- package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-tree.mjs +8 -11
- package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-button-close.mjs +5 -8
- package/fesm2022/taiga-ui-kit-directives-button-close.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-button-select.mjs +47 -0
- package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -0
- package/fesm2022/taiga-ui-kit-directives-fade.mjs +10 -18
- package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +1 -1
- package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-highlight.mjs +1 -1
- package/fesm2022/taiga-ui-kit-directives-highlight.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-icon-badge.mjs +47 -0
- package/fesm2022/taiga-ui-kit-directives-icon-badge.mjs.map +1 -0
- package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +15 -20
- package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-present.mjs +3 -7
- package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +4 -4
- package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +1 -1
- package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +6 -6
- package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives.mjs +2 -0
- package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
- package/package.json +499 -487
- package/directives/button-close/button-close.options.d.ts +0 -1
- package/esm2022/directives/button-close/button-close.options.mjs +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, EventEmitter,
|
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
4
4
|
import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
|
|
5
5
|
import { TUI_FIRST_DAY, TUI_LAST_DAY, TuiDay, TuiMonth, TuiMonthRange, TuiYear, } from '@taiga-ui/cdk/date-time';
|
|
6
6
|
import { TuiHovered } from '@taiga-ui/cdk/directives/hovered';
|
|
@@ -150,7 +150,7 @@ class TuiCalendarMonth {
|
|
|
150
150
|
this.yearChange.emit(year);
|
|
151
151
|
}
|
|
152
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarMonth, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarMonth, isStandalone: true, selector: "tui-calendar-month", inputs: { value: "value", year: "year", disabledItemHandler: "disabledItemHandler", minLength: "minLength", maxLength: "maxLength", min: "min", max: "max" }, outputs: { monthClick: "monthClick", hoveredItemChange: "hoveredItemChange", yearChange: "yearChange" }, host: { properties: { "class._single": "
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarMonth, isStandalone: true, selector: "tui-calendar-month", inputs: { value: "value", year: "year", disabledItemHandler: "disabledItemHandler", minLength: "minLength", maxLength: "maxLength", min: "min", max: "max" }, outputs: { monthClick: "monthClick", hoveredItemChange: "hoveredItemChange", yearChange: "yearChange" }, host: { properties: { "class._single": "isSingle" } }, ngImport: i0, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"previousYearDisabled\"\n [rightDisabled]=\"nextYearDisabled\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div class=\"t-row\">\n <ng-container *ngFor=\"let month of months$ | async; let index = index\">\n <div\n *tuiLet=\"getTuiMonth(index, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_interval]=\"isItemInsideRange(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n <div class=\"t-item\">{{ month }}</div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;font:var(--tui-font-text-m)}.t-row{position:relative;display:flex;justify-content:space-between;height:2.25rem;isolation:isolate}.t-item{position:relative;flex:1;line-height:2rem;border-radius:var(--tui-radius-m)}.t-item:before,.t-item:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-item:after{border-radius:.5rem}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;width:3.9375rem;text-align:center;outline:none;cursor:pointer;background-clip:content-box;box-sizing:border-box;border:.125rem solid transparent}.t-cell:before{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;border-radius:var(--tui-radius-m)}.t-cell_today:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";bottom:.3125rem;height:.125rem;width:.75rem;border-radius:.375rem;background:var(--tui-text-primary)}.t-cell_interval:before{background:var(--tui-background-base-alt)}:host._single .t-cell_interval:before{background:var(--tui-background-neutral-1-hover)}.t-cell_interval:not(:last-child):before{right:-.1875rem;border-top-right-radius:0;border-bottom-right-radius:0}.t-cell_interval:not([data-range=start]):not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell_interval:last-child:first-child:before{right:0}.t-cell_interval:first-child>.t-item{border-top-left-radius:var(--tui-radius-m);border-bottom-left-radius:var(--tui-radius-m)}.t-cell_interval:last-child>.t-item{border-top-right-radius:var(--tui-radius-m);border-bottom-right-radius:var(--tui-radius-m)}.t-cell_interval>.t-item{border-radius:0}.t-cell[data-range]:after{background:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item:before,.t-cell[data-range]>.t-item:after{background:var(--tui-background-accent-1)}.t-cell[data-range]:hover>.t-item:before,.t-cell[data-range]:hover>.t-item:after{background:var(--tui-background-accent-1-hover)}.t-cell[data-range]:active>.t-item:before,.t-cell[data-range]:active>.t-item:after{background:var(--tui-background-accent-1-pressed)}.t-cell[data-range=end]:before{background:var(--tui-background-base-alt)}:host._single .t-cell[data-range=end]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=end]>.t-item:before{left:.625rem;border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=end]>.t-item:after{left:-2rem;right:100%;transform:translate(1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=start]>.t-item:before{right:.625rem;border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]>.t-item:after{left:100%;right:-2rem;transform:translate(-1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=single]>.t-item:after{display:none}.t-cell_disabled{pointer-events:none}.t-cell_disabled>.t-item{opacity:.36}.t-cell:hover:not([data-range])>.t-item{background:var(--tui-background-neutral-1-hover)}.t-cell:active:not([data-range])>.t-item{background:var(--tui-background-neutral-1-pressed)}:host{display:block;height:13.625rem;width:15.75rem;padding:1.125rem;box-sizing:content-box}.t-row{flex-wrap:wrap;margin-top:1.4375rem}.t-cell:nth-child(n+5){margin-top:1.75rem}.t-cell_interval:nth-child(4n):before{right:0}.t-scrollbar{height:inherit;width:inherit}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["value", "initialItem", "min", "max", "disabledItemHandler"], outputs: ["yearClick"] }, { kind: "component", type: TuiSpinButton, selector: "tui-spin-button", inputs: ["focusable", "disabled", "leftDisabled", "rightDisabled"], outputs: ["leftClick", "rightClick"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
154
154
|
}
|
|
155
155
|
__decorate([
|
|
156
156
|
tuiPure
|
|
@@ -168,7 +168,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
168
168
|
TuiLink,
|
|
169
169
|
TuiLet,
|
|
170
170
|
TuiHovered,
|
|
171
|
-
], changeDetection: ChangeDetectionStrategy.OnPush,
|
|
171
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
172
|
+
'[class._single]': 'isSingle',
|
|
173
|
+
}, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"previousYearDisabled\"\n [rightDisabled]=\"nextYearDisabled\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div class=\"t-row\">\n <ng-container *ngFor=\"let month of months$ | async; let index = index\">\n <div\n *tuiLet=\"getTuiMonth(index, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_interval]=\"isItemInsideRange(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n <div class=\"t-item\">{{ month }}</div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;font:var(--tui-font-text-m)}.t-row{position:relative;display:flex;justify-content:space-between;height:2.25rem;isolation:isolate}.t-item{position:relative;flex:1;line-height:2rem;border-radius:var(--tui-radius-m)}.t-item:before,.t-item:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-item:after{border-radius:.5rem}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;width:3.9375rem;text-align:center;outline:none;cursor:pointer;background-clip:content-box;box-sizing:border-box;border:.125rem solid transparent}.t-cell:before{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;border-radius:var(--tui-radius-m)}.t-cell_today:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";bottom:.3125rem;height:.125rem;width:.75rem;border-radius:.375rem;background:var(--tui-text-primary)}.t-cell_interval:before{background:var(--tui-background-base-alt)}:host._single .t-cell_interval:before{background:var(--tui-background-neutral-1-hover)}.t-cell_interval:not(:last-child):before{right:-.1875rem;border-top-right-radius:0;border-bottom-right-radius:0}.t-cell_interval:not([data-range=start]):not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell_interval:last-child:first-child:before{right:0}.t-cell_interval:first-child>.t-item{border-top-left-radius:var(--tui-radius-m);border-bottom-left-radius:var(--tui-radius-m)}.t-cell_interval:last-child>.t-item{border-top-right-radius:var(--tui-radius-m);border-bottom-right-radius:var(--tui-radius-m)}.t-cell_interval>.t-item{border-radius:0}.t-cell[data-range]:after{background:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item:before,.t-cell[data-range]>.t-item:after{background:var(--tui-background-accent-1)}.t-cell[data-range]:hover>.t-item:before,.t-cell[data-range]:hover>.t-item:after{background:var(--tui-background-accent-1-hover)}.t-cell[data-range]:active>.t-item:before,.t-cell[data-range]:active>.t-item:after{background:var(--tui-background-accent-1-pressed)}.t-cell[data-range=end]:before{background:var(--tui-background-base-alt)}:host._single .t-cell[data-range=end]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=end]>.t-item:before{left:.625rem;border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=end]>.t-item:after{left:-2rem;right:100%;transform:translate(1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=start]>.t-item:before{right:.625rem;border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]>.t-item:after{left:100%;right:-2rem;transform:translate(-1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=single]>.t-item:after{display:none}.t-cell_disabled{pointer-events:none}.t-cell_disabled>.t-item{opacity:.36}.t-cell:hover:not([data-range])>.t-item{background:var(--tui-background-neutral-1-hover)}.t-cell:active:not([data-range])>.t-item{background:var(--tui-background-neutral-1-pressed)}:host{display:block;height:13.625rem;width:15.75rem;padding:1.125rem;box-sizing:content-box}.t-row{flex-wrap:wrap;margin-top:1.4375rem}.t-cell:nth-child(n+5){margin-top:1.75rem}.t-cell_interval:nth-child(4n):before{right:0}.t-scrollbar{height:inherit;width:inherit}\n"] }]
|
|
172
174
|
}], propDecorators: { value: [{
|
|
173
175
|
type: Input
|
|
174
176
|
}], year: [{
|
|
@@ -189,8 +191,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
189
191
|
type: Output
|
|
190
192
|
}], yearChange: [{
|
|
191
193
|
type: Output
|
|
192
|
-
}], isSingle: [{
|
|
193
|
-
type: HostBinding,
|
|
194
|
-
args: ['class._single']
|
|
195
194
|
}], calculateDisabledItemHandlerWithMinMax: [] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItbW9udGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItbW9udGgudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLGFBQWEsRUFDYixPQUFPLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRXBFLE9BQU8sRUFB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O2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJVSxVQUFVO3NCQUR6QixNQUFNO2dCQUlTLGlCQUFpQjtzQkFEaEMsTUFBTTtnQkFJUyxVQUFVO3NCQUR6QixNQUFNO2dCQU1JLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsZUFBZTtnQkF3SXBCLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUdWlEYXksXG4gICAgVHVpTW9udGgsXG4gICAgVHVpTW9udGhSYW5nZSxcbiAgICBUdWlZZWFyLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1R1aUhvdmVyZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9ob3ZlcmVkJztcbmltcG9ydCB7VHVpTGV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbGV0JztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aU51bGxhYmxlU2FtZSwgdHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJZZWFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7VHVpTGlua30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9saW5rJztcbmltcG9ydCB7VHVpU2Nyb2xsYmFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQge1R1aVNwaW5CdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc3Bpbi1idXR0b24nO1xuaW1wb3J0IHR5cGUge1R1aVJhbmdlU3RhdGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB7VFVJX0NBTEVOREFSX01PTlRIU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5jb25zdCBUT0RBWSA9IFR1aURheS5jdXJyZW50TG9jYWwoKTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1jYWxlbmRhci1tb250aCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIFR1aUNhbGVuZGFyWWVhcixcbiAgICAgICAgVHVpU3BpbkJ1dHRvbixcbiAgICAgICAgVHVpU2Nyb2xsYmFyLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlMZXQsXG4gICAgICAgIFR1aUhvdmVyZWQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbW9udGgudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGguc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDYWxlbmRhck1vbnRoIHtcbiAgICBwcm90ZWN0ZWQgaXNZZWFyUGlja2VyU2hvd24gPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9udGhzJCA9IGluamVjdChUVUlfQ0FMRU5EQVJfTU9OVEhTKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBUdWlNb250aCB8IFR1aU1vbnRoUmFuZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHllYXI6IFR1aVllYXIgPSBUT0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aU1vbnRoPiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXg6IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBtb250aENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlNb250aD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBob3ZlcmVkSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpTW9udGggfCBudWxsPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aVllYXI+KCk7XG5cbiAgICBwdWJsaWMgaG92ZXJlZEl0ZW06IFR1aU1vbnRoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9zaW5nbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNTaW5nbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoIHx8IHRoaXMudmFsdWUuaXNTaW5nbGVNb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25OZXh0WWVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVZZWFyKHRoaXMueWVhci5hcHBlbmQoe3llYXI6IDF9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJldmlvdXNZZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVllYXIodGhpcy55ZWFyLmFwcGVuZCh7eWVhcjogLTF9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSXRlbUluc2lkZVJhbmdlKG1vbnRoOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlIGluc3RhbmNlb2YgVHVpTW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUuaXNTaW5nbGVNb250aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZyb20ubW9udGhTYW1lT3JCZWZvcmUobW9udGgpICYmIHZhbHVlLnRvLm1vbnRoQWZ0ZXIobW9udGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhvdmVyZWRJdGVtID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYW5nZSA9IFR1aU1vbnRoUmFuZ2Uuc29ydCh2YWx1ZS5mcm9tLCBob3ZlcmVkSXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlLmZyb20ubW9udGhTYW1lT3JCZWZvcmUobW9udGgpICYmIHJhbmdlLnRvLm1vbnRoQWZ0ZXIobW9udGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtUmFuZ2UoaXRlbTogVHVpTW9udGgpOiBUdWlSYW5nZVN0YXRlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgaG92ZXJlZEl0ZW19ID0gdGhpcztcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHVpTW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tb250aFNhbWUoaXRlbSkgPyAnc2luZ2xlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aGVGaXJzdE9mUmFuZ2UgPSB2YWx1ZS5mcm9tLm1vbnRoU2FtZShpdGVtKSAmJiAhdmFsdWUuaXNTaW5nbGVNb250aDtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW1BZnRlckZyb20gPVxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoQWZ0ZXIodmFsdWUuZnJvbSkgJiZcbiAgICAgICAgICAgIHZhbHVlLmZyb20ubW9udGhTYW1lKGl0ZW0pICYmXG4gICAgICAgICAgICB2YWx1ZS5pc1NpbmdsZU1vbnRoO1xuICAgICAgICBjb25zdCBob3ZlcmVkSXRlbUlzQ2FuZGlkYXRlVG9CZUZyb20gPVxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoU2FtZShpdGVtKSAmJlxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoQmVmb3JlKHZhbHVlLmZyb20pICYmXG4gICAgICAgICAgICB2YWx1ZS5pc1NpbmdsZU1vbnRoO1xuXG4gICAgICAgIGlmICh0aGVGaXJzdE9mUmFuZ2UgfHwgaG92ZXJlZEl0ZW1BZnRlckZyb20gfHwgaG92ZXJlZEl0ZW1Jc0NhbmRpZGF0ZVRvQmVGcm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3N0YXJ0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoZUxhc3RPZlJhbmdlID0gdmFsdWUudG8ubW9udGhTYW1lKGl0ZW0pICYmICF2YWx1ZS5pc1NpbmdsZU1vbnRoO1xuICAgICAgICBjb25zdCBob3ZlcmVkSXRlbUJlZm9yZVRvID1cbiAgICAgICAgICAgIHZhbHVlLnRvLm1vbnRoU2FtZShpdGVtKSAmJlxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoQmVmb3JlKHZhbHVlLnRvKSAmJlxuICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVNb250aDtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW1Jc0NhbmRpZGF0ZVRvQmVUbyA9XG4gICAgICAgICAgICBob3ZlcmVkSXRlbT8ubW9udGhTYW1lKGl0ZW0pICYmXG4gICAgICAgICAgICBob3ZlcmVkSXRlbT8ubW9udGhBZnRlcih2YWx1ZS5mcm9tKSAmJlxuICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVNb250aDtcblxuICAgICAgICBpZiAodGhlTGFzdE9mUmFuZ2UgfHwgaG92ZXJlZEl0ZW1CZWZvcmVUbyB8fCBob3ZlcmVkSXRlbUlzQ2FuZGlkYXRlVG9CZVRvKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWUuaXNTaW5nbGVNb250aCAmJiB2YWx1ZS5mcm9tLm1vbnRoU2FtZShpdGVtKSA/ICdzaW5nbGUnIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkTWluKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluID8/IFRVSV9GSVJTVF9EQVk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1heCgpOiBUdWlNb250aCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heCA/PyBUVUlfTEFTVF9EQVk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBwcmV2aW91c1llYXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhci55ZWFyU2FtZU9yQmVmb3JlKHRoaXMuY29tcHV0ZWRNaW4pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgbmV4dFllYXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhci55ZWFyU2FtZU9yQWZ0ZXIodGhpcy5jb21wdXRlZE1heCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkaXNhYmxlZEl0ZW1IYW5kbGVyV2l0aE1pbk1heCgpOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlNb250aD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVEaXNhYmxlZEl0ZW1IYW5kbGVyV2l0aE1pbk1heChcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWluLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1heCxcbiAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFR1aU1vbnRoKG1vbnRoTnVtYmVyOiBudW1iZXIsIHllYXJOdW1iZXI6IG51bWJlcik6IFR1aU1vbnRoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aCh5ZWFyTnVtYmVyLCBtb250aE51bWJlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzSXRlbVRvZGF5KGl0ZW06IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBUT0RBWS5tb250aFNhbWUoaXRlbSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uUGlja2VyWWVhckNsaWNrKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzWWVhclBpY2tlclNob3duID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMueWVhci55ZWFyICE9PSB5ZWFyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVllYXIobmV3IFR1aVllYXIoeWVhcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSXRlbUNsaWNrKG1vbnRoOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcldpdGhNaW5NYXgobW9udGgpKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoQ2xpY2suZW1pdChtb250aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25ZZWFyQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNZZWFyUGlja2VyU2hvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkl0ZW1Ib3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4sIGl0ZW06IFR1aU1vbnRoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZEl0ZW0oaG92ZXJlZCA/IGl0ZW0gOiBudWxsKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcldpdGhNaW5NYXgoXG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aU1vbnRoPixcbiAgICAgICAgdmFsdWU6IFR1aU1vbnRoIHwgVHVpTW9udGhSYW5nZSB8IG51bGwsXG4gICAgICAgIG1pbjogVHVpTW9udGgsXG4gICAgICAgIG1heDogVHVpTW9udGgsXG4gICAgICAgIG1pbkxlbmd0aDogbnVtYmVyIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXIgfCBudWxsLFxuICAgICk6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aU1vbnRoPiB7XG4gICAgICAgIHJldHVybiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVsdGEgPVxuICAgICAgICAgICAgICAgIHZhbHVlIGluc3RhbmNlb2YgVHVpTW9udGhSYW5nZSAmJiB2YWx1ZS5pc1NpbmdsZU1vbnRoXG4gICAgICAgICAgICAgICAgICAgID8gTWF0aC5hYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueWVhciAqIDEyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubW9udGggLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuZnJvbS55ZWFyICogMTIgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuZnJvbS5tb250aCxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgY29uc3QgdG9vTG9uZyA9IGRlbHRhICYmIG1heExlbmd0aCAmJiBkZWx0YSA+IG1heExlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvb1Nob3J0ID0gZGVsdGEgJiYgbWluTGVuZ3RoICYmIGRlbHRhIDwgbWluTGVuZ3RoO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRvb0xvbmcgfHxcbiAgICAgICAgICAgICAgICB0b29TaG9ydCB8fFxuICAgICAgICAgICAgICAgIGl0ZW0ubW9udGhCZWZvcmUobWluKSB8fFxuICAgICAgICAgICAgICAgIGl0ZW0ubW9udGhBZnRlcihtYXgpIHx8XG4gICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUhvdmVyZWRJdGVtKG1vbnRoOiBUdWlNb250aCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aU51bGxhYmxlU2FtZSh0aGlzLmhvdmVyZWRJdGVtLCBtb250aCwgKGEsIGIpID0+IGEubW9udGhTYW1lKGIpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbSA9IG1vbnRoO1xuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtQ2hhbmdlLmVtaXQobW9udGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlWWVhcih5ZWFyOiBUdWlZZWFyKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhciA9IHllYXI7XG4gICAgICAgIHRoaXMueWVhckNoYW5nZS5lbWl0KHllYXIpO1xuICAgIH1cbn1cbiIsIjx0dWktc2Nyb2xsYmFyXG4gICAgKm5nSWY9XCJpc1llYXJQaWNrZXJTaG93bjsgZWxzZSBtb250aFNlbGVjdFwiXG4gICAgY2xhc3M9XCJ0LXNjcm9sbGJhclwiXG4+XG4gICAgPHR1aS1jYWxlbmRhci15ZWFyXG4gICAgICAgIFtpbml0aWFsSXRlbV09XCJ5ZWFyLnllYXJcIlxuICAgICAgICBbbWF4XT1cImNvbXB1dGVkTWF4LnllYXJcIlxuICAgICAgICBbbWluXT1cImNvbXB1dGVkTWluLnllYXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAoeWVhckNsaWNrKT1cIm9uUGlja2VyWWVhckNsaWNrKCRldmVudClcIlxuICAgIC8+XG48L3R1aS1zY3JvbGxiYXI+XG48bmctdGVtcGxhdGUgI21vbnRoU2VsZWN0PlxuICAgIDx0dWktc3Bpbi1idXR0b25cbiAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtsZWZ0RGlzYWJsZWRdPVwicHJldmlvdXNZZWFyRGlzYWJsZWRcIlxuICAgICAgICBbcmlnaHREaXNhYmxlZF09XCJuZXh0WWVhckRpc2FibGVkXCJcbiAgICAgICAgKGxlZnRDbGljayk9XCJvblByZXZpb3VzWWVhcigpXCJcbiAgICAgICAgKHJpZ2h0Q2xpY2spPVwib25OZXh0WWVhcigpXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItbW9udGhfX2FjdGl2ZS15ZWFyXCJcbiAgICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25ZZWFyQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHllYXIuZm9ybWF0dGVkWWVhciB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3R1aS1zcGluLWJ1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwidC1yb3dcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzJCB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICp0dWlMZXQ9XCJnZXRUdWlNb250aChpbmRleCwgeWVhci55ZWFyKSBhcyBpdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2VsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yYW5nZV09XCJnZXRJdGVtUmFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfZGlzYWJsZWRdPVwiZGlzYWJsZWRJdGVtSGFuZGxlcldpdGhNaW5NYXgoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfaW50ZXJ2YWxdPVwiaXNJdGVtSW5zaWRlUmFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfdG9kYXldPVwiaXNJdGVtVG9kYXkoaXRlbSlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgICAgKHR1aUhvdmVyZWRDaGFuZ2UpPVwib25JdGVtSG92ZXJlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1pdGVtXCI+e3sgbW9udGggfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItbW9udGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItbW9udGgudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsYUFBYSxFQUNiLE9BQU8sR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFcEUsT0FBTyxFQUFDLG1CQUFtQixF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QUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSVUsVUFBVTtzQkFEekIsTUFBTTtnQkFJUyxpQkFBaUI7c0JBRGhDLE1BQU07Z0JBSVMsVUFBVTtzQkFEekIsTUFBTTtnQkE0SUMsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9GSVJTVF9EQVksXG4gICAgVFVJX0xBU1RfREFZLFxuICAgIFR1aURheSxcbiAgICBUdWlNb250aCxcbiAgICBUdWlNb250aFJhbmdlLFxuICAgIFR1aVllYXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpSG92ZXJlZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2hvdmVyZWQnO1xuaW1wb3J0IHtUdWlMZXR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9sZXQnO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpTnVsbGFibGVTYW1lLCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlDYWxlbmRhclllYXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHtUdWlMaW5rfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHtUdWlTY3JvbGxiYXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc2Nyb2xsYmFyJztcbmltcG9ydCB7VHVpU3BpbkJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9zcGluLWJ1dHRvbic7XG5pbXBvcnQgdHlwZSB7VHVpUmFuZ2VTdGF0ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtUVUlfQ0FMRU5EQVJfTU9OVEhTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5cbmNvbnN0IFRPREFZID0gVHVpRGF5LmN1cnJlbnRMb2NhbCgpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLW1vbnRoJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgVHVpQ2FsZW5kYXJZZWFyLFxuICAgICAgICBUdWlTcGluQnV0dG9uLFxuICAgICAgICBUdWlTY3JvbGxiYXIsXG4gICAgICAgIFR1aUxpbmssXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpSG92ZXJlZCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1tb250aC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1tb250aC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLl9zaW5nbGVdJzogJ2lzU2luZ2xlJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDYWxlbmRhck1vbnRoIHtcbiAgICBwcm90ZWN0ZWQgaXNZZWFyUGlja2VyU2hvd24gPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9udGhzJCA9IGluamVjdChUVUlfQ0FMRU5EQVJfTU9OVEhTKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBUdWlNb250aCB8IFR1aU1vbnRoUmFuZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHllYXI6IFR1aVllYXIgPSBUT0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aU1vbnRoPiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXg6IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBtb250aENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlNb250aD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBob3ZlcmVkSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpTW9udGggfCBudWxsPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aVllYXI+KCk7XG5cbiAgICBwdWJsaWMgaG92ZXJlZEl0ZW06IFR1aU1vbnRoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgZ2V0IGlzU2luZ2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy52YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlNb250aCB8fCB0aGlzLnZhbHVlLmlzU2luZ2xlTW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTmV4dFllYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlWWVhcih0aGlzLnllYXIuYXBwZW5kKHt5ZWFyOiAxfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblByZXZpb3VzWWVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVZZWFyKHRoaXMueWVhci5hcHBlbmQoe3llYXI6IC0xfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0l0ZW1JbnNpZGVSYW5nZShtb250aDogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBob3ZlcmVkSXRlbX0gPSB0aGlzO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlLmlzU2luZ2xlTW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mcm9tLm1vbnRoU2FtZU9yQmVmb3JlKG1vbnRoKSAmJiB2YWx1ZS50by5tb250aEFmdGVyKG1vbnRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3ZlcmVkSXRlbSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBUdWlNb250aFJhbmdlLnNvcnQodmFsdWUuZnJvbSwgaG92ZXJlZEl0ZW0pO1xuXG4gICAgICAgIHJldHVybiByYW5nZS5mcm9tLm1vbnRoU2FtZU9yQmVmb3JlKG1vbnRoKSAmJiByYW5nZS50by5tb250aEFmdGVyKG1vbnRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlbVJhbmdlKGl0ZW06IFR1aU1vbnRoKTogVHVpUmFuZ2VTdGF0ZSB8IG51bGwge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubW9udGhTYW1lKGl0ZW0pID8gJ3NpbmdsZScgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhlRmlyc3RPZlJhbmdlID0gdmFsdWUuZnJvbS5tb250aFNhbWUoaXRlbSkgJiYgIXZhbHVlLmlzU2luZ2xlTW9udGg7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRJdGVtQWZ0ZXJGcm9tID1cbiAgICAgICAgICAgIGhvdmVyZWRJdGVtPy5tb250aEFmdGVyKHZhbHVlLmZyb20pICYmXG4gICAgICAgICAgICB2YWx1ZS5mcm9tLm1vbnRoU2FtZShpdGVtKSAmJlxuICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVNb250aDtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW1Jc0NhbmRpZGF0ZVRvQmVGcm9tID1cbiAgICAgICAgICAgIGhvdmVyZWRJdGVtPy5tb250aFNhbWUoaXRlbSkgJiZcbiAgICAgICAgICAgIGhvdmVyZWRJdGVtPy5tb250aEJlZm9yZSh2YWx1ZS5mcm9tKSAmJlxuICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVNb250aDtcblxuICAgICAgICBpZiAodGhlRmlyc3RPZlJhbmdlIHx8IGhvdmVyZWRJdGVtQWZ0ZXJGcm9tIHx8IGhvdmVyZWRJdGVtSXNDYW5kaWRhdGVUb0JlRnJvbSkge1xuICAgICAgICAgICAgcmV0dXJuICdzdGFydCc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aGVMYXN0T2ZSYW5nZSA9IHZhbHVlLnRvLm1vbnRoU2FtZShpdGVtKSAmJiAhdmFsdWUuaXNTaW5nbGVNb250aDtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW1CZWZvcmVUbyA9XG4gICAgICAgICAgICB2YWx1ZS50by5tb250aFNhbWUoaXRlbSkgJiZcbiAgICAgICAgICAgIGhvdmVyZWRJdGVtPy5tb250aEJlZm9yZSh2YWx1ZS50bykgJiZcbiAgICAgICAgICAgIHZhbHVlLmlzU2luZ2xlTW9udGg7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRJdGVtSXNDYW5kaWRhdGVUb0JlVG8gPVxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoU2FtZShpdGVtKSAmJlxuICAgICAgICAgICAgaG92ZXJlZEl0ZW0/Lm1vbnRoQWZ0ZXIodmFsdWUuZnJvbSkgJiZcbiAgICAgICAgICAgIHZhbHVlLmlzU2luZ2xlTW9udGg7XG5cbiAgICAgICAgaWYgKHRoZUxhc3RPZlJhbmdlIHx8IGhvdmVyZWRJdGVtQmVmb3JlVG8gfHwgaG92ZXJlZEl0ZW1Jc0NhbmRpZGF0ZVRvQmVUbykge1xuICAgICAgICAgICAgcmV0dXJuICdlbmQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlLmlzU2luZ2xlTW9udGggJiYgdmFsdWUuZnJvbS5tb250aFNhbWUoaXRlbSkgPyAnc2luZ2xlJyA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1pbigpOiBUdWlNb250aCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA/PyBUVUlfRklSU1RfREFZO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNYXgoKTogVHVpTW9udGgge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXggPz8gVFVJX0xBU1RfREFZO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgcHJldmlvdXNZZWFyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIueWVhclNhbWVPckJlZm9yZSh0aGlzLmNvbXB1dGVkTWluKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IG5leHRZZWFyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIueWVhclNhbWVPckFmdGVyKHRoaXMuY29tcHV0ZWRNYXgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZGlzYWJsZWRJdGVtSGFuZGxlcldpdGhNaW5NYXgoKTogVHVpQm9vbGVhbkhhbmRsZXI8VHVpTW9udGg+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcldpdGhNaW5NYXgoXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIsXG4gICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNYXgsXG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUdWlNb250aChtb250aE51bWJlcjogbnVtYmVyLCB5ZWFyTnVtYmVyOiBudW1iZXIpOiBUdWlNb250aCB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpTW9udGgoeWVhck51bWJlciwgbW9udGhOdW1iZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc0l0ZW1Ub2RheShpdGVtOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVE9EQVkubW9udGhTYW1lKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBpY2tlclllYXJDbGljayh5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1llYXJQaWNrZXJTaG93biA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnllYXIueWVhciAhPT0geWVhcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVZZWFyKG5ldyBUdWlZZWFyKHllYXIpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkl0ZW1DbGljayhtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXJXaXRoTWluTWF4KG1vbnRoKSkge1xuICAgICAgICAgICAgdGhpcy5tb250aENsaWNrLmVtaXQobW9udGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uWWVhckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzWWVhclBpY2tlclNob3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JdGVtSG92ZXJlZChob3ZlcmVkOiBib29sZWFuLCBpdGVtOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWRJdGVtKGhvdmVyZWQgPyBpdGVtIDogbnVsbCk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZURpc2FibGVkSXRlbUhhbmRsZXJXaXRoTWluTWF4KFxuICAgICAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlNb250aD4sXG4gICAgICAgIHZhbHVlOiBUdWlNb250aCB8IFR1aU1vbnRoUmFuZ2UgfCBudWxsLFxuICAgICAgICBtaW46IFR1aU1vbnRoLFxuICAgICAgICBtYXg6IFR1aU1vbnRoLFxuICAgICAgICBtaW5MZW5ndGg6IG51bWJlciB8IG51bGwsXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlNb250aD4ge1xuICAgICAgICByZXR1cm4gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID1cbiAgICAgICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoUmFuZ2UgJiYgdmFsdWUuaXNTaW5nbGVNb250aFxuICAgICAgICAgICAgICAgICAgICA/IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnllYXIgKiAxMiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm1vbnRoIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmZyb20ueWVhciAqIDEyIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmZyb20ubW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgIGNvbnN0IHRvb0xvbmcgPSBkZWx0YSAmJiBtYXhMZW5ndGggJiYgZGVsdGEgPiBtYXhMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCB0b29TaG9ydCA9IGRlbHRhICYmIG1pbkxlbmd0aCAmJiBkZWx0YSA8IG1pbkxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0b29Mb25nIHx8XG4gICAgICAgICAgICAgICAgdG9vU2hvcnQgfHxcbiAgICAgICAgICAgICAgICBpdGVtLm1vbnRoQmVmb3JlKG1pbikgfHxcbiAgICAgICAgICAgICAgICBpdGVtLm1vbnRoQWZ0ZXIobWF4KSB8fFxuICAgICAgICAgICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3ZlcmVkSXRlbShtb250aDogVHVpTW9udGggfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmICh0dWlOdWxsYWJsZVNhbWUodGhpcy5ob3ZlcmVkSXRlbSwgbW9udGgsIChhLCBiKSA9PiBhLm1vbnRoU2FtZShiKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaG92ZXJlZEl0ZW0gPSBtb250aDtcbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbUNoYW5nZS5lbWl0KG1vbnRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFjdGl2ZVllYXIoeWVhcjogVHVpWWVhcik6IHZvaWQge1xuICAgICAgICB0aGlzLnllYXIgPSB5ZWFyO1xuICAgICAgICB0aGlzLnllYXJDaGFuZ2UuZW1pdCh5ZWFyKTtcbiAgICB9XG59XG4iLCI8dHVpLXNjcm9sbGJhclxuICAgICpuZ0lmPVwiaXNZZWFyUGlja2VyU2hvd247IGVsc2UgbW9udGhTZWxlY3RcIlxuICAgIGNsYXNzPVwidC1zY3JvbGxiYXJcIlxuPlxuICAgIDx0dWktY2FsZW5kYXIteWVhclxuICAgICAgICBbaW5pdGlhbEl0ZW1dPVwieWVhci55ZWFyXCJcbiAgICAgICAgW21heF09XCJjb21wdXRlZE1heC55ZWFyXCJcbiAgICAgICAgW21pbl09XCJjb21wdXRlZE1pbi55ZWFyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgKHllYXJDbGljayk9XCJvblBpY2tlclllYXJDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuPC90dWktc2Nyb2xsYmFyPlxuPG5nLXRlbXBsYXRlICNtb250aFNlbGVjdD5cbiAgICA8dHVpLXNwaW4tYnV0dG9uXG4gICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICBbbGVmdERpc2FibGVkXT1cInByZXZpb3VzWWVhckRpc2FibGVkXCJcbiAgICAgICAgW3JpZ2h0RGlzYWJsZWRdPVwibmV4dFllYXJEaXNhYmxlZFwiXG4gICAgICAgIChsZWZ0Q2xpY2spPVwib25QcmV2aW91c1llYXIoKVwiXG4gICAgICAgIChyaWdodENsaWNrKT1cIm9uTmV4dFllYXIoKVwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLW1vbnRoX19hY3RpdmUteWVhclwiXG4gICAgICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uWWVhckNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB5ZWFyLmZvcm1hdHRlZFllYXIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC90dWktc3Bpbi1idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cInQtcm93XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRocyQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqdHVpTGV0PVwiZ2V0VHVpTW9udGgoaW5kZXgsIHllYXIueWVhcikgYXMgaXRlbVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNlbGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcmFuZ2VdPVwiZ2V0SXRlbVJhbmdlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1jZWxsX2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXJXaXRoTWluTWF4KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1jZWxsX2ludGVydmFsXT1cImlzSXRlbUluc2lkZVJhbmdlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1jZWxsX3RvZGF5XT1cImlzSXRlbVRvZGF5KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICh0dWlIb3ZlcmVkQ2hhbmdlKT1cIm9uSXRlbUhvdmVyZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInQtaXRlbVwiPnt7IG1vbnRoIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter,
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
|
|
6
6
|
import { TUI_FIRST_DAY, TUI_LAST_DAY, TuiDayRange, TuiMonth, } from '@taiga-ui/cdk/date-time';
|
|
@@ -17,13 +17,16 @@ import * as i0 from "@angular/core";
|
|
|
17
17
|
import * as i1 from "@taiga-ui/core/components/data-list";
|
|
18
18
|
class TuiCalendarRange {
|
|
19
19
|
constructor() {
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated use `item`
|
|
22
|
+
*/
|
|
23
|
+
this.selectedPeriod = null;
|
|
20
24
|
this.otherDateText$ = inject(TUI_OTHER_DATE_TEXT);
|
|
21
25
|
this.icons = inject(TUI_COMMON_ICONS);
|
|
22
26
|
this.cdr = inject(ChangeDetectorRef);
|
|
23
27
|
this.previousValue = null;
|
|
24
28
|
this.hoveredItem = null;
|
|
25
29
|
this.capsMapper = TUI_DAY_CAPS_MAPPER;
|
|
26
|
-
this.availableRange = null;
|
|
27
30
|
this.defaultViewedMonth = TuiMonth.currentLocal();
|
|
28
31
|
this.disabledItemHandler = TUI_FALSE_HANDLER;
|
|
29
32
|
this.markerHandler = null;
|
|
@@ -33,8 +36,9 @@ class TuiCalendarRange {
|
|
|
33
36
|
this.minLength = null;
|
|
34
37
|
this.maxLength = null;
|
|
35
38
|
this.value = null;
|
|
39
|
+
this.item = null;
|
|
36
40
|
this.valueChange = new EventEmitter();
|
|
37
|
-
this.
|
|
41
|
+
this.itemChange = new EventEmitter();
|
|
38
42
|
this.monthOffset = (value, month) => value.append({ month });
|
|
39
43
|
this.mapper = (items, min, max, minLength, otherDateText) => [
|
|
40
44
|
...items.filter((item) => (minLength === null ||
|
|
@@ -49,6 +53,18 @@ class TuiCalendarRange {
|
|
|
49
53
|
this.value = value;
|
|
50
54
|
});
|
|
51
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated use `item`
|
|
58
|
+
*/
|
|
59
|
+
get selectedActivePeriod() {
|
|
60
|
+
return this.selectedPeriod;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated use `item`
|
|
64
|
+
*/
|
|
65
|
+
set selectedActivePeriod(period) {
|
|
66
|
+
this.selectedPeriod = period;
|
|
67
|
+
}
|
|
52
68
|
ngOnChanges() {
|
|
53
69
|
this.defaultViewedMonth = this.value?.from || this.defaultViewedMonth;
|
|
54
70
|
}
|
|
@@ -77,10 +93,12 @@ class TuiCalendarRange {
|
|
|
77
93
|
if (!tuiIsString(item)) {
|
|
78
94
|
this.selectedActivePeriod = item;
|
|
79
95
|
this.updateValue(item.range.dayLimit(this.min, this.max));
|
|
96
|
+
this.itemChange.emit(item);
|
|
80
97
|
}
|
|
81
98
|
else if (this.activePeriod !== null) {
|
|
82
99
|
this.selectedActivePeriod = null;
|
|
83
100
|
this.updateValue(null);
|
|
101
|
+
this.itemChange.emit(null);
|
|
84
102
|
}
|
|
85
103
|
}
|
|
86
104
|
onMonthChange(month) {
|
|
@@ -91,18 +109,21 @@ class TuiCalendarRange {
|
|
|
91
109
|
this.selectedActivePeriod = null;
|
|
92
110
|
if (!this.value?.isSingleDay) {
|
|
93
111
|
this.value = new TuiDayRange(day, day);
|
|
112
|
+
this.itemChange.emit(this.findItemByDayRange(this.value));
|
|
94
113
|
}
|
|
95
114
|
else {
|
|
96
|
-
|
|
115
|
+
const sortedDayRange = TuiDayRange.sort(this.value.from, day);
|
|
116
|
+
this.updateValue(sortedDayRange);
|
|
117
|
+
this.itemChange.emit(this.findItemByDayRange(sortedDayRange));
|
|
97
118
|
}
|
|
98
|
-
this.availableRange = this.findAvailableRange();
|
|
99
119
|
}
|
|
100
120
|
updateValue(value) {
|
|
101
121
|
this.value = value;
|
|
102
122
|
this.valueChange.emit(value);
|
|
103
123
|
}
|
|
104
124
|
get activePeriod() {
|
|
105
|
-
return (this.
|
|
125
|
+
return (this.item ??
|
|
126
|
+
this.selectedActivePeriod ??
|
|
106
127
|
(this.items.find((item) => tuiNullableSame(this.value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
|
|
107
128
|
a.to.daySame(b.to.dayLimit(this.min, this.max)))) ||
|
|
108
129
|
null));
|
|
@@ -110,47 +131,15 @@ class TuiCalendarRange {
|
|
|
110
131
|
calculateDisabledItemHandler(disabledItemHandler, value, minLength) {
|
|
111
132
|
return (item) => {
|
|
112
133
|
if (!value?.isSingleDay || !minLength) {
|
|
113
|
-
return
|
|
134
|
+
return disabledItemHandler(item);
|
|
114
135
|
}
|
|
115
136
|
const negativeMinLength = Object.fromEntries(Object.entries(minLength).map(([key, value]) => [key, -value]));
|
|
116
137
|
const disabledBefore = value.from.append(negativeMinLength).append({ day: 1 });
|
|
117
138
|
const disabledAfter = value.from.append(minLength).append({ day: -1 });
|
|
118
139
|
const inDisabledRange = disabledBefore.dayBefore(item) && disabledAfter.dayAfter(item);
|
|
119
|
-
return
|
|
140
|
+
return inDisabledRange || disabledItemHandler(item);
|
|
120
141
|
};
|
|
121
142
|
}
|
|
122
|
-
isDisabledItem(disabledItemHandler, value, item) {
|
|
123
|
-
return (disabledItemHandler(item) ||
|
|
124
|
-
(!!value?.isSingleDay && !this.availableRangeContainsItem(item)));
|
|
125
|
-
}
|
|
126
|
-
availableRangeContainsItem(item) {
|
|
127
|
-
if (this.availableRange === null) {
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
|
-
const { from, to } = this.availableRange;
|
|
131
|
-
return from.daySameOrBefore(item) && to.daySameOrAfter(item);
|
|
132
|
-
}
|
|
133
|
-
findAvailableRange() {
|
|
134
|
-
const { disabledItemHandler, value } = this;
|
|
135
|
-
if (!value?.isSingleDay || disabledItemHandler === TUI_FALSE_HANDLER) {
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
let from = value.from;
|
|
139
|
-
let to = value.from;
|
|
140
|
-
let leftShift = true;
|
|
141
|
-
let rightShift = true;
|
|
142
|
-
while (leftShift || rightShift) {
|
|
143
|
-
leftShift = !disabledItemHandler(from.append({ day: -1 }));
|
|
144
|
-
if (leftShift) {
|
|
145
|
-
from = from.append({ day: -1 });
|
|
146
|
-
}
|
|
147
|
-
rightShift = !disabledItemHandler(to.append({ day: 1 }));
|
|
148
|
-
if (rightShift) {
|
|
149
|
-
to = to.append({ day: 1 });
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return new TuiDayRange(from, to);
|
|
153
|
-
}
|
|
154
143
|
updateDefaultViewedMonth() {
|
|
155
144
|
if (this.max && this.defaultViewedMonth.monthSameOrAfter(this.max)) {
|
|
156
145
|
this.defaultViewedMonth = this.max.append({ month: -1 });
|
|
@@ -159,8 +148,11 @@ class TuiCalendarRange {
|
|
|
159
148
|
this.defaultViewedMonth = this.min;
|
|
160
149
|
}
|
|
161
150
|
}
|
|
151
|
+
findItemByDayRange(dayRange) {
|
|
152
|
+
return this.items.find((item) => dayRange.daySame(item.range)) ?? null;
|
|
153
|
+
}
|
|
162
154
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarRange, isStandalone: true, selector: "tui-calendar-range", inputs: { defaultViewedMonth: "defaultViewedMonth", disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", items: "items", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.capture": "onEsc($event)" } }, usesOnChanges: true, ngImport: i0, template: "<tui-calendar\n automation-id=\"tui-calendar-range__calendar\"\n class=\"t-calendar\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [maxViewedMonth]=\"items.length ? null : (defaultViewedMonth | tuiMapper: monthOffset : -1)\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [month]=\"defaultViewedMonth\"\n [showAdjacent]=\"!!items.length\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<tui-calendar\n *ngIf=\"!items.length; else presets\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [minViewedMonth]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [month]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [showAdjacent]=\"false\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event.append({month: -1}))\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<ng-template #presets>\n <tui-data-list\n automation-id=\"tui-calendar-range__menu\"\n role=\"menu\"\n [style.flex]=\"1\"\n >\n <button\n *ngFor=\"let item of items | tuiMapper: mapper : min : max : minLength : (otherDateText$ | async)\"\n automation-id=\"tui-calendar-range__menu__item\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isItemActive(item)\"\n (click)=\"onItemSelect(item)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n {{ item }}\n <tui-icon\n *ngIf=\"isItemActive(item)\"\n automation-id=\"tui-calendar-range__checkmark\"\n [icon]=\"icons.check\"\n [style.font-size.rem]=\"1\"\n />\n </button>\n </tui-data-list>\n</ng-template>\n", styles: [":host{display:flex;min-width:30rem}.t-calendar{border-right:1px solid var(--tui-border-normal)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiCalendar, selector: "tui-calendar", inputs: ["month", "disabledItemHandler", "min", "max", "minViewedMonth", "maxViewedMonth", "hoveredItem", "showAdjacent", "markerHandler", "value", "initialView"], outputs: ["dayClick", "monthChange", "hoveredItemChange"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarRange, isStandalone: true, selector: "tui-calendar-range", inputs: { defaultViewedMonth: "defaultViewedMonth", disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", items: "items", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", value: "value", item: "item" }, outputs: { valueChange: "valueChange", itemChange: "itemChange" }, host: { listeners: { "document:keydown.capture": "onEsc($event)" } }, usesOnChanges: true, ngImport: i0, template: "<tui-calendar\n automation-id=\"tui-calendar-range__calendar\"\n class=\"t-calendar\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [maxViewedMonth]=\"items.length ? null : (defaultViewedMonth | tuiMapper: monthOffset : -1)\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [month]=\"defaultViewedMonth\"\n [showAdjacent]=\"!!items.length\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<tui-calendar\n *ngIf=\"!items.length; else presets\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [minViewedMonth]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [month]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [showAdjacent]=\"false\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event.append({month: -1}))\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<ng-template #presets>\n <tui-data-list\n automation-id=\"tui-calendar-range__menu\"\n role=\"menu\"\n [style.flex]=\"1\"\n >\n <button\n *ngFor=\"let item of items | tuiMapper: mapper : min : max : minLength : (otherDateText$ | async)\"\n automation-id=\"tui-calendar-range__menu__item\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isItemActive(item)\"\n (click)=\"onItemSelect(item)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n {{ item }}\n <tui-icon\n *ngIf=\"isItemActive(item)\"\n automation-id=\"tui-calendar-range__checkmark\"\n [icon]=\"icons.check\"\n [style.font-size.rem]=\"1\"\n />\n </button>\n </tui-data-list>\n</ng-template>\n", styles: [":host{display:flex;min-width:30rem}.t-calendar{border-right:1px solid var(--tui-border-normal)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiCalendar, selector: "tui-calendar", inputs: ["month", "disabledItemHandler", "min", "max", "minViewedMonth", "maxViewedMonth", "hoveredItem", "showAdjacent", "markerHandler", "value", "initialView"], outputs: ["dayClick", "monthChange", "hoveredItemChange"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
164
156
|
}
|
|
165
157
|
__decorate([
|
|
166
158
|
tuiPure
|
|
@@ -168,7 +160,9 @@ __decorate([
|
|
|
168
160
|
export { TuiCalendarRange };
|
|
169
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarRange, decorators: [{
|
|
170
162
|
type: Component,
|
|
171
|
-
args: [{ standalone: true, selector: 'tui-calendar-range', imports: [AsyncPipe, NgIf, NgForOf, TuiMapperPipe, TuiCalendar, TuiDataList, TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush,
|
|
163
|
+
args: [{ standalone: true, selector: 'tui-calendar-range', imports: [AsyncPipe, NgIf, NgForOf, TuiMapperPipe, TuiCalendar, TuiDataList, TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
164
|
+
'(document:keydown.capture)': 'onEsc($event)',
|
|
165
|
+
}, template: "<tui-calendar\n automation-id=\"tui-calendar-range__calendar\"\n class=\"t-calendar\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [maxViewedMonth]=\"items.length ? null : (defaultViewedMonth | tuiMapper: monthOffset : -1)\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [month]=\"defaultViewedMonth\"\n [showAdjacent]=\"!!items.length\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<tui-calendar\n *ngIf=\"!items.length; else presets\"\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [markerHandler]=\"markerHandler\"\n [max]=\"max | tuiMapper: capsMapper : value : maxLength : false\"\n [min]=\"min | tuiMapper: capsMapper : value : maxLength : true\"\n [minViewedMonth]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [month]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n [showAdjacent]=\"false\"\n [value]=\"value\"\n [(hoveredItem)]=\"hoveredItem\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event.append({month: -1}))\"\n (mousedown.prevent.silent)=\"(0)\"\n/>\n<ng-template #presets>\n <tui-data-list\n automation-id=\"tui-calendar-range__menu\"\n role=\"menu\"\n [style.flex]=\"1\"\n >\n <button\n *ngFor=\"let item of items | tuiMapper: mapper : min : max : minLength : (otherDateText$ | async)\"\n automation-id=\"tui-calendar-range__menu__item\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isItemActive(item)\"\n (click)=\"onItemSelect(item)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n {{ item }}\n <tui-icon\n *ngIf=\"isItemActive(item)\"\n automation-id=\"tui-calendar-range__checkmark\"\n [icon]=\"icons.check\"\n [style.font-size.rem]=\"1\"\n />\n </button>\n </tui-data-list>\n</ng-template>\n", styles: [":host{display:flex;min-width:30rem}.t-calendar{border-right:1px solid var(--tui-border-normal)}\n"] }]
|
|
172
166
|
}], ctorParameters: function () { return []; }, propDecorators: { defaultViewedMonth: [{
|
|
173
167
|
type: Input
|
|
174
168
|
}], disabledItemHandler: [{
|
|
@@ -187,10 +181,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
187
181
|
type: Input
|
|
188
182
|
}], value: [{
|
|
189
183
|
type: Input
|
|
184
|
+
}], item: [{
|
|
185
|
+
type: Input
|
|
190
186
|
}], valueChange: [{
|
|
191
187
|
type: Output
|
|
192
|
-
}],
|
|
193
|
-
type:
|
|
194
|
-
args: ['document:keydown.capture', ['$event']]
|
|
188
|
+
}], itemChange: [{
|
|
189
|
+
type: Output
|
|
195
190
|
}], calculateDisabledItemHandler: [] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUNILGFBQWEsRUFDYixZQUFZLEVBQ1osV0FBVyxFQUNYLFFBQVEsR0FDWCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFeEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FB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T0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFHcEUsdUJBQXVCLENBQUMsTUFBTTswRUFZeEMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBZ0NHLEtBQUs7c0JBRGQsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4RjVDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge09uQ2hhbmdlcywgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheSwgVHVpRGF5TGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUdWlEYXlSYW5nZSxcbiAgICBUdWlNb250aCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHt0dWlXYXRjaH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1R1aU1hcHBlclBpcGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvbWFwcGVyJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlciwgVHVpTWFwcGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpSXNTdHJpbmcsIHR1aU51bGxhYmxlU2FtZSwgdHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlNYXJrZXJIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHtUdWlEYXRhTGlzdH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHtUdWlJY29ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHtUVUlfQ09NTU9OX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtUVUlfQ0FMRU5EQVJfREFURV9TVFJFQU0sIFRVSV9PVEhFUl9EQVRFX1RFWFR9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfREFZX0NBUFNfTUFQUEVSfSBmcm9tICcuL2RheS1jYXBzLW1hcHBlcic7XG5pbXBvcnQgdHlwZSB7VHVpRGF5UmFuZ2VQZXJpb2R9IGZyb20gJy4vZGF5LXJhbmdlLXBlcmlvZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktY2FsZW5kYXItcmFuZ2UnLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIE5nSWYsIE5nRm9yT2YsIFR1aU1hcHBlclBpcGUsIFR1aUNhbGVuZGFyLCBUdWlEYXRhTGlzdCwgVHVpSWNvbl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2FsZW5kYXJSYW5nZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3RoZXJEYXRlVGV4dCQgPSBpbmplY3QoVFVJX09USEVSX0RBVEVfVEVYVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByb3RlY3RlZCBwcmV2aW91c1ZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBob3ZlcmVkSXRlbTogVHVpRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhcHNNYXBwZXIgPSBUVUlfREFZX0NBUFNfTUFQUEVSO1xuICAgIHByb3RlY3RlZCBhdmFpbGFibGVSYW5nZTogVHVpRGF5UmFuZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRWaWV3ZWRNb250aDogVHVpTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zOiByZWFkb25seSBUdWlEYXlSYW5nZVBlcmlvZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aURheSB8IG51bGwgPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBUdWlEYXkgfCBudWxsID0gVFVJX0xBU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXlSYW5nZSB8IG51bGw+KCk7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRBY3RpdmVQZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0PE9ic2VydmFibGU8VHVpRGF5UmFuZ2UgfCBudWxsPj4oVFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgICAgICAgPy5waXBlKHR1aVdhdGNoKHRoaXMuY2RyKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0Vmlld2VkTW9udGggPSB0aGlzLnZhbHVlPy5mcm9tIHx8IHRoaXMuZGVmYXVsdFZpZXdlZE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURlZmF1bHRWaWV3ZWRNb250aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlcigpOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcihcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNhcHR1cmUnLCBbJyRldmVudCddKVxuICAgIHByb3RlY3RlZCBvbkVzYyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRXNjYXBlJyB8fCAhdGhpcy52YWx1ZT8uaXNTaW5nbGVEYXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtb250aE9mZnNldDogVHVpTWFwcGVyPFtUdWlNb250aCwgbnVtYmVyXSwgVHVpTW9udGg+ID0gKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbW9udGgsXG4gICAgKSA9PiB2YWx1ZS5hcHBlbmQoe21vbnRofSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFwcGVyOiBUdWlNYXBwZXI8XG4gICAgICAgIFtcbiAgICAgICAgICAgIHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10sXG4gICAgICAgICAgICBUdWlEYXkgfCBudWxsLFxuICAgICAgICAgICAgVHVpRGF5IHwgbnVsbCxcbiAgICAgICAgICAgIFR1aURheUxpa2UgfCBudWxsLFxuICAgICAgICAgICAgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgXSxcbiAgICAgICAgUmVhZG9ubHlBcnJheTxUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZz5cbiAgICA+ID0gKGl0ZW1zLCBtaW4sIG1heCwgbWluTGVuZ3RoLCBvdGhlckRhdGVUZXh0KSA9PiBbXG4gICAgICAgIC4uLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIChtaW5MZW5ndGggPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yYW5nZS5mcm9tLmFwcGVuZChtaW5MZW5ndGgpLmRheVNhbWVPckJlZm9yZShpdGVtLnJhbmdlLnRvKSkgJiZcbiAgICAgICAgICAgICAgICAobWluID09PSBudWxsIHx8IGl0ZW0ucmFuZ2UudG8uZGF5U2FtZU9yQWZ0ZXIobWluKSkgJiZcbiAgICAgICAgICAgICAgICAobWF4ID09PSBudWxsIHx8IGl0ZW0ucmFuZ2UuZnJvbS5kYXlTYW1lT3JCZWZvcmUobWF4KSksXG4gICAgICAgICksXG4gICAgICAgIG90aGVyRGF0ZVRleHQgfHwgJycsXG4gICAgXTtcblxuICAgIHByb3RlY3RlZCBpc0l0ZW1BY3RpdmUoaXRlbTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge2FjdGl2ZVBlcmlvZH0gPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodHVpSXNTdHJpbmcoaXRlbSkgJiYgYWN0aXZlUGVyaW9kID09PSBudWxsKSB8fFxuICAgICAgICAgICAgYWN0aXZlUGVyaW9kID09PSBpdGVtIHx8XG4gICAgICAgICAgICBhY3RpdmVQZXJpb2Q/LnRvU3RyaW5nKCkgPT09IGl0ZW0udG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkl0ZW1TZWxlY3QoaXRlbTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0dWlJc1N0cmluZyhpdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFjdGl2ZVBlcmlvZCA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGl0ZW0ucmFuZ2UuZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVQZXJpb2QgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2hhbmdlKG1vbnRoOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlZmF1bHRWaWV3ZWRNb250aCA9IG1vbnRoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRheUNsaWNrKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSBudWxsO1xuXG4gICAgICAgIGlmICghdGhpcy52YWx1ZT8uaXNTaW5nbGVEYXkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVHVpRGF5UmFuZ2UoZGF5LCBkYXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShUdWlEYXlSYW5nZS5zb3J0KHRoaXMudmFsdWUuZnJvbSwgZGF5KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmF2YWlsYWJsZVJhbmdlID0gdGhpcy5maW5kQXZhaWxhYmxlUmFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYWN0aXZlUGVyaW9kKCk6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID8/XG4gICAgICAgICAgICAodGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZTxUdWlEYXlSYW5nZT4oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZURpc2FibGVkSXRlbUhhbmRsZXIoXG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4sXG4gICAgICAgIHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwsXG4gICAgICAgIG1pbkxlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwsXG4gICAgKTogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiB7XG4gICAgICAgIHJldHVybiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZT8uaXNTaW5nbGVEYXkgfHwgIW1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWRJdGVtKGRpc2FibGVkSXRlbUhhbmRsZXIsIHZhbHVlLCBpdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmVnYXRpdmVNaW5MZW5ndGggPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMobWluTGVuZ3RoKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgLXZhbHVlXSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRCZWZvcmUgPSB2YWx1ZS5mcm9tLmFwcGVuZChuZWdhdGl2ZU1pbkxlbmd0aCkuYXBwZW5kKHtkYXk6IDF9KTtcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQWZ0ZXIgPSB2YWx1ZS5mcm9tLmFwcGVuZChtaW5MZW5ndGgpLmFwcGVuZCh7ZGF5OiAtMX0pO1xuICAgICAgICAgICAgY29uc3QgaW5EaXNhYmxlZFJhbmdlID1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZEJlZm9yZS5kYXlCZWZvcmUoaXRlbSkgJiYgZGlzYWJsZWRBZnRlci5kYXlBZnRlcihpdGVtKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBpbkRpc2FibGVkUmFuZ2UgfHwgdGhpcy5pc0Rpc2FibGVkSXRlbShkaXNhYmxlZEl0ZW1IYW5kbGVyLCB2YWx1ZSwgaXRlbSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkSXRlbShcbiAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PixcbiAgICAgICAgdmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgaXRlbTogVHVpRGF5LFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKSB8fFxuICAgICAgICAgICAgKCEhdmFsdWU/LmlzU2luZ2xlRGF5ICYmICF0aGlzLmF2YWlsYWJsZVJhbmdlQ29udGFpbnNJdGVtKGl0ZW0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXZhaWxhYmxlUmFuZ2VDb250YWluc0l0ZW0oaXRlbTogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmF2YWlsYWJsZVJhbmdlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtmcm9tLCB0b30gPSB0aGlzLmF2YWlsYWJsZVJhbmdlO1xuXG4gICAgICAgIHJldHVybiBmcm9tLmRheVNhbWVPckJlZm9yZShpdGVtKSAmJiB0by5kYXlTYW1lT3JBZnRlcihpdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBdmFpbGFibGVSYW5nZSgpOiBUdWlEYXlSYW5nZSB8IG51bGwge1xuICAgICAgICBjb25zdCB7ZGlzYWJsZWRJdGVtSGFuZGxlciwgdmFsdWV9ID0gdGhpcztcblxuICAgICAgICBpZiAoIXZhbHVlPy5pc1NpbmdsZURheSB8fCBkaXNhYmxlZEl0ZW1IYW5kbGVyID09PSBUVUlfRkFMU0VfSEFORExFUikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZnJvbSA9IHZhbHVlLmZyb207XG4gICAgICAgIGxldCB0byA9IHZhbHVlLmZyb207XG5cbiAgICAgICAgbGV0IGxlZnRTaGlmdCA9IHRydWU7XG4gICAgICAgIGxldCByaWdodFNoaWZ0ID0gdHJ1ZTtcblxuICAgICAgICB3aGlsZSAobGVmdFNoaWZ0IHx8IHJpZ2h0U2hpZnQpIHtcbiAgICAgICAgICAgIGxlZnRTaGlmdCA9ICFkaXNhYmxlZEl0ZW1IYW5kbGVyKGZyb20uYXBwZW5kKHtkYXk6IC0xfSkpO1xuXG4gICAgICAgICAgICBpZiAobGVmdFNoaWZ0KSB7XG4gICAgICAgICAgICAgICAgZnJvbSA9IGZyb20uYXBwZW5kKHtkYXk6IC0xfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJpZ2h0U2hpZnQgPSAhZGlzYWJsZWRJdGVtSGFuZGxlcih0by5hcHBlbmQoe2RheTogMX0pKTtcblxuICAgICAgICAgICAgaWYgKHJpZ2h0U2hpZnQpIHtcbiAgICAgICAgICAgICAgICB0byA9IHRvLmFwcGVuZCh7ZGF5OiAxfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheVJhbmdlKGZyb20sIHRvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZURlZmF1bHRWaWV3ZWRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ICYmIHRoaXMuZGVmYXVsdFZpZXdlZE1vbnRoLm1vbnRoU2FtZU9yQWZ0ZXIodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRWaWV3ZWRNb250aCA9IHRoaXMubWF4LmFwcGVuZCh7bW9udGg6IC0xfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5taW4gJiYgdGhpcy5kZWZhdWx0Vmlld2VkTW9udGgubW9udGhTYW1lT3JCZWZvcmUodGhpcy5taW4pKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRWaWV3ZWRNb250aCA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHR1aS1jYWxlbmRhclxuICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItcmFuZ2VfX2NhbGVuZGFyXCJcbiAgICBjbGFzcz1cInQtY2FsZW5kYXJcIlxuICAgIFtkaXNhYmxlZEl0ZW1IYW5kbGVyXT1cImNhbGN1bGF0ZWREaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICBbbWF4XT1cIm1heCB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogZmFsc2VcIlxuICAgIFttYXhWaWV3ZWRNb250aF09XCJpdGVtcy5sZW5ndGggPyBudWxsIDogKGRlZmF1bHRWaWV3ZWRNb250aCB8IHR1aU1hcHBlcjogbW9udGhPZmZzZXQgOiAtMSlcIlxuICAgIFttaW5dPVwibWluIHwgdHVpTWFwcGVyOiBjYXBzTWFwcGVyIDogdmFsdWUgOiBtYXhMZW5ndGggOiB0cnVlXCJcbiAgICBbbW9udGhdPVwiZGVmYXVsdFZpZXdlZE1vbnRoXCJcbiAgICBbc2hvd0FkamFjZW50XT1cIiEhaXRlbXMubGVuZ3RoXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFsoaG92ZXJlZEl0ZW0pXT1cImhvdmVyZWRJdGVtXCJcbiAgICAoZGF5Q2xpY2spPVwib25EYXlDbGljaygkZXZlbnQpXCJcbiAgICAobW9udGhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4vPlxuPHR1aS1jYWxlbmRhclxuICAgICpuZ0lmPVwiIWl0ZW1zLmxlbmd0aDsgZWxzZSBwcmVzZXRzXCJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgW21heF09XCJtYXggfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IGZhbHNlXCJcbiAgICBbbWluXT1cIm1pbiB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogdHJ1ZVwiXG4gICAgW21pblZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aCB8IHR1aU1hcHBlcjogbW9udGhPZmZzZXQgOiAxXCJcbiAgICBbbW9udGhdPVwiZGVmYXVsdFZpZXdlZE1vbnRoIHwgdHVpTWFwcGVyOiBtb250aE9mZnNldCA6IDFcIlxuICAgIFtzaG93QWRqYWNlbnRdPVwiZmFsc2VcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgWyhob3ZlcmVkSXRlbSldPVwiaG92ZXJlZEl0ZW1cIlxuICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgIChtb250aENoYW5nZSk9XCJvbk1vbnRoQ2hhbmdlKCRldmVudC5hcHBlbmQoe21vbnRoOiAtMX0pKVwiXG4gICAgKG1vdXNlZG93bi5wcmV2ZW50LnNpbGVudCk9XCIoMClcIlxuLz5cbjxuZy10ZW1wbGF0ZSAjcHJlc2V0cz5cbiAgICA8dHVpLWRhdGEtbGlzdFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19tZW51XCJcbiAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICBbc3R5bGUuZmxleF09XCIxXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgdHVpTWFwcGVyOiBtYXBwZXIgOiBtaW4gOiBtYXggOiBtaW5MZW5ndGggOiAob3RoZXJEYXRlVGV4dCQgfCBhc3luYylcIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhci1yYW5nZV9fbWVudV9faXRlbVwiXG4gICAgICAgICAgICByb2xlPVwibWVudWl0ZW1yYWRpb1wiXG4gICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJpc0l0ZW1BY3RpdmUoaXRlbSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19jaGVja21hcmtcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25zLmNoZWNrXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnJlbV09XCIxXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQ0gsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JB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RSxDQUFDOytHQTVOUSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixvZUM5QzdCLDhzRUF3REEsc0pEbEJjLFNBQVMsOENBQUUsSUFBSSw2RkFBRSxPQUFPLDhHQUFFLGFBQWEsa0RBQUUsV0FBVyxvaEJBQWUsT0FBTzs7QUFrTTVFO0lBRFAsT0FBTztvRUFxQlA7U0E5TVEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBWDVCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixXQUNyQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFHcEUsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRiw0QkFBNEIsRUFBRSxlQUFlO3FCQUNoRDswRUFlTSxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSVMsVUFBVTtzQkFEekIsTUFBTTtnQkE2SUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7T25DaGFuZ2VzLCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlEYXksIFR1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7XG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpTW9udGgsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpV2F0Y2h9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUdWlNYXBwZXJQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL21hcHBlcic7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aU1hcHBlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUlzU3RyaW5nLCB0dWlOdWxsYWJsZVNhbWUsIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQgdHlwZSB7VHVpTWFya2VySGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQge1R1aUNhbGVuZGFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7VHVpRGF0YUxpc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VFVJX0NPTU1PTl9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCBUVUlfT1RIRVJfREFURV9URVhUfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0RBWV9DQVBTX01BUFBFUn0gZnJvbSAnLi9kYXktY2Fwcy1tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICcuL2RheS1yYW5nZS1wZXJpb2QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXJhbmdlJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBOZ0Zvck9mLCBUdWlNYXBwZXJQaXBlLCBUdWlDYWxlbmRhciwgVHVpRGF0YUxpc3QsIFR1aUljb25dLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGRvY3VtZW50OmtleWRvd24uY2FwdHVyZSknOiAnb25Fc2MoJGV2ZW50KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2FsZW5kYXJSYW5nZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZWxlY3RlZFBlcmlvZDogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3RoZXJEYXRlVGV4dCQgPSBpbmplY3QoVFVJX09USEVSX0RBVEVfVEVYVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByb3RlY3RlZCBwcmV2aW91c1ZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBob3ZlcmVkSXRlbTogVHVpRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhcHNNYXBwZXIgPSBUVUlfREFZX0NBUFNfTUFQUEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVmYXVsdFZpZXdlZE1vbnRoOiBUdWlNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWFya2VySGFuZGxlcjogVHVpTWFya2VySGFuZGxlciB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbjogVHVpRGF5IHwgbnVsbCA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXg6IFR1aURheSB8IG51bGwgPSBUVUlfTEFTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5MZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwgPSBudWxsO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXlSYW5nZSB8IG51bGw+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluamVjdDxPYnNlcnZhYmxlPFR1aURheVJhbmdlIHwgbnVsbD4+KFRVSV9DQUxFTkRBUl9EQVRFX1NUUkVBTSwge29wdGlvbmFsOiB0cnVlfSlcbiAgICAgICAgICAgID8ucGlwZSh0dWlXYXRjaCh0aGlzLmNkciksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFBlcmlvZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZChwZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGVyaW9kID0gcGVyaW9kO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0Vmlld2VkTW9udGggPSB0aGlzLnZhbHVlPy5mcm9tIHx8IHRoaXMuZGVmYXVsdFZpZXdlZE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURlZmF1bHRWaWV3ZWRNb250aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlcigpOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcihcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Fc2MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VzY2FwZScgfHwgIXRoaXMudmFsdWU/LmlzU2luZ2xlRGF5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9udGhPZmZzZXQ6IFR1aU1hcHBlcjxbVHVpTW9udGgsIG51bWJlcl0sIFR1aU1vbnRoPiA9IChcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG1vbnRoLFxuICAgICkgPT4gdmFsdWUuYXBwZW5kKHttb250aH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hcHBlcjogVHVpTWFwcGVyPFxuICAgICAgICBbXG4gICAgICAgICAgICByZWFkb25seSBUdWlEYXlSYW5nZVBlcmlvZFtdLFxuICAgICAgICAgICAgVHVpRGF5IHwgbnVsbCxcbiAgICAgICAgICAgIFR1aURheSB8IG51bGwsXG4gICAgICAgICAgICBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgICAgIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgIF0sXG4gICAgICAgIFJlYWRvbmx5QXJyYXk8VHVpRGF5UmFuZ2VQZXJpb2QgfCBzdHJpbmc+XG4gICAgPiA9IChpdGVtcywgbWluLCBtYXgsIG1pbkxlbmd0aCwgb3RoZXJEYXRlVGV4dCkgPT4gW1xuICAgICAgICAuLi5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAobWluTGVuZ3RoID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UuZnJvbS5hcHBlbmQobWluTGVuZ3RoKS5kYXlTYW1lT3JCZWZvcmUoaXRlbS5yYW5nZS50bykpICYmXG4gICAgICAgICAgICAgICAgKG1pbiA9PT0gbnVsbCB8fCBpdGVtLnJhbmdlLnRvLmRheVNhbWVPckFmdGVyKG1pbikpICYmXG4gICAgICAgICAgICAgICAgKG1heCA9PT0gbnVsbCB8fCBpdGVtLnJhbmdlLmZyb20uZGF5U2FtZU9yQmVmb3JlKG1heCkpLFxuICAgICAgICApLFxuICAgICAgICBvdGhlckRhdGVUZXh0IHx8ICcnLFxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgaXNJdGVtQWN0aXZlKGl0ZW06IFR1aURheVJhbmdlUGVyaW9kIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHthY3RpdmVQZXJpb2R9ID0gdGhpcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHR1aUlzU3RyaW5nKGl0ZW0pICYmIGFjdGl2ZVBlcmlvZCA9PT0gbnVsbCkgfHxcbiAgICAgICAgICAgIGFjdGl2ZVBlcmlvZCA9PT0gaXRlbSB8fFxuICAgICAgICAgICAgYWN0aXZlUGVyaW9kPy50b1N0cmluZygpID09PSBpdGVtLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JdGVtU2VsZWN0KGl0ZW06IFR1aURheVJhbmdlUGVyaW9kIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdHVpSXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShpdGVtLnJhbmdlLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpO1xuICAgICAgICAgICAgdGhpcy5pdGVtQ2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVQZXJpb2QgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW9udGhDaGFuZ2UobW9udGg6IFR1aU1vbnRoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFZpZXdlZE1vbnRoID0gbW9udGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFjdGl2ZVBlcmlvZCA9IG51bGw7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlPy5pc1NpbmdsZURheSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBUdWlEYXlSYW5nZShkYXksIGRheSk7XG4gICAgICAgICAgICB0aGlzLml0ZW1DaGFuZ2UuZW1pdCh0aGlzLmZpbmRJdGVtQnlEYXlSYW5nZSh0aGlzLnZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWREYXlSYW5nZSA9IFR1aURheVJhbmdlLnNvcnQodGhpcy52YWx1ZS5mcm9tLCBkYXkpO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHNvcnRlZERheVJhbmdlKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KHRoaXMuZmluZEl0ZW1CeURheVJhbmdlKHNvcnRlZERheVJhbmdlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYWN0aXZlUGVyaW9kKCk6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLml0ZW0gPz9cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPz9cbiAgICAgICAgICAgICh0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lPFR1aURheVJhbmdlPihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmZyb20uZGF5U2FtZShiLmZyb20uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGEudG8uZGF5U2FtZShiLnRvLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgbnVsbClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcihcbiAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PixcbiAgICAgICAgdmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+IHtcbiAgICAgICAgcmV0dXJuIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlPy5pc1NpbmdsZURheSB8fCAhbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5lZ2F0aXZlTWluTGVuZ3RoID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG1pbkxlbmd0aCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIC12YWx1ZV0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQmVmb3JlID0gdmFsdWUuZnJvbS5hcHBlbmQobmVnYXRpdmVNaW5MZW5ndGgpLmFwcGVuZCh7ZGF5OiAxfSk7XG4gICAgICAgICAgICBjb25zdCBkaXNhYmxlZEFmdGVyID0gdmFsdWUuZnJvbS5hcHBlbmQobWluTGVuZ3RoKS5hcHBlbmQoe2RheTogLTF9KTtcbiAgICAgICAgICAgIGNvbnN0IGluRGlzYWJsZWRSYW5nZSA9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWRCZWZvcmUuZGF5QmVmb3JlKGl0ZW0pICYmIGRpc2FibGVkQWZ0ZXIuZGF5QWZ0ZXIoaXRlbSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpbkRpc2FibGVkUmFuZ2UgfHwgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZURlZmF1bHRWaWV3ZWRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ICYmIHRoaXMuZGVmYXVsdFZpZXdlZE1vbnRoLm1vbnRoU2FtZU9yQWZ0ZXIodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRWaWV3ZWRNb250aCA9IHRoaXMubWF4LmFwcGVuZCh7bW9udGg6IC0xfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5taW4gJiYgdGhpcy5kZWZhdWx0Vmlld2VkTW9udGgubW9udGhTYW1lT3JCZWZvcmUodGhpcy5taW4pKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRWaWV3ZWRNb250aCA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kSXRlbUJ5RGF5UmFuZ2UoZGF5UmFuZ2U6IFR1aURheVJhbmdlKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT4gZGF5UmFuZ2UuZGF5U2FtZShpdGVtLnJhbmdlKSkgPz8gbnVsbDtcbiAgICB9XG59XG4iLCI8dHVpLWNhbGVuZGFyXG4gICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhci1yYW5nZV9fY2FsZW5kYXJcIlxuICAgIGNsYXNzPVwidC1jYWxlbmRhclwiXG4gICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiY2FsY3VsYXRlZERpc2FibGVkSXRlbUhhbmRsZXJcIlxuICAgIFttYXJrZXJIYW5kbGVyXT1cIm1hcmtlckhhbmRsZXJcIlxuICAgIFttYXhdPVwibWF4IHwgdHVpTWFwcGVyOiBjYXBzTWFwcGVyIDogdmFsdWUgOiBtYXhMZW5ndGggOiBmYWxzZVwiXG4gICAgW21heFZpZXdlZE1vbnRoXT1cIml0ZW1zLmxlbmd0aCA/IG51bGwgOiAoZGVmYXVsdFZpZXdlZE1vbnRoIHwgdHVpTWFwcGVyOiBtb250aE9mZnNldCA6IC0xKVwiXG4gICAgW21pbl09XCJtaW4gfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IHRydWVcIlxuICAgIFttb250aF09XCJkZWZhdWx0Vmlld2VkTW9udGhcIlxuICAgIFtzaG93QWRqYWNlbnRdPVwiISFpdGVtcy5sZW5ndGhcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgWyhob3ZlcmVkSXRlbSldPVwiaG92ZXJlZEl0ZW1cIlxuICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgIChtb250aENoYW5nZSk9XCJvbk1vbnRoQ2hhbmdlKCRldmVudClcIlxuICAgIChtb3VzZWRvd24ucHJldmVudC5zaWxlbnQpPVwiKDApXCJcbi8+XG48dHVpLWNhbGVuZGFyXG4gICAgKm5nSWY9XCIhaXRlbXMubGVuZ3RoOyBlbHNlIHByZXNldHNcIlxuICAgIFtkaXNhYmxlZEl0ZW1IYW5kbGVyXT1cImNhbGN1bGF0ZWREaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICBbbWF4XT1cIm1heCB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogZmFsc2VcIlxuICAgIFttaW5dPVwibWluIHwgdHVpTWFwcGVyOiBjYXBzTWFwcGVyIDogdmFsdWUgOiBtYXhMZW5ndGggOiB0cnVlXCJcbiAgICBbbWluVmlld2VkTW9udGhdPVwiZGVmYXVsdFZpZXdlZE1vbnRoIHwgdHVpTWFwcGVyOiBtb250aE9mZnNldCA6IDFcIlxuICAgIFttb250aF09XCJkZWZhdWx0Vmlld2VkTW9udGggfCB0dWlNYXBwZXI6IG1vbnRoT2Zmc2V0IDogMVwiXG4gICAgW3Nob3dBZGphY2VudF09XCJmYWxzZVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbKGhvdmVyZWRJdGVtKV09XCJob3ZlcmVkSXRlbVwiXG4gICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgKG1vbnRoQ2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50LmFwcGVuZCh7bW9udGg6IC0xfSkpXCJcbiAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4vPlxuPG5nLXRlbXBsYXRlICNwcmVzZXRzPlxuICAgIDx0dWktZGF0YS1saXN0XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItcmFuZ2VfX21lbnVcIlxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIFtzdHlsZS5mbGV4XT1cIjFcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCB0dWlNYXBwZXI6IG1hcHBlciA6IG1pbiA6IG1heCA6IG1pbkxlbmd0aCA6IChvdGhlckRhdGVUZXh0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19tZW51X19pdGVtXCJcbiAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbXJhZGlvXCJcbiAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImlzSXRlbUFjdGl2ZShpdGVtKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25JdGVtU2VsZWN0KGl0ZW0pXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudC5zaWxlbnQpPVwiKDApXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1BY3RpdmUoaXRlbSlcIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItcmFuZ2VfX2NoZWNrbWFya1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvbnMuY2hlY2tcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucmVtXT1cIjFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC90dWktZGF0YS1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|