barsa-sap-ui 2.0.15 → 2.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +1 -1
- package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +2 -2
- package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +1 -1
- package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +1 -1
- package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +8 -8
- package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +1 -1
- package/esm2022/lib/column-renderer/column-renderer.component.mjs +1 -1
- package/esm2022/lib/layout-control/layout-control.component.mjs +36 -22
- package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +7 -6
- package/esm2022/lib/ly-label/ly-label.component.mjs +3 -3
- package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +8 -3
- package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +7 -6
- package/esm2022/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +4 -3
- package/esm2022/lib/ui-tree/ui-tree.component.mjs +3 -3
- package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +9 -9
- package/fesm2022/barsa-sap-ui.mjs +75 -54
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-tree-item/barsa-tree-item.component.d.ts +2 -3
- package/lib/layout-control/layout-control.component.d.ts +11 -5
- package/lib/ly-horizontal-layout/ly-horizontal-layout.component.d.ts +6 -3
- package/lib/ly-layout-panel/ly-layout-panel.component.d.ts +4 -0
- package/lib/ly-vertical-layout/ly-vertical-layout.component.d.ts +6 -3
- package/lib/ui-tree-view/ui-tree-view.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -29,7 +29,7 @@ export class BarsaCartableFormComponent extends FormBaseComponent {
|
|
|
29
29
|
return isSmallDevice;
|
|
30
30
|
}
|
|
31
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaCartableFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaCartableFormComponent, selector: "bsu-barsa-cartable-form", host: { properties: { "class.smallDevice": "this._isSmallDevice" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (layout94$ | async; as layout94) {\n<div class=\"groups-wrapper\">\n @if ('\u062C\u0633\u062A\u062C\u0648 \u06AF\u0631\u0648\u0647' | controlUi: layout94; as configUi) {\n <bsu-layout-control\n class=\"search-group\"\n [caption]=\"'\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n ></bsu-layout-control>\n } @if ('\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644 \u06A9\u0627\u0631\u0628\u0631' | controlUi: layout94; as configUi) {\n <bsu-layout-control\n class=\"cartable-groups\"\n [caption]=\"'\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n ></bsu-layout-control>\n }\n</div>\n@if ('\u0631\u062F\u06CC\u0641\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644' | controlUi: layout94; as configUi) {\n<bsu-layout-control\n class=\"cartable-radif\"\n [caption]=\"'\u0631\u062F\u06CC\u0641\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n></bsu-layout-control>\n} }\n", styles: [":host{display:flex;width:100%;height:100%;border:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);background-color:var(--sapBaseColor)}:host.smallDevice{flex-direction:column;min-height:100vh}:host.smallDevice ::ng-deep bnrc-field-ui{margin:unset!important}:host .groups-wrapper{display:flex;flex-direction:column;min-width:280px;max-width:280px;border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host .cartable-groups{flex:1}:host.smallDevice .groups-wrapper{flex:unset;width:100%;min-width:100%;max-width:100%}:host.smallDevice .search-group{display:none}:host.smallDevice .cartable-groups{flex:unset}div{flex:1}:host ::ng-deep .viewer-container{min-height:100%!important}:host ::ng-deep .viewer-container fd-layout-panel{box-shadow:none}:host ::ng-deep tbody{border:none!important}:host ::ng-deep bnrc-field-ui{padding:0!important}\n"], dependencies: [{ kind: "component", type: i1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaCartableFormComponent, selector: "bsu-barsa-cartable-form", host: { properties: { "class.smallDevice": "this._isSmallDevice" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (layout94$ | async; as layout94) {\n<div class=\"groups-wrapper\">\n @if ('\u062C\u0633\u062A\u062C\u0648 \u06AF\u0631\u0648\u0647' | controlUi: layout94; as configUi) {\n <bsu-layout-control\n class=\"search-group\"\n [caption]=\"'\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n ></bsu-layout-control>\n } @if ('\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644 \u06A9\u0627\u0631\u0628\u0631' | controlUi: layout94; as configUi) {\n <bsu-layout-control\n class=\"cartable-groups\"\n [caption]=\"'\u06AF\u0631\u0648\u0647\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n ></bsu-layout-control>\n }\n</div>\n@if ('\u0631\u062F\u06CC\u0641\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644' | controlUi: layout94; as configUi) {\n<bsu-layout-control\n class=\"cartable-radif\"\n [caption]=\"'\u0631\u062F\u06CC\u0641\u0647\u0627\u06CC \u06A9\u0627\u0631\u062A\u0627\u0628\u0644'\"\n [config]=\"configUi\"\n [showLabel]=\"false\"\n></bsu-layout-control>\n} }\n", styles: [":host{display:flex;width:100%;height:100%;border:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);background-color:var(--sapBaseColor)}:host.smallDevice{flex-direction:column;min-height:100vh}:host.smallDevice ::ng-deep bnrc-field-ui{margin:unset!important}:host .groups-wrapper{display:flex;flex-direction:column;min-width:280px;max-width:280px;border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host .cartable-groups{flex:1}:host.smallDevice .groups-wrapper{flex:unset;width:100%;min-width:100%;max-width:100%}:host.smallDevice .search-group{display:none}:host.smallDevice .cartable-groups{flex:unset}div{flex:1}:host ::ng-deep .viewer-container{min-height:100%!important}:host ::ng-deep .viewer-container fd-layout-panel{box-shadow:none}:host ::ng-deep tbody{border:none!important}:host ::ng-deep bnrc-field-ui{padding:0!important}\n"], dependencies: [{ kind: "component", type: i1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaCartableFormComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
@@ -204,7 +204,7 @@ export class BarsaChatComponent extends FormBaseComponent {
|
|
|
204
204
|
return array;
|
|
205
205
|
}
|
|
206
206
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaChatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaChatComponent, selector: "bsu-barsa-chat", inputs: { simple: "simple" }, providers: [FormPanelService], viewQueries: [{ propertyName: "chatContentElement", first: true, predicate: ["chatContentElement"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"tw-flex tw-w-full tw-bg-gradient-to-r tw-from-[#5d6e7f] tw-to-[#354a5f] dark:tw-from-[#253443] dark:tw-to-[#10161c]\"\r\n fillEmptySpace\r\n [class.tw-h-screen]=\"!simple\"\r\n [class.tw-justify-center]=\"simple\"\r\n>\r\n @if (!simple) {\r\n <div class=\"tw-bg-black/[.3] 2xl:tw-grow tw-shrink tw-h-full\"></div>\r\n }\r\n <div\r\n class=\"tw-h-full tw-flex 2xl:tw-container max-w-[80rem] tw-shrink-0 tw-relative\"\r\n [ngClass]=\"{\r\n 'tw-grow 2xl:tw-grow-0': !simple,\r\n 'tw-w-full': simple\r\n }\"\r\n >\r\n @if (!simple) {\r\n <div class=\"tw-grow-0 tw-shrink-0 tw-w-full md:tw-w-96 tw-p-0 md:tw-p-6\">\r\n <div\r\n class=\"tw-flex tw-flex-col tw-w-full tw-h-full tw-overflow-hidden tw-border-l tw-border-l-gray-300 md:tw-rounded-2xl md:tw-border md:tw-border-l-gray-300 md:tw-border-gray-300 dark:tw-border-l-gray-600 md:dark:tw-border-l-gray-600 md:dark:tw-border-gray-600\"\r\n >\r\n <bsu-barsa-chat-threads-list-toolbar></bsu-barsa-chat-threads-list-toolbar>\r\n <bsu-barsa-chat-threads-list>\r\n @for (thread of threads; track thread.id) {\r\n <bsu-barsa-chat-thread [thread]=\"thread\" (click)=\"selectThread(thread)\"></bsu-barsa-chat-thread>\r\n }\r\n </bsu-barsa-chat-threads-list>\r\n </div>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"tw-absolute tw-top-0 tw-left-0 tw-w-full tw-h-full tw-bg-[url('assets/chat-bg.png')] tw-bg-fixed tw-opacity-25\"\r\n ></div>\r\n }\r\n <div\r\n class=\"tw-grow tw-shrink tw-relative\"\r\n [ngClass]=\"{\r\n 'md:tw-py-6 md:tw-pl-6 tw-hidden md:tw-flex': !simple,\r\n 'tw-flex': simple\r\n }\"\r\n >\r\n @if (selectedThread()) {\r\n <div\r\n @inContentAnimation\r\n class=\"tw-h-full tw-w-full tw-flex tw-flex-col tw-relative md:tw-border-gray-300 md:dark:tw-border-gray-600 tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n 'md:tw-border md:tw-rounded-2xl': !simple\r\n }\"\r\n >\r\n <bsu-barsa-chat-content-toolbar\r\n [title]=\"selectedThread().title\"\r\n [subtitle]=\"'\u0645\u062D\u0645\u062F \u0645\u062D\u0645\u062F\u06CC'\"\r\n [avatar]=\"selectedThread().avatar\"\r\n [status]=\"selectedThread().status\"\r\n ></bsu-barsa-chat-content-toolbar>\r\n <bsu-barsa-chat-content id=\"chat-container\">\r\n @if(layout94$ | async;as layout94){ @if ('\u0644\u06CC\u0633\u062A \u06AF\u0641\u062A\u06AF\u0648' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [config]=\"configUi\"></bsu-layout-control>\r\n } }\r\n </bsu-barsa-chat-content>\r\n <div\r\n class=\"tw-w-full\"\r\n [ngClass]=\"{\r\n 'tw-relative': !simple,\r\n '2xl:tw-rounded-t-xl tw-grow-0 tw-shrink-0': simple\r\n }\"\r\n >\r\n @if (replyingMessage()) {\r\n <div\r\n @inOutReplyingMessage\r\n class=\"tw-w-full tw-px-2 tw-py-1 tw-border-r-4 tw-border-r-bubble-mine tw-flex tw-gap-2 te-items-center tw-absolute tw-z-0 tw-bg-default tw-right-0 -tw-top-14\"\r\n >\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"decline\"\r\n class=\"tw-grow-0 tw-shrink-0\"\r\n (click)=\"replyingMessage.set(null)\"\r\n ></button>\r\n <div class=\"tw-flex tw-flex-col tw-grow tw-shrink tw-overflow-hidden\">\r\n <span class=\"tw-font-bold\">{{ replyingMessage().owner.name }}</span>\r\n <span class=\"tw-truncate\">{{\r\n replyingMessage().text ?? replyingMessage().file?.name ?? replyingMessage().image?.name\r\n }}</span>\r\n </div>\r\n <div class=\"tw-w-8 tw-shrink-0 tw-grow-0\"></div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-p-2 tw-flex tw-gap-2 tw-border-t tw-border-t-gray-300 dark:tw-border-t-gray-600 tw-bg-default tw-items-end tw-z-10\"\r\n >\r\n <fd-popover placement=\"top-start\" title=\"top-start\">\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"attachment\"\r\n class=\"!tw-rounded-full tw-shrink-0 tw-grow-0 !tw-size-10 !tw-min-h-10 !tw-max-h-10 !tw-min-w-10 !tw-max-w-10\"\r\n (click)=\"addAttachment()\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body minWidth=\"10rem\">\r\n <div class=\"tw-flex tw-flex-col tw-bg-default tw-w-full\" bodyClick>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"camera\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u0639\u06A9\u0633</span>\r\n <input class=\"tw-hidden\" type=\"file\" id=\"img\" name=\"img\" accept=\"image/*\" />\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"add-document\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u0641\u0627\u06CC\u0644</span>\r\n <input class=\"tw-hidden\" type=\"file\" id=\"file\" name=\"file\" accept=\"file/*\" />\r\n </label>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <div class=\"tw-inline-flex tw-relative tw-grow tw-shrink\">\r\n @if (!messageText.length) {\r\n <span\r\n class=\"tw-absolute tw-right-4 tw-top-4 -tw-translate-y-1/2 tw-text-gray-500 dark:tw-text-gray-500\"\r\n >\r\n \u0645\u062A\u0646 \u067E\u06CC\u0627\u0645...\r\n </span>\r\n }\r\n <div\r\n id=\"chat-textarea\"\r\n class=\"tw-inline-block tw-w-full tw-w-full tw-whitespace-pre-line tw-rounded-3xl tw-border tw-border-gray-300 dark:tw-border-gray-600 tw-px-4 tw-py-2 tw-max-h-32 tw-overflow-auto tw-resize tw-text-base\"\r\n role=\"textbox\"\r\n contenteditable\r\n ngDefaultControl\r\n (keydown.enter)=\"sendMessage()\"\r\n (input)=\"checkInput($event)\"\r\n ></div>\r\n </div>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"arrow-left\"\r\n class=\"!tw-rounded-full tw-shrink-0 tw-grow-0 !tw-size-10 !tw-min-h-10 !tw-max-h-10 !tw-min-w-10 !tw-max-w-10\"\r\n (click)=\"sendMessage()\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"tw-absolute tw-top-1/2 -tw-translate-y-1/2 tw-left-1/2 -tw-translate-x-1/2 tw-flex tw-flex-col tw-gap-8 tw-items-center\"\r\n >\r\n <img src=\"assets/not-selected-chat.png\" class=\"tw-w-64 tw-opacity-25\" />\r\n <!-- <span class=\"tw-text-xl tw-font-bold tw-text-gray-400 dark:tw-text-gray-500\">-->\r\n <!-- \u0628\u0631\u0627\u06CC \u0634\u0631\u0648\u0639 \u06CC\u06A9 \u0686\u062A \u0631\u0627 \u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F-->\r\n <!-- </span>-->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (!simple) {\r\n <div class=\"tw-bg-black/[.3] 2xl:tw-grow tw-shrink tw-h-full\"></div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i6.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i7.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i8.BarsaChatContentComponent, selector: "bsu-barsa-chat-content" }, { kind: "component", type: i9.BarsaChatThreadComponent, selector: "bsu-barsa-chat-thread", inputs: ["thread"] }, { kind: "component", type: i10.BarsaChatThreadsListComponent, selector: "bsu-barsa-chat-threads-list" }, { kind: "component", type: i11.BarsaChatThreadsListToolbarComponent, selector: "bsu-barsa-chat-threads-list-toolbar" }, { kind: "component", type: i12.BarsaChatContentToolbarComponent, selector: "bsu-barsa-chat-content-toolbar", inputs: ["avatar", "title", "subtitle", "status"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.ControlUiPipe, name: "controlUi" }], animations: [
|
|
207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaChatComponent, selector: "bsu-barsa-chat", inputs: { simple: "simple" }, providers: [FormPanelService], viewQueries: [{ propertyName: "chatContentElement", first: true, predicate: ["chatContentElement"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"tw-flex tw-w-full tw-bg-gradient-to-r tw-from-[#5d6e7f] tw-to-[#354a5f] dark:tw-from-[#253443] dark:tw-to-[#10161c]\"\r\n fillEmptySpace\r\n [class.tw-h-screen]=\"!simple\"\r\n [class.tw-justify-center]=\"simple\"\r\n>\r\n @if (!simple) {\r\n <div class=\"tw-bg-black/[.3] 2xl:tw-grow tw-shrink tw-h-full\"></div>\r\n }\r\n <div\r\n class=\"tw-h-full tw-flex 2xl:tw-container max-w-[80rem] tw-shrink-0 tw-relative\"\r\n [ngClass]=\"{\r\n 'tw-grow 2xl:tw-grow-0': !simple,\r\n 'tw-w-full': simple\r\n }\"\r\n >\r\n @if (!simple) {\r\n <div class=\"tw-grow-0 tw-shrink-0 tw-w-full md:tw-w-96 tw-p-0 md:tw-p-6\">\r\n <div\r\n class=\"tw-flex tw-flex-col tw-w-full tw-h-full tw-overflow-hidden tw-border-l tw-border-l-gray-300 md:tw-rounded-2xl md:tw-border md:tw-border-l-gray-300 md:tw-border-gray-300 dark:tw-border-l-gray-600 md:dark:tw-border-l-gray-600 md:dark:tw-border-gray-600\"\r\n >\r\n <bsu-barsa-chat-threads-list-toolbar></bsu-barsa-chat-threads-list-toolbar>\r\n <bsu-barsa-chat-threads-list>\r\n @for (thread of threads; track thread.id) {\r\n <bsu-barsa-chat-thread [thread]=\"thread\" (click)=\"selectThread(thread)\"></bsu-barsa-chat-thread>\r\n }\r\n </bsu-barsa-chat-threads-list>\r\n </div>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"tw-absolute tw-top-0 tw-left-0 tw-w-full tw-h-full tw-bg-[url('assets/chat-bg.png')] tw-bg-fixed tw-opacity-25\"\r\n ></div>\r\n }\r\n <div\r\n class=\"tw-grow tw-shrink tw-relative\"\r\n [ngClass]=\"{\r\n 'md:tw-py-6 md:tw-pl-6 tw-hidden md:tw-flex': !simple,\r\n 'tw-flex': simple\r\n }\"\r\n >\r\n @if (selectedThread()) {\r\n <div\r\n @inContentAnimation\r\n class=\"tw-h-full tw-w-full tw-flex tw-flex-col tw-relative md:tw-border-gray-300 md:dark:tw-border-gray-600 tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n 'md:tw-border md:tw-rounded-2xl': !simple\r\n }\"\r\n >\r\n <bsu-barsa-chat-content-toolbar\r\n [title]=\"selectedThread().title\"\r\n [subtitle]=\"'\u0645\u062D\u0645\u062F \u0645\u062D\u0645\u062F\u06CC'\"\r\n [avatar]=\"selectedThread().avatar\"\r\n [status]=\"selectedThread().status\"\r\n ></bsu-barsa-chat-content-toolbar>\r\n <bsu-barsa-chat-content id=\"chat-container\">\r\n @if(layout94$ | async;as layout94){ @if ('\u0644\u06CC\u0633\u062A \u06AF\u0641\u062A\u06AF\u0648' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [config]=\"configUi\"></bsu-layout-control>\r\n } }\r\n </bsu-barsa-chat-content>\r\n <div\r\n class=\"tw-w-full\"\r\n [ngClass]=\"{\r\n 'tw-relative': !simple,\r\n '2xl:tw-rounded-t-xl tw-grow-0 tw-shrink-0': simple\r\n }\"\r\n >\r\n @if (replyingMessage()) {\r\n <div\r\n @inOutReplyingMessage\r\n class=\"tw-w-full tw-px-2 tw-py-1 tw-border-r-4 tw-border-r-bubble-mine tw-flex tw-gap-2 te-items-center tw-absolute tw-z-0 tw-bg-default tw-right-0 -tw-top-14\"\r\n >\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"decline\"\r\n class=\"tw-grow-0 tw-shrink-0\"\r\n (click)=\"replyingMessage.set(null)\"\r\n ></button>\r\n <div class=\"tw-flex tw-flex-col tw-grow tw-shrink tw-overflow-hidden\">\r\n <span class=\"tw-font-bold\">{{ replyingMessage().owner.name }}</span>\r\n <span class=\"tw-truncate\">{{\r\n replyingMessage().text ?? replyingMessage().file?.name ?? replyingMessage().image?.name\r\n }}</span>\r\n </div>\r\n <div class=\"tw-w-8 tw-shrink-0 tw-grow-0\"></div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-p-2 tw-flex tw-gap-2 tw-border-t tw-border-t-gray-300 dark:tw-border-t-gray-600 tw-bg-default tw-items-end tw-z-10\"\r\n >\r\n <fd-popover placement=\"top-start\" title=\"top-start\">\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"attachment\"\r\n class=\"!tw-rounded-full tw-shrink-0 tw-grow-0 !tw-size-10 !tw-min-h-10 !tw-max-h-10 !tw-min-w-10 !tw-max-w-10\"\r\n (click)=\"addAttachment()\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body minWidth=\"10rem\">\r\n <div class=\"tw-flex tw-flex-col tw-bg-default tw-w-full\" bodyClick>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"camera\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u0639\u06A9\u0633</span>\r\n <input class=\"tw-hidden\" type=\"file\" id=\"img\" name=\"img\" accept=\"image/*\" />\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"add-document\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u0641\u0627\u06CC\u0644</span>\r\n <input class=\"tw-hidden\" type=\"file\" id=\"file\" name=\"file\" accept=\"file/*\" />\r\n </label>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <div class=\"tw-inline-flex tw-relative tw-grow tw-shrink\">\r\n @if (!messageText.length) {\r\n <span\r\n class=\"tw-absolute tw-right-4 tw-top-4 -tw-translate-y-1/2 tw-text-gray-500 dark:tw-text-gray-500\"\r\n >\r\n \u0645\u062A\u0646 \u067E\u06CC\u0627\u0645...\r\n </span>\r\n }\r\n <div\r\n id=\"chat-textarea\"\r\n class=\"tw-inline-block tw-w-full tw-w-full tw-whitespace-pre-line tw-rounded-3xl tw-border tw-border-gray-300 dark:tw-border-gray-600 tw-px-4 tw-py-2 tw-max-h-32 tw-overflow-auto tw-resize tw-text-base\"\r\n role=\"textbox\"\r\n contenteditable\r\n ngDefaultControl\r\n (keydown.enter)=\"sendMessage()\"\r\n (input)=\"checkInput($event)\"\r\n ></div>\r\n </div>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"arrow-left\"\r\n class=\"!tw-rounded-full tw-shrink-0 tw-grow-0 !tw-size-10 !tw-min-h-10 !tw-max-h-10 !tw-min-w-10 !tw-max-w-10\"\r\n (click)=\"sendMessage()\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"tw-absolute tw-top-1/2 -tw-translate-y-1/2 tw-left-1/2 -tw-translate-x-1/2 tw-flex tw-flex-col tw-gap-8 tw-items-center\"\r\n >\r\n <img src=\"assets/not-selected-chat.png\" class=\"tw-w-64 tw-opacity-25\" />\r\n <!-- <span class=\"tw-text-xl tw-font-bold tw-text-gray-400 dark:tw-text-gray-500\">-->\r\n <!-- \u0628\u0631\u0627\u06CC \u0634\u0631\u0648\u0639 \u06CC\u06A9 \u0686\u062A \u0631\u0627 \u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F-->\r\n <!-- </span>-->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (!simple) {\r\n <div class=\"tw-bg-black/[.3] 2xl:tw-grow tw-shrink tw-h-full\"></div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i6.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i7.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i8.BarsaChatContentComponent, selector: "bsu-barsa-chat-content" }, { kind: "component", type: i9.BarsaChatThreadComponent, selector: "bsu-barsa-chat-thread", inputs: ["thread"] }, { kind: "component", type: i10.BarsaChatThreadsListComponent, selector: "bsu-barsa-chat-threads-list" }, { kind: "component", type: i11.BarsaChatThreadsListToolbarComponent, selector: "bsu-barsa-chat-threads-list-toolbar" }, { kind: "component", type: i12.BarsaChatContentToolbarComponent, selector: "bsu-barsa-chat-content-toolbar", inputs: ["avatar", "title", "subtitle", "status"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.ControlUiPipe, name: "controlUi" }], animations: [
|
|
208
208
|
trigger('inContentAnimation', [
|
|
209
209
|
transition(':enter', [
|
|
210
210
|
style({ opacity: 0, transform: 'scale(50%, 50%)' }),
|
|
@@ -257,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
257
257
|
type: ViewChild,
|
|
258
258
|
args: ['chatContentElement', { read: ElementRef }]
|
|
259
259
|
}] } });
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9iYXJzYS1jaGF0L2JhcnNhLWNoYXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtY2hhdC9iYXJzYS1jaGF0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQThCM0UsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQTVCekQ7O1FBNkJhLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFdkIsa0JBQWEsR0FBRywrREFBK0QsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0Ysb0JBQWUsR0FBRyw4REFBOEQsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUYsa0JBQWEsR0FBRyxDQUNaLG1GQUFtRjtZQUNuRiwrRkFBK0Y7WUFDL0YsNEZBQTRGO1lBQzVGLDJGQUEyRjtZQUMzRiwyRkFBMkY7WUFDM0YseUZBQXlGO1lBQ3pGLDBGQUEwRjtZQUMxRiw4RUFBOEUsQ0FDakYsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNkLElBQUks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QUFFOzRCQUM1QixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dDQUNuRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDL0UsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQ0FDakQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7NkJBQ2hGLENBQUM7eUJBQ0wsQ0FBQztxQkFDTDs4QkFHUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lELGtCQUFrQjtzQkFBeEUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsLCBWaWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgam1vbWVudCBmcm9tICdtb21lbnQtamFsYWFsaSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRm9ybUJhc2VDb21wb25lbnQsIEZvcm1QYW5lbFNlcnZpY2UgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLWNoYXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1jaGF0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFyc2EtY2hhdC5jb21wb25lbnQuY3NzJyxcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2luQ29udGVudEFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDUwJSwgNTAlKScgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEwMCUsIDEwMCUpJyB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGUoMTAwJSwgMTAwJSknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDUwJSwgNTAlKScgfSkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignaW5PdXRSZXBseWluZ01lc3NhZ2UnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDUwJSknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSg1MCUpJyB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYUNoYXRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzaW1wbGUgPSB0cnVlO1xuICAgIEBWaWV3Q2hpbGQoJ2NoYXRDb250ZW50RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjaGF0Q29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gICAgcmFuZG9tTmFtZUFyciA9ICfYudmE24wg2K3Ys9mGINit2LPbjNmGINiq2YLbjCDZhtmC24wg2YXYrdmF2K8g2YXZh9iv24wg2KzYp9mI24zYryDZhdit2YXYr9ix2LbYpyDaqdix24zZhSDZh9mI2LTZhtqvINm+24zZhdin2YYnLnNwbGl0KCcgJyk7XG4gICAgcmFuZG9tRmFtaWx5QXJyID0gJ9qp2LHbjNmF24wg2K3Ys9uM2YbbjCDYstin2LHYuduMINiq2YLZiNuMINqp2KfYuNmF24wg2YLZhtio2LHbjCDZhtio2YjbjNin2YYg2KfZgdi02KfYsSDYsdin2K/ZhdmG2K8g2YXYrdmF2K/bjCcuc3BsaXQoJyAnKTtcbiAgICByYW5kb21UZXh0QXJyID0gKFxuICAgICAgICAn2YTZiNix2YUg2KfbjNm+2LPZiNmFINmF2KrZhiDYs9in2K7Yqtqv24wg2KjYpyDYqtmI2YTbjNivINiz2KfYr9qv24wg2YbYp9mF2YHZh9mI2YUg2KfYsiDYtdmG2LnYqiDahtin2b7YjCDZiCDYqNinINin2LPYqtmB2KfYr9mHINin2LIg2LfYsdin2K3Yp9mGJyArXG4gICAgICAgICcg2q/Ysdin2YHbjNqpINin2LPYqtiMINqG2KfZvtqv2LHZh9inINmIINmF2KrZiNmGINio2YTaqdmHINix2YjYstmG2KfZhdmHINmIINmF2KzZhNmHINiv2LEg2LPYqtmI2YYg2Ygg2LPYt9ix2KLZhtqG2YbYp9mGINqp2Ycg2YTYp9iy2YUg2KfYs9iq2Iwg2Ygg2KjYsdin24wg2LTYsdin24zYtycgK1xuICAgICAgICAnINmB2LnZhNuMINiq2qnZhtmI2YTZiNqY24wg2YXZiNix2K8g2YbbjNin2LLYjCDZiCDaqdin2LHYqNix2K/Zh9in24wg2YXYqtmG2YjYuSDYqNinINmH2K/ZgSDYqNmH2KjZiNivINin2KjYstin2LHZh9in24wg2qnYp9ix2KjYsdiv24wg2YXbjCDYqNin2LTYr9iMINqp2KrYp9io2YfYp9uMJyArXG4gICAgICAgICcg2LLbjNin2K/bjCDYr9ixINi02LXYqiDZiCDYs9mHINiv2LHYtdivINqv2LDYtNiq2Ycg2K3Yp9mEINmIINii24zZhtiv2YfYjCDYtNmG2KfYrtiqINmB2LHYp9mI2KfZhiDYrNin2YXYudmHINmIINmF2KrYrti12LXYp9mGINix2Kcg2YXbjCDYt9mE2KjYr9iMINiq2Kcg2KjYpycgK1xuICAgICAgICAnINmG2LHZhSDYp9mB2LLYp9ix2YfYpyDYtNmG2KfYrtiqINio24zYtNiq2LHbjCDYsdinINio2LHYp9uMINi32LHYp9it2KfZhiDYsdin24zYp9mG2Ycg2KfbjCDYudmE24wg2KfZhNiu2LXZiNi1INi32LHYp9it2KfZhiDYrtmE2KfZgtuM2Iwg2Ygg2YHYsdmH2YbaryDZvtuM2LTYsdmIJyArXG4gICAgICAgICcg2K/YsSDYstio2KfZhiDZgdin2LHYs9uMINin24zYrNin2K8g2qnYsdiv2Iwg2K/YsSDYp9uM2YYg2LXZiNix2Kog2YXbjCDYqtmI2KfZhiDYp9mF24zYryDYr9in2LTYqiDaqdmHINiq2YXYp9mFINmIINiv2LTZiNin2LHbjCDZhdmI2KzZiNivINiv2LEg2KfYsdin2KbZhycgK1xuICAgICAgICAnINix2KfZh9qp2KfYsdmH2KfYjCDZiCDYtNix2KfbjNi3INiz2K7YqiDYqtin24zZviDYqNmHINm+2KfbjNin2YYg2LHYs9ivINmIINiy2YXYp9mGINmF2YjYsdivINmG24zYp9iyINi02KfZhdmEINit2LHZiNmB2obbjNmG24wg2K/Ys9iq2KfZiNix2K/Zh9in24wg2KfYtdmE24zYjCcgK1xuICAgICAgICAnINmIINis2YjYp9io2q/ZiNuMINiz2YjYp9mE2KfYqiDZvtuM2YjYs9iq2Ycg2KfZh9mEINiv2YbbjNin24wg2YXZiNis2YjYryDYt9ix2KfYrduMINin2LPYp9iz2Kcg2YXZiNix2K8g2KfYs9iq2YHYp9iv2Ycg2YLYsdin2LEg2q/bjNix2K8uJ1xuICAgICkuc3BsaXQoJyAnKTtcbiAgICB0aHJlYWRzID0gQXJyYXkoMjApXG4gICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgIC5tYXAoKHQpID0+ICh7XG4gICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmRvbU5hbWVBcnJbTWF0aC5mbG9vcih0aGlzLnJhbmRvbU5hbWVBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSldICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIHRoaXMucmFuZG9tRmFtaWx5QXJyW01hdGguZmxvb3IodGhpcy5yYW5kb21GYW1pbHlBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSldLFxuICAgICAgICAgICAgYXZhdGFyOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzEwMD93b3JrQXJvdW5kPScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApLFxuICAgICAgICAgICAgc3RhdHVzOiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0KSxcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdGhpcy5yYW5kb21EYXRlKG5ldyBEYXRlKCcyMDI0LTAzLTAzJyksIG5ldyBEYXRlKCkpLFxuICAgICAgICAgICAgdW5yZWFkQ291bnQ6IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSkgPyAxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApIDogMCxcbiAgICAgICAgICAgIHBpbm5lZDogISFNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkpLFxuICAgICAgICAgICAgbXV0ZWQ6ICEhTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKSxcbiAgICAgICAgICAgIGxhc3RNZXNzYWdlOiB7XG4gICAgICAgICAgICAgICAgaWQ6IE1hdGgucmFuZG9tKCkgKiAxMDAwLFxuICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAxMjM0LFxuICAgICAgICAgICAgICAgICAgICBhdmF0YXI6ICdodHRwczovL3BpY3N1bS5waG90b3MvMTAwP3dvcmtBcm91bmQ9JyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICfZhdmH2K/bjCDYstin2LHYuduMJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5zaHVmZmxlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmRvbVRleHRBcnIuc2xpY2UoMCwgMSArIE1hdGguZmxvb3IodGhpcy5yYW5kb21UZXh0QXJyLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpKVxuICAgICAgICAgICAgICAgICkuam9pbignICcpLFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICAudG9UaW1lU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcgJylbMF1cbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHMpID0+IHMucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJzonKSxcbiAgICAgICAgICAgICAgICBkZWxpdmVyZWRBdDogbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICAudG9UaW1lU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcgJylbMF1cbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHMpID0+IHMucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJzonKSxcbiAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgLnRvVGltZVN0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnICcpWzBdXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnOicpXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChzKSA9PiBzLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCc6JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIG1vbWVudCA9IGptb21lbnQ7XG4gICAgc2VsZWN0ZWRUaHJlYWQ6IFdyaXRhYmxlU2lnbmFsPGFueSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuICAgIG1lc3NhZ2VzOiBXcml0YWJsZVNpZ25hbDxhbnlbXSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuICAgIHJlcGx5aW5nTWVzc2FnZTogV3JpdGFibGVTaWduYWw8YW55IHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gICAgbWVzc2FnZVRleHQgPSAnJztcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjaGF0LW1vZGUnKTtcbiAgICAgICAgdGhpcy5zZWxlY3RUaHJlYWQodGhpcy50aHJlYWRzWzBdKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY2hhdC1tb2RlJyk7XG4gICAgfVxuICAgIHNjcm9sbFRvQm90dG9tKGZvcmNlID0gZmFsc2UsIGluc3RhbnQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNoYXRDb250ZW50RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGZvcmNlIHx8IChjb250YWluZXIgJiYgY29udGFpbmVyLnNjcm9sbFRvcE1heCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPCAzMDApKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjb250YWluZXIuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogaW5zdGFudCA/ICdpbnN0YW50JyA6ICdzbW9vdGgnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgY2hlY2tJbnB1dChldmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0O1xuICAgIH1cbiAgICBzZW5kTWVzc2FnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVRleHQ/LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNldChbXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMubWVzc2FnZXMoKSBhcyBhbnlbXSksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogMTIzNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICfZhdmH2K/bjCDYstin2LHYuduMJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLm1lc3NhZ2VUZXh0LFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVRleHQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IGlucHV0TWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGF0LXRleHRhcmVhJyk7XG4gICAgICAgICAgICBpZiAoaW5wdXRNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgaW5wdXRNZXNzYWdlLmlubmVyVGV4dCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSh0cnVlKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNldChbXG4gICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLm1lc3NhZ2VzKCkgYXMgYW55W10pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA0MzIxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkVGhyZWFkKCkudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnNodWZmbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5kb21UZXh0QXJyLnNsaWNlKDAsIDEgKyBNYXRoLmZsb29yKHRoaXMucmFuZG9tVGV4dEFyci5sZW5ndGggKiBNYXRoLnJhbmRvbSgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbignICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcmVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20odHJ1ZSk7XG4gICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRBdHRhY2htZW50KCk6IHZvaWQge31cbiAgICBzZWxlY3RUaHJlYWQodGhyZWFkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRocmVhZC5zZXQodGhyZWFkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoXG4gICAgICAgICAgICBBcnJheSg0MClcbiAgICAgICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgICAgIC5tYXAoKHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3duZXJVc2VyID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZVR5cGUgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNUZXh0ID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nT3JpZ2luYWxXaWR0aCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwMCkgKyAyMDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ09yaWdpbmFsSGVpZ2h0ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjAwKSArIDIwMDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBNYXRoLnJhbmRvbSgpICogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG93bmVyVXNlciA/IDEyMzQgOiA0MzIxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvd25lclVzZXIgPyAn2YXZh9iv24wg2LLYp9ix2LnbjCcgOiB0aHJlYWQudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlVHlwZSA+IDAuNSAmJiBoYXNUZXh0KSB8fCBtZXNzYWdlVHlwZSA8PSAwLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNodWZmbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFuZG9tVGV4dEFyci5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZVR5cGUgPiAwLjUgPyAzMCA6IHRoaXMucmFuZG9tVGV4dEFyci5sZW5ndGgpICogTWF0aC5yYW5kb20oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbignICcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA+IDAuODVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICfbjNqpINi52K/YryDZgdin24zZhCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dDogWydwbmcnLCAnanBnJywgJ3BkZicsICdkb2NzJywgJ2NzdiddW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn2KjYp9uM2KonLCAn2qnbjNmE2YjYqNin24zYqicsICfZhdqv2KfYqNin24zYqiddW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDMpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA8PSAwLjg1ICYmIG1lc3NhZ2VUeXBlID4gMC41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAn24zaqSDYudiv2K8g2LnaqdizJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zLyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjAwMCl9LyR7TWF0aC5mbG9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucmFuZG9tKCkgKiAyMDAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9P3dvcmtBcm91bmQ9JHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsV2lkdGg6IGltZ09yaWdpbmFsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSGVpZ2h0OiBpbWdPcmlnaW5hbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IHRoaXMucmFuZG9tRGF0ZShuZXcgRGF0ZSgnMjAyNC0wMy0wMycpLCBuZXcgRGF0ZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEF0OiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5jcmVhdGVkQXQuZ2V0VGltZSgpIC0gYi5jcmVhdGVkQXQuZ2V0VGltZSgpKVxuICAgICAgICApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9Cb3R0b20odHJ1ZSwgdHJ1ZSkpO1xuICAgIH1cbiAgICByYW5kb21EYXRlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHN0YXJ0LmdldFRpbWUoKSArIE1hdGgucmFuZG9tKCkgKiAoZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKSkpO1xuICAgIH1cbiAgICBzaHVmZmxlKGFycmF5OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gMTtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleC0tO1xuICAgICAgICAgICAgW2FycmF5W2N1cnJlbnRJbmRleF0sIGFycmF5W3JhbmRvbUluZGV4XV0gPSBbYXJyYXlbcmFuZG9tSW5kZXhdLCBhcnJheVtjdXJyZW50SW5kZXhdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxufVxuIiwiPGRpdlxyXG4gICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbCB0dy1iZy1ncmFkaWVudC10by1yIHR3LWZyb20tWyM1ZDZlN2ZdIHR3LXRvLVsjMzU0YTVmXSBkYXJrOnR3LWZyb20tWyMyNTM0NDNdIGRhcms6dHctdG8tWyMxMDE2MWNdXCJcclxuICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICBbY2xhc3MudHctaC1zY3JlZW5dPVwiIXNpbXBsZVwiXHJcbiAgICBbY2xhc3MudHctanVzdGlmeS1jZW50ZXJdPVwic2ltcGxlXCJcclxuPlxyXG4gICAgQGlmICghc2ltcGxlKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHctYmctYmxhY2svWy4zXSAyeGw6dHctZ3JvdyB0dy1zaHJpbmsgdHctaC1mdWxsXCI+PC9kaXY+XHJcbiAgICB9XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dy1oLWZ1bGwgdHctZmxleCAyeGw6dHctY29udGFpbmVyIG1heC13LVs4MHJlbV0gdHctc2hyaW5rLTAgdHctcmVsYXRpdmVcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ3R3LWdyb3cgMnhsOnR3LWdyb3ctMCc6ICFzaW1wbGUsXHJcbiAgICAgICAgICAgICd0dy13LWZ1bGwnOiBzaW1wbGVcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgICBAaWYgKCFzaW1wbGUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctZ3Jvdy0wIHR3LXNocmluay0wIHR3LXctZnVsbCBtZDp0dy13LTk2IHR3LXAtMCBtZDp0dy1wLTZcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LWZsZXgtY29sIHR3LXctZnVsbCB0dy1oLWZ1bGwgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LWJvcmRlci1sIHR3LWJvcmRlci1sLWdyYXktMzAwIG1kOnR3LXJvdW5kZWQtMnhsIG1kOnR3LWJvcmRlciBtZDp0dy1ib3JkZXItbC1ncmF5LTMwMCBtZDp0dy1ib3JkZXItZ3JheS0zMDAgZGFyazp0dy1ib3JkZXItbC1ncmF5LTYwMCBtZDpkYXJrOnR3LWJvcmRlci1sLWdyYXktNjAwIG1kOmRhcms6dHctYm9yZGVyLWdyYXktNjAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJzdS1iYXJzYS1jaGF0LXRocmVhZHMtbGlzdC10b29sYmFyPjwvYnN1LWJhcnNhLWNoYXQtdGhyZWFkcy1saXN0LXRvb2xiYXI+XHJcbiAgICAgICAgICAgICAgICA8YnN1LWJhcnNhLWNoYXQtdGhyZWFkcy1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHRocmVhZCBvZiB0aHJlYWRzOyB0cmFjayB0aHJlYWQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8YnN1LWJhcnNhLWNoYXQtdGhyZWFkIFt0aHJlYWRdPVwidGhyZWFkXCIgKGNsaWNrKT1cInNlbGVjdFRocmVhZCh0aHJlYWQpXCI+PC9ic3UtYmFyc2EtY2hhdC10aHJlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9ic3UtYmFyc2EtY2hhdC10aHJlYWRzLWxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1hYnNvbHV0ZSB0dy10b3AtMCB0dy1sZWZ0LTAgdHctdy1mdWxsIHR3LWgtZnVsbCB0dy1iZy1bdXJsKCdhc3NldHMvY2hhdC1iZy5wbmcnKV0gdHctYmctZml4ZWQgdHctb3BhY2l0eS0yNVwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHctZ3JvdyB0dy1zaHJpbmsgdHctcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnbWQ6dHctcHktNiBtZDp0dy1wbC02IHR3LWhpZGRlbiBtZDp0dy1mbGV4JzogIXNpbXBsZSxcclxuICAgICAgICAgICAgICAgICd0dy1mbGV4Jzogc2ltcGxlXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFRocmVhZCgpKSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIEBpbkNvbnRlbnRBbmltYXRpb25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctaC1mdWxsIHR3LXctZnVsbCB0dy1mbGV4IHR3LWZsZXgtY29sIHR3LXJlbGF0aXZlIG1kOnR3LWJvcmRlci1ncmF5LTMwMCBtZDpkYXJrOnR3LWJvcmRlci1ncmF5LTYwMCB0dy1vdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdtZDp0dy1ib3JkZXIgbWQ6dHctcm91bmRlZC0yeGwnOiAhc2ltcGxlXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJzdS1iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJzZWxlY3RlZFRocmVhZCgpLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ9mF2K3ZhdivINmF2K3Zhdiv24wnXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXZhdGFyXT1cInNlbGVjdGVkVGhyZWFkKCkuYXZhdGFyXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInNlbGVjdGVkVGhyZWFkKCkuc3RhdHVzXCJcclxuICAgICAgICAgICAgICAgID48L2JzdS1iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhcj5cclxuICAgICAgICAgICAgICAgIDxic3UtYmFyc2EtY2hhdC1jb250ZW50IGlkPVwiY2hhdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYobGF5b3V0OTQkIHwgYXN5bmM7YXMgbGF5b3V0OTQpeyBAaWYgKCfZhNuM2LPYqiDar9mB2Krar9mIJyB8IGNvbnRyb2xVaTogbGF5b3V0OTQ7IGFzIGNvbmZpZ1VpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJzdS1sYXlvdXQtY29udHJvbCBbY29uZmlnXT1cImNvbmZpZ1VpXCI+PC9ic3UtbGF5b3V0LWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgfSB9XHJcbiAgICAgICAgICAgICAgICA8L2JzdS1iYXJzYS1jaGF0LWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3R3LXJlbGF0aXZlJzogIXNpbXBsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJzJ4bDp0dy1yb3VuZGVkLXQteGwgdHctZ3Jvdy0wIHR3LXNocmluay0wJzogc2ltcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChyZXBseWluZ01lc3NhZ2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGluT3V0UmVwbHlpbmdNZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctdy1mdWxsIHR3LXB4LTIgdHctcHktMSB0dy1ib3JkZXItci00IHR3LWJvcmRlci1yLWJ1YmJsZS1taW5lIHR3LWZsZXggdHctZ2FwLTIgdGUtaXRlbXMtY2VudGVyIHR3LWFic29sdXRlIHR3LXotMCB0dy1iZy1kZWZhdWx0IHR3LXJpZ2h0LTAgLXR3LXRvcC0xNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR3LWdyb3ctMCB0dy1zaHJpbmstMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVwbHlpbmdNZXNzYWdlLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZmxleC1jb2wgdHctZ3JvdyB0dy1zaHJpbmsgdHctb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LWZvbnQtYm9sZFwiPnt7IHJlcGx5aW5nTWVzc2FnZSgpLm93bmVyLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LXRydW5jYXRlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseWluZ01lc3NhZ2UoKS50ZXh0ID8/IHJlcGx5aW5nTWVzc2FnZSgpLmZpbGU/Lm5hbWUgPz8gcmVwbHlpbmdNZXNzYWdlKCkuaW1hZ2U/Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctOCB0dy1zaHJpbmstMCB0dy1ncm93LTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR3LXctZnVsbCB0dy1wLTIgdHctZmxleCB0dy1nYXAtMiB0dy1ib3JkZXItdCB0dy1ib3JkZXItdC1ncmF5LTMwMCBkYXJrOnR3LWJvcmRlci10LWdyYXktNjAwIHR3LWJnLWRlZmF1bHQgdHctaXRlbXMtZW5kIHR3LXotMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwidG9wLXN0YXJ0XCIgdGl0bGU9XCJ0b3Atc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiF0dy1yb3VuZGVkLWZ1bGwgdHctc2hyaW5rLTAgdHctZ3Jvdy0wICF0dy1zaXplLTEwICF0dy1taW4taC0xMCAhdHctbWF4LWgtMTAgIXR3LW1pbi13LTEwICF0dy1tYXgtdy0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBdHRhY2htZW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBtaW5XaWR0aD1cIjEwcmVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZmxleC1jb2wgdHctYmctZGVmYXVsdCB0dy13LWZ1bGxcIiBib2R5Q2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1weC00IHR3LXB5LTIgdHctZmxleCB0dy1nYXAtMiB0dy13LWZ1bGwgaG92ZXI6dHctYmctYmFzZS9bLjFdIHR3LXRyYW5zaXRpb24tYWxsIHR3LWN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gY2xhc3M9XCIhdHctdGV4dC1iYXNlICF0dy10ZXh0LTN4bFwiIGdseXBoPVwiY2FtZXJhXCI+PC9mZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhdHctdGV4dC1iYXNlXCI+2KfYsdiz2KfZhCDYudqp2LM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0dy1oaWRkZW5cIiB0eXBlPVwiZmlsZVwiIGlkPVwiaW1nXCIgbmFtZT1cImltZ1wiIGFjY2VwdD1cImltYWdlLypcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctcHgtNCB0dy1weS0yIHR3LWZsZXggdHctZ2FwLTIgdHctdy1mdWxsIGhvdmVyOnR3LWJnLWJhc2UvWy4xXSB0dy10cmFuc2l0aW9uLWFsbCB0dy1jdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGNsYXNzPVwiIXR3LXRleHQtYmFzZSAhdHctdGV4dC0zeGxcIiBnbHlwaD1cImFkZC1kb2N1bWVudFwiPjwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIXR3LXRleHQtYmFzZVwiPtin2LHYs9in2YQg2YHYp9uM2YQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0dy1oaWRkZW5cIiB0eXBlPVwiZmlsZVwiIGlkPVwiZmlsZVwiIG5hbWU9XCJmaWxlXCIgYWNjZXB0PVwiZmlsZS8qXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtZmxleCB0dy1yZWxhdGl2ZSB0dy1ncm93IHR3LXNocmlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghbWVzc2FnZVRleHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctcmlnaHQtNCB0dy10b3AtNCAtdHctdHJhbnNsYXRlLXktMS8yIHR3LXRleHQtZ3JheS01MDAgZGFyazp0dy10ZXh0LWdyYXktNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDZhdiq2YYg2b7bjNin2YUuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNoYXQtdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctaW5saW5lLWJsb2NrIHR3LXctZnVsbCB0dy13LWZ1bGwgdHctd2hpdGVzcGFjZS1wcmUtbGluZSB0dy1yb3VuZGVkLTN4bCB0dy1ib3JkZXIgdHctYm9yZGVyLWdyYXktMzAwIGRhcms6dHctYm9yZGVyLWdyYXktNjAwIHR3LXB4LTQgdHctcHktMiB0dy1tYXgtaC0zMiB0dy1vdmVyZmxvdy1hdXRvIHR3LXJlc2l6ZSB0dy10ZXh0LWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ZWRpdGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VuZE1lc3NhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImNoZWNrSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYXJyb3ctbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiF0dy1yb3VuZGVkLWZ1bGwgdHctc2hyaW5rLTAgdHctZ3Jvdy0wICF0dy1zaXplLTEwICF0dy1taW4taC0xMCAhdHctbWF4LWgtMTAgIXR3LW1pbi13LTEwICF0dy1tYXgtdy0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctdG9wLTEvMiAtdHctdHJhbnNsYXRlLXktMS8yIHR3LWxlZnQtMS8yIC10dy10cmFuc2xhdGUteC0xLzIgdHctZmxleCB0dy1mbGV4LWNvbCB0dy1nYXAtOCB0dy1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9ub3Qtc2VsZWN0ZWQtY2hhdC5wbmdcIiBjbGFzcz1cInR3LXctNjQgdHctb3BhY2l0eS0yNVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0dy10ZXh0LXhsIHR3LWZvbnQtYm9sZCB0dy10ZXh0LWdyYXktNDAwIGRhcms6dHctdGV4dC1ncmF5LTUwMFwiPi0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICDYqNix2KfbjCDYtNix2YjYuSDbjNqpINqG2Kog2LHYpyDYp9mG2KrYrtin2Kgg2qnZhtuM2K8tLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICA8L3NwYW4+LS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoIXNpbXBsZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInR3LWJnLWJsYWNrL1suM10gMnhsOnR3LWdyb3cgdHctc2hyaW5rIHR3LWgtZnVsbFwiPjwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9iYXJzYS1jaGF0L2JhcnNhLWNoYXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtY2hhdC9iYXJzYS1jaGF0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQThCM0UsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQTVCekQ7O1FBNkJhLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFdkIsa0JBQWEsR0FBRywrREFBK0QsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0Ysb0JBQWUsR0FBRyw4REFBOEQsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUYsa0JBQWEsR0FBRyxDQUNaLG1GQUFtRjtZQUNuRiwrRkFBK0Y7WUFDL0YsNEZBQTRGO1lBQzVGLDJGQUEyRjtZQUMzRiwyRkFBMkY7WUFDM0YseUZBQXlGO1lBQ3pGLDBGQUEwRjtZQUMxRiw4RUFBOEUsQ0FDakYsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNkLElBQUks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QUFFOzRCQUM1QixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dDQUNuRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDL0UsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQ0FDakQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7NkJBQ2hGLENBQUM7eUJBQ0wsQ0FBQztxQkFDTDs4QkFHUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lELGtCQUFrQjtzQkFBeEUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsLCBWaWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgam1vbWVudCBmcm9tICdtb21lbnQtamFsYWFsaSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRm9ybUJhc2VDb21wb25lbnQsIEZvcm1QYW5lbFNlcnZpY2UgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLWNoYXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1jaGF0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFyc2EtY2hhdC5jb21wb25lbnQuY3NzJyxcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2luQ29udGVudEFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDUwJSwgNTAlKScgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEwMCUsIDEwMCUpJyB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGUoMTAwJSwgMTAwJSknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDUwJSwgNTAlKScgfSkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignaW5PdXRSZXBseWluZ01lc3NhZ2UnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDUwJSknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSg1MCUpJyB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYUNoYXRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzaW1wbGUgPSB0cnVlO1xuICAgIEBWaWV3Q2hpbGQoJ2NoYXRDb250ZW50RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjaGF0Q29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gICAgcmFuZG9tTmFtZUFyciA9ICfYudmE24wg2K3Ys9mGINit2LPbjNmGINiq2YLbjCDZhtmC24wg2YXYrdmF2K8g2YXZh9iv24wg2KzYp9mI24zYryDZhdit2YXYr9ix2LbYpyDaqdix24zZhSDZh9mI2LTZhtqvINm+24zZhdin2YYnLnNwbGl0KCcgJyk7XG4gICAgcmFuZG9tRmFtaWx5QXJyID0gJ9qp2LHbjNmF24wg2K3Ys9uM2YbbjCDYstin2LHYuduMINiq2YLZiNuMINqp2KfYuNmF24wg2YLZhtio2LHbjCDZhtio2YjbjNin2YYg2KfZgdi02KfYsSDYsdin2K/ZhdmG2K8g2YXYrdmF2K/bjCcuc3BsaXQoJyAnKTtcbiAgICByYW5kb21UZXh0QXJyID0gKFxuICAgICAgICAn2YTZiNix2YUg2KfbjNm+2LPZiNmFINmF2KrZhiDYs9in2K7Yqtqv24wg2KjYpyDYqtmI2YTbjNivINiz2KfYr9qv24wg2YbYp9mF2YHZh9mI2YUg2KfYsiDYtdmG2LnYqiDahtin2b7YjCDZiCDYqNinINin2LPYqtmB2KfYr9mHINin2LIg2LfYsdin2K3Yp9mGJyArXG4gICAgICAgICcg2q/Ysdin2YHbjNqpINin2LPYqtiMINqG2KfZvtqv2LHZh9inINmIINmF2KrZiNmGINio2YTaqdmHINix2YjYstmG2KfZhdmHINmIINmF2KzZhNmHINiv2LEg2LPYqtmI2YYg2Ygg2LPYt9ix2KLZhtqG2YbYp9mGINqp2Ycg2YTYp9iy2YUg2KfYs9iq2Iwg2Ygg2KjYsdin24wg2LTYsdin24zYtycgK1xuICAgICAgICAnINmB2LnZhNuMINiq2qnZhtmI2YTZiNqY24wg2YXZiNix2K8g2YbbjNin2LLYjCDZiCDaqdin2LHYqNix2K/Zh9in24wg2YXYqtmG2YjYuSDYqNinINmH2K/ZgSDYqNmH2KjZiNivINin2KjYstin2LHZh9in24wg2qnYp9ix2KjYsdiv24wg2YXbjCDYqNin2LTYr9iMINqp2KrYp9io2YfYp9uMJyArXG4gICAgICAgICcg2LLbjNin2K/bjCDYr9ixINi02LXYqiDZiCDYs9mHINiv2LHYtdivINqv2LDYtNiq2Ycg2K3Yp9mEINmIINii24zZhtiv2YfYjCDYtNmG2KfYrtiqINmB2LHYp9mI2KfZhiDYrNin2YXYudmHINmIINmF2KrYrti12LXYp9mGINix2Kcg2YXbjCDYt9mE2KjYr9iMINiq2Kcg2KjYpycgK1xuICAgICAgICAnINmG2LHZhSDYp9mB2LLYp9ix2YfYpyDYtNmG2KfYrtiqINio24zYtNiq2LHbjCDYsdinINio2LHYp9uMINi32LHYp9it2KfZhiDYsdin24zYp9mG2Ycg2KfbjCDYudmE24wg2KfZhNiu2LXZiNi1INi32LHYp9it2KfZhiDYrtmE2KfZgtuM2Iwg2Ygg2YHYsdmH2YbaryDZvtuM2LTYsdmIJyArXG4gICAgICAgICcg2K/YsSDYstio2KfZhiDZgdin2LHYs9uMINin24zYrNin2K8g2qnYsdiv2Iwg2K/YsSDYp9uM2YYg2LXZiNix2Kog2YXbjCDYqtmI2KfZhiDYp9mF24zYryDYr9in2LTYqiDaqdmHINiq2YXYp9mFINmIINiv2LTZiNin2LHbjCDZhdmI2KzZiNivINiv2LEg2KfYsdin2KbZhycgK1xuICAgICAgICAnINix2KfZh9qp2KfYsdmH2KfYjCDZiCDYtNix2KfbjNi3INiz2K7YqiDYqtin24zZviDYqNmHINm+2KfbjNin2YYg2LHYs9ivINmIINiy2YXYp9mGINmF2YjYsdivINmG24zYp9iyINi02KfZhdmEINit2LHZiNmB2obbjNmG24wg2K/Ys9iq2KfZiNix2K/Zh9in24wg2KfYtdmE24zYjCcgK1xuICAgICAgICAnINmIINis2YjYp9io2q/ZiNuMINiz2YjYp9mE2KfYqiDZvtuM2YjYs9iq2Ycg2KfZh9mEINiv2YbbjNin24wg2YXZiNis2YjYryDYt9ix2KfYrduMINin2LPYp9iz2Kcg2YXZiNix2K8g2KfYs9iq2YHYp9iv2Ycg2YLYsdin2LEg2q/bjNix2K8uJ1xuICAgICkuc3BsaXQoJyAnKTtcbiAgICB0aHJlYWRzID0gQXJyYXkoMjApXG4gICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgIC5tYXAoKHQpID0+ICh7XG4gICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmRvbU5hbWVBcnJbTWF0aC5mbG9vcih0aGlzLnJhbmRvbU5hbWVBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSldICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIHRoaXMucmFuZG9tRmFtaWx5QXJyW01hdGguZmxvb3IodGhpcy5yYW5kb21GYW1pbHlBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSldLFxuICAgICAgICAgICAgYXZhdGFyOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzEwMD93b3JrQXJvdW5kPScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApLFxuICAgICAgICAgICAgc3RhdHVzOiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0KSxcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdGhpcy5yYW5kb21EYXRlKG5ldyBEYXRlKCcyMDI0LTAzLTAzJyksIG5ldyBEYXRlKCkpLFxuICAgICAgICAgICAgdW5yZWFkQ291bnQ6IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSkgPyAxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApIDogMCxcbiAgICAgICAgICAgIHBpbm5lZDogISFNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkpLFxuICAgICAgICAgICAgbXV0ZWQ6ICEhTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKSxcbiAgICAgICAgICAgIGxhc3RNZXNzYWdlOiB7XG4gICAgICAgICAgICAgICAgaWQ6IE1hdGgucmFuZG9tKCkgKiAxMDAwLFxuICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAxMjM0LFxuICAgICAgICAgICAgICAgICAgICBhdmF0YXI6ICdodHRwczovL3BpY3N1bS5waG90b3MvMTAwP3dvcmtBcm91bmQ9JyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICfZhdmH2K/bjCDYstin2LHYuduMJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5zaHVmZmxlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmRvbVRleHRBcnIuc2xpY2UoMCwgMSArIE1hdGguZmxvb3IodGhpcy5yYW5kb21UZXh0QXJyLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpKVxuICAgICAgICAgICAgICAgICkuam9pbignICcpLFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICAudG9UaW1lU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcgJylbMF1cbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHMpID0+IHMucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJzonKSxcbiAgICAgICAgICAgICAgICBkZWxpdmVyZWRBdDogbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICAudG9UaW1lU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcgJylbMF1cbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHMpID0+IHMucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJzonKSxcbiAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgLnRvVGltZVN0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnICcpWzBdXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnOicpXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChzKSA9PiBzLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCc6JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIG1vbWVudCA9IGptb21lbnQ7XG4gICAgc2VsZWN0ZWRUaHJlYWQ6IFdyaXRhYmxlU2lnbmFsPGFueSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuICAgIG1lc3NhZ2VzOiBXcml0YWJsZVNpZ25hbDxhbnlbXSB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuICAgIHJlcGx5aW5nTWVzc2FnZTogV3JpdGFibGVTaWduYWw8YW55IHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gICAgbWVzc2FnZVRleHQgPSAnJztcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjaGF0LW1vZGUnKTtcbiAgICAgICAgdGhpcy5zZWxlY3RUaHJlYWQodGhpcy50aHJlYWRzWzBdKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY2hhdC1tb2RlJyk7XG4gICAgfVxuICAgIHNjcm9sbFRvQm90dG9tKGZvcmNlID0gZmFsc2UsIGluc3RhbnQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNoYXRDb250ZW50RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGZvcmNlIHx8IChjb250YWluZXIgJiYgY29udGFpbmVyLnNjcm9sbFRvcE1heCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPCAzMDApKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjb250YWluZXIuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogaW5zdGFudCA/ICdpbnN0YW50JyA6ICdzbW9vdGgnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgY2hlY2tJbnB1dChldmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0O1xuICAgIH1cbiAgICBzZW5kTWVzc2FnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVRleHQ/LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNldChbXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMubWVzc2FnZXMoKSBhcyBhbnlbXSksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogMTIzNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICfZhdmH2K/bjCDYstin2LHYuduMJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLm1lc3NhZ2VUZXh0LFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVRleHQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IGlucHV0TWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGF0LXRleHRhcmVhJyk7XG4gICAgICAgICAgICBpZiAoaW5wdXRNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgaW5wdXRNZXNzYWdlLmlubmVyVGV4dCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSh0cnVlKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNldChbXG4gICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLm1lc3NhZ2VzKCkgYXMgYW55W10pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogTWF0aC5yYW5kb20oKSAqIDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA0MzIxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkVGhyZWFkKCkudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnNodWZmbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5kb21UZXh0QXJyLnNsaWNlKDAsIDEgKyBNYXRoLmZsb29yKHRoaXMucmFuZG9tVGV4dEFyci5sZW5ndGggKiBNYXRoLnJhbmRvbSgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbignICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcmVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkQXQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20odHJ1ZSk7XG4gICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRBdHRhY2htZW50KCk6IHZvaWQge31cbiAgICBzZWxlY3RUaHJlYWQodGhyZWFkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRocmVhZC5zZXQodGhyZWFkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5zZXQoXG4gICAgICAgICAgICBBcnJheSg0MClcbiAgICAgICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgICAgIC5tYXAoKHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3duZXJVc2VyID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZVR5cGUgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNUZXh0ID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nT3JpZ2luYWxXaWR0aCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwMCkgKyAyMDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ09yaWdpbmFsSGVpZ2h0ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjAwKSArIDIwMDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBNYXRoLnJhbmRvbSgpICogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG93bmVyVXNlciA/IDEyMzQgOiA0MzIxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhcjogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8xMDA/d29ya0Fyb3VuZD0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvd25lclVzZXIgPyAn2YXZh9iv24wg2LLYp9ix2LnbjCcgOiB0aHJlYWQudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlVHlwZSA+IDAuNSAmJiBoYXNUZXh0KSB8fCBtZXNzYWdlVHlwZSA8PSAwLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNodWZmbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFuZG9tVGV4dEFyci5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZVR5cGUgPiAwLjUgPyAzMCA6IHRoaXMucmFuZG9tVGV4dEFyci5sZW5ndGgpICogTWF0aC5yYW5kb20oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbignICcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA+IDAuODVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICfbjNqpINi52K/YryDZgdin24zZhCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dDogWydwbmcnLCAnanBnJywgJ3BkZicsICdkb2NzJywgJ2NzdiddW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn2KjYp9uM2KonLCAn2qnbjNmE2YjYqNin24zYqicsICfZhdqv2KfYqNin24zYqiddW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDMpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA8PSAwLjg1ICYmIG1lc3NhZ2VUeXBlID4gMC41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAn24zaqSDYudiv2K8g2LnaqdizJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zLyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjAwMCl9LyR7TWF0aC5mbG9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucmFuZG9tKCkgKiAyMDAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9P3dvcmtBcm91bmQ9JHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsV2lkdGg6IGltZ09yaWdpbmFsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSGVpZ2h0OiBpbWdPcmlnaW5hbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IHRoaXMucmFuZG9tRGF0ZShuZXcgRGF0ZSgnMjAyNC0wMy0wMycpLCBuZXcgRGF0ZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEF0OiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5jcmVhdGVkQXQuZ2V0VGltZSgpIC0gYi5jcmVhdGVkQXQuZ2V0VGltZSgpKVxuICAgICAgICApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9Cb3R0b20odHJ1ZSwgdHJ1ZSkpO1xuICAgIH1cbiAgICByYW5kb21EYXRlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHN0YXJ0LmdldFRpbWUoKSArIE1hdGgucmFuZG9tKCkgKiAoZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKSkpO1xuICAgIH1cbiAgICBzaHVmZmxlKGFycmF5OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gMTtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleC0tO1xuICAgICAgICAgICAgW2FycmF5W2N1cnJlbnRJbmRleF0sIGFycmF5W3JhbmRvbUluZGV4XV0gPSBbYXJyYXlbcmFuZG9tSW5kZXhdLCBhcnJheVtjdXJyZW50SW5kZXhdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxufVxuIiwiPGRpdlxyXG4gICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbCB0dy1iZy1ncmFkaWVudC10by1yIHR3LWZyb20tWyM1ZDZlN2ZdIHR3LXRvLVsjMzU0YTVmXSBkYXJrOnR3LWZyb20tWyMyNTM0NDNdIGRhcms6dHctdG8tWyMxMDE2MWNdXCJcclxuICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICBbY2xhc3MudHctaC1zY3JlZW5dPVwiIXNpbXBsZVwiXHJcbiAgICBbY2xhc3MudHctanVzdGlmeS1jZW50ZXJdPVwic2ltcGxlXCJcclxuPlxyXG4gICAgQGlmICghc2ltcGxlKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHctYmctYmxhY2svWy4zXSAyeGw6dHctZ3JvdyB0dy1zaHJpbmsgdHctaC1mdWxsXCI+PC9kaXY+XHJcbiAgICB9XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dy1oLWZ1bGwgdHctZmxleCAyeGw6dHctY29udGFpbmVyIG1heC13LVs4MHJlbV0gdHctc2hyaW5rLTAgdHctcmVsYXRpdmVcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ3R3LWdyb3cgMnhsOnR3LWdyb3ctMCc6ICFzaW1wbGUsXHJcbiAgICAgICAgICAgICd0dy13LWZ1bGwnOiBzaW1wbGVcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgICBAaWYgKCFzaW1wbGUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctZ3Jvdy0wIHR3LXNocmluay0wIHR3LXctZnVsbCBtZDp0dy13LTk2IHR3LXAtMCBtZDp0dy1wLTZcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LWZsZXgtY29sIHR3LXctZnVsbCB0dy1oLWZ1bGwgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LWJvcmRlci1sIHR3LWJvcmRlci1sLWdyYXktMzAwIG1kOnR3LXJvdW5kZWQtMnhsIG1kOnR3LWJvcmRlciBtZDp0dy1ib3JkZXItbC1ncmF5LTMwMCBtZDp0dy1ib3JkZXItZ3JheS0zMDAgZGFyazp0dy1ib3JkZXItbC1ncmF5LTYwMCBtZDpkYXJrOnR3LWJvcmRlci1sLWdyYXktNjAwIG1kOmRhcms6dHctYm9yZGVyLWdyYXktNjAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJzdS1iYXJzYS1jaGF0LXRocmVhZHMtbGlzdC10b29sYmFyPjwvYnN1LWJhcnNhLWNoYXQtdGhyZWFkcy1saXN0LXRvb2xiYXI+XHJcbiAgICAgICAgICAgICAgICA8YnN1LWJhcnNhLWNoYXQtdGhyZWFkcy1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHRocmVhZCBvZiB0aHJlYWRzOyB0cmFjayB0aHJlYWQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8YnN1LWJhcnNhLWNoYXQtdGhyZWFkIFt0aHJlYWRdPVwidGhyZWFkXCIgKGNsaWNrKT1cInNlbGVjdFRocmVhZCh0aHJlYWQpXCI+PC9ic3UtYmFyc2EtY2hhdC10aHJlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9ic3UtYmFyc2EtY2hhdC10aHJlYWRzLWxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1hYnNvbHV0ZSB0dy10b3AtMCB0dy1sZWZ0LTAgdHctdy1mdWxsIHR3LWgtZnVsbCB0dy1iZy1bdXJsKCdhc3NldHMvY2hhdC1iZy5wbmcnKV0gdHctYmctZml4ZWQgdHctb3BhY2l0eS0yNVwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHctZ3JvdyB0dy1zaHJpbmsgdHctcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnbWQ6dHctcHktNiBtZDp0dy1wbC02IHR3LWhpZGRlbiBtZDp0dy1mbGV4JzogIXNpbXBsZSxcclxuICAgICAgICAgICAgICAgICd0dy1mbGV4Jzogc2ltcGxlXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFRocmVhZCgpKSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIEBpbkNvbnRlbnRBbmltYXRpb25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctaC1mdWxsIHR3LXctZnVsbCB0dy1mbGV4IHR3LWZsZXgtY29sIHR3LXJlbGF0aXZlIG1kOnR3LWJvcmRlci1ncmF5LTMwMCBtZDpkYXJrOnR3LWJvcmRlci1ncmF5LTYwMCB0dy1vdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdtZDp0dy1ib3JkZXIgbWQ6dHctcm91bmRlZC0yeGwnOiAhc2ltcGxlXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJzdS1iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJzZWxlY3RlZFRocmVhZCgpLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ9mF2K3ZhdivINmF2K3Zhdiv24wnXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXZhdGFyXT1cInNlbGVjdGVkVGhyZWFkKCkuYXZhdGFyXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInNlbGVjdGVkVGhyZWFkKCkuc3RhdHVzXCJcclxuICAgICAgICAgICAgICAgID48L2JzdS1iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhcj5cclxuICAgICAgICAgICAgICAgIDxic3UtYmFyc2EtY2hhdC1jb250ZW50IGlkPVwiY2hhdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYobGF5b3V0OTQkIHwgYXN5bmM7YXMgbGF5b3V0OTQpeyBAaWYgKCfZhNuM2LPYqiDar9mB2Krar9mIJyB8IGNvbnRyb2xVaTogbGF5b3V0OTQ7IGFzIGNvbmZpZ1VpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJzdS1sYXlvdXQtY29udHJvbCBbY29uZmlnXT1cImNvbmZpZ1VpXCI+PC9ic3UtbGF5b3V0LWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgfSB9XHJcbiAgICAgICAgICAgICAgICA8L2JzdS1iYXJzYS1jaGF0LWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3R3LXJlbGF0aXZlJzogIXNpbXBsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJzJ4bDp0dy1yb3VuZGVkLXQteGwgdHctZ3Jvdy0wIHR3LXNocmluay0wJzogc2ltcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChyZXBseWluZ01lc3NhZ2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGluT3V0UmVwbHlpbmdNZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctdy1mdWxsIHR3LXB4LTIgdHctcHktMSB0dy1ib3JkZXItci00IHR3LWJvcmRlci1yLWJ1YmJsZS1taW5lIHR3LWZsZXggdHctZ2FwLTIgdGUtaXRlbXMtY2VudGVyIHR3LWFic29sdXRlIHR3LXotMCB0dy1iZy1kZWZhdWx0IHR3LXJpZ2h0LTAgLXR3LXRvcC0xNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR3LWdyb3ctMCB0dy1zaHJpbmstMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVwbHlpbmdNZXNzYWdlLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZmxleC1jb2wgdHctZ3JvdyB0dy1zaHJpbmsgdHctb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LWZvbnQtYm9sZFwiPnt7IHJlcGx5aW5nTWVzc2FnZSgpLm93bmVyLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LXRydW5jYXRlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseWluZ01lc3NhZ2UoKS50ZXh0ID8/IHJlcGx5aW5nTWVzc2FnZSgpLmZpbGU/Lm5hbWUgPz8gcmVwbHlpbmdNZXNzYWdlKCkuaW1hZ2U/Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctOCB0dy1zaHJpbmstMCB0dy1ncm93LTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR3LXctZnVsbCB0dy1wLTIgdHctZmxleCB0dy1nYXAtMiB0dy1ib3JkZXItdCB0dy1ib3JkZXItdC1ncmF5LTMwMCBkYXJrOnR3LWJvcmRlci10LWdyYXktNjAwIHR3LWJnLWRlZmF1bHQgdHctaXRlbXMtZW5kIHR3LXotMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwidG9wLXN0YXJ0XCIgdGl0bGU9XCJ0b3Atc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiF0dy1yb3VuZGVkLWZ1bGwgdHctc2hyaW5rLTAgdHctZ3Jvdy0wICF0dy1zaXplLTEwICF0dy1taW4taC0xMCAhdHctbWF4LWgtMTAgIXR3LW1pbi13LTEwICF0dy1tYXgtdy0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBdHRhY2htZW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBtaW5XaWR0aD1cIjEwcmVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZmxleC1jb2wgdHctYmctZGVmYXVsdCB0dy13LWZ1bGxcIiBib2R5Q2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1weC00IHR3LXB5LTIgdHctZmxleCB0dy1nYXAtMiB0dy13LWZ1bGwgaG92ZXI6dHctYmctYmFzZS9bLjFdIHR3LXRyYW5zaXRpb24tYWxsIHR3LWN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gY2xhc3M9XCIhdHctdGV4dC1iYXNlICF0dy10ZXh0LTN4bFwiIGdseXBoPVwiY2FtZXJhXCI+PC9mZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhdHctdGV4dC1iYXNlXCI+2KfYsdiz2KfZhCDYudqp2LM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0dy1oaWRkZW5cIiB0eXBlPVwiZmlsZVwiIGlkPVwiaW1nXCIgbmFtZT1cImltZ1wiIGFjY2VwdD1cImltYWdlLypcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctcHgtNCB0dy1weS0yIHR3LWZsZXggdHctZ2FwLTIgdHctdy1mdWxsIGhvdmVyOnR3LWJnLWJhc2UvWy4xXSB0dy10cmFuc2l0aW9uLWFsbCB0dy1jdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGNsYXNzPVwiIXR3LXRleHQtYmFzZSAhdHctdGV4dC0zeGxcIiBnbHlwaD1cImFkZC1kb2N1bWVudFwiPjwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIXR3LXRleHQtYmFzZVwiPtin2LHYs9in2YQg2YHYp9uM2YQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0dy1oaWRkZW5cIiB0eXBlPVwiZmlsZVwiIGlkPVwiZmlsZVwiIG5hbWU9XCJmaWxlXCIgYWNjZXB0PVwiZmlsZS8qXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtZmxleCB0dy1yZWxhdGl2ZSB0dy1ncm93IHR3LXNocmlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghbWVzc2FnZVRleHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctcmlnaHQtNCB0dy10b3AtNCAtdHctdHJhbnNsYXRlLXktMS8yIHR3LXRleHQtZ3JheS01MDAgZGFyazp0dy10ZXh0LWdyYXktNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDZhdiq2YYg2b7bjNin2YUuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNoYXQtdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctaW5saW5lLWJsb2NrIHR3LXctZnVsbCB0dy13LWZ1bGwgdHctd2hpdGVzcGFjZS1wcmUtbGluZSB0dy1yb3VuZGVkLTN4bCB0dy1ib3JkZXIgdHctYm9yZGVyLWdyYXktMzAwIGRhcms6dHctYm9yZGVyLWdyYXktNjAwIHR3LXB4LTQgdHctcHktMiB0dy1tYXgtaC0zMiB0dy1vdmVyZmxvdy1hdXRvIHR3LXJlc2l6ZSB0dy10ZXh0LWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ZWRpdGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VuZE1lc3NhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImNoZWNrSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYXJyb3ctbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiF0dy1yb3VuZGVkLWZ1bGwgdHctc2hyaW5rLTAgdHctZ3Jvdy0wICF0dy1zaXplLTEwICF0dy1taW4taC0xMCAhdHctbWF4LWgtMTAgIXR3LW1pbi13LTEwICF0dy1tYXgtdy0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctdG9wLTEvMiAtdHctdHJhbnNsYXRlLXktMS8yIHR3LWxlZnQtMS8yIC10dy10cmFuc2xhdGUteC0xLzIgdHctZmxleCB0dy1mbGV4LWNvbCB0dy1nYXAtOCB0dy1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9ub3Qtc2VsZWN0ZWQtY2hhdC5wbmdcIiBjbGFzcz1cInR3LXctNjQgdHctb3BhY2l0eS0yNVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0dy10ZXh0LXhsIHR3LWZvbnQtYm9sZCB0dy10ZXh0LWdyYXktNDAwIGRhcms6dHctdGV4dC1ncmF5LTUwMFwiPi0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICDYqNix2KfbjCDYtNix2YjYuSDbjNqpINqG2Kog2LHYpyDYp9mG2KrYrtin2Kgg2qnZhtuM2K8tLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICA8L3NwYW4+LS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoIXNpbXBsZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInR3LWJnLWJsYWNrL1suM10gMnhsOnR3LWdyb3cgdHctc2hyaW5rIHR3LWgtZnVsbFwiPjwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
|
|
@@ -25,7 +25,7 @@ export class BarsaQuestionAnswerFormComponent extends FormPropsBaseComponent {
|
|
|
25
25
|
vote && vote?.FieldUi.fireEvent('click', vote.FieldUi);
|
|
26
26
|
}
|
|
27
27
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaQuestionAnswerFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaQuestionAnswerFormComponent, selector: "bsu-barsa-question-answer-form", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tw-absolute tw-z-0 tw-bg-white tw-w-screen tw-top-0 tw-left-0\"></div>\n<div class=\"tw-w-full tw-py-8 tw-relative\">\n <div class=\"tw-w-full tw-max-w-[80rem] tw-mx-auto tw-grid tw-grid-cols-4 tw-gap-12\">\n <div class=\"tw-col-span-3 tw-flex tw-flex-col tw-gap-8\">\n <div class=\"tw-flex tw-gap-8 tw-pb-8\">\n <div class=\"tw-grow-0 tw-shrink-0 tw-flex tw-flex-col tw-items-center tw-gap-6\">\n <img src=\"https://picsum.photos/64/64\" class=\"tw-size-12 tw-rounded-full\" />\n <bsu-barsa-question-answer-vote-section\n [vote]=\"mo.Post.CurrentUserVote.Vote\"\n [voteUps]=\"mo.Post.VoteUps\"\n [voteDowns]=\"mo.Post.VoteDowns\"\n (voteChange)=\"onVoteChange($event)\"\n ></bsu-barsa-question-answer-vote-section>\n </div>\n <div class=\"tw-grow tw-shrink\">\n <bsu-barsa-question-answer-creator-time-section\n [post]=\"mo.Post\"\n ></bsu-barsa-question-answer-creator-time-section>\n <p class=\"tw-text-2xl tw-mt-4\">\n {{ mo.Title }}\n </p>\n <bsu-barsa-question-answer-content-actions-section\n [mo]=\"mo\"\n [buttons]=\"toolbarItems\"\n ></bsu-barsa-question-answer-content-actions-section>\n <bsu-barsa-question-answer-comments-section\n [post]=\"mo.Post\"\n ></bsu-barsa-question-answer-comments-section>\n </div>\n </div>\n <p class=\"tw-z-10 tw-text-2xl tw-pb-4 tw-border-b tw-border-gray-200 tw-relative\">\n {{ mo.Answers.MoDataList.length }}\n \u067E\u0627\u0633\u062E\n </p>\n <div class=\"tw-flex tw-flex-col tw-gap-8 tw-z-10 tw-relative\">\n @if (mo.Answers.MoDataList.length) { @if ('\u067E\u0627\u0633\u062E \u0647\u0627' | controlUi: layout94; as answers) {\n <bsu-layout-control [config]=\"answers\"></bsu-layout-control>\n } }\n </div>\n </div>\n <div class=\"tw-col-span-1\">\n @if ('\u0633\u0648\u0627\u0644\u0627\u062A \u0645\u0631\u062A\u0628\u0637' | controlUi: layout94; as relevantQuestions) {\n <bsu-layout-control [config]=\"relevantQuestions\"></bsu-layout-control>\n }\n </div>\n </div>\n <div class=\"tw-w-full tw-max-w-[80rem] tw-mx-auto tw-grid tw-grid-cols-4 tw-mt-4\">\n <div\n class=\"tw-col-span-4 tw-flex tw-flex-col tw-gap-4 tw-p-4 border tw-border-gray-200 tw-rounded-md tw-bg-white\"\n >\n <span class=\"tw-text-xl\">\u0627\u0631\u0633\u0627\u0644 \u067E\u0627\u0633\u062E</span>\n @if ('\u067E\u0627\u0633\u062E \u062C\u062F\u06CC\u062F' | controlUi: layout94; as newAnswerText) {\n <bsu-layout-control [config]=\"newAnswerText\"></bsu-layout-control>\n }\n <div class=\"tw-flex tw-justify-end\">\n @if ('\u0627\u0631\u0633\u0627\u0644 \u067E\u0627\u0633\u062E \u062C\u062F\u06CC\u062F' | controlUi: layout94; as newAnswerSubmit) {\n <bsu-layout-control\n class=\"tw-w-fit tw-min-w-fit tw-max-w-fit\"\n [config]=\"newAnswerSubmit\"\n ></bsu-layout-control>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--sapBackgroundColor: #fdfdfd}\n"], dependencies: [{ kind: "component", type: i1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i2.BarsaQuestionAnswerContentActionsSectionComponent, selector: "bsu-barsa-question-answer-content-actions-section", inputs: ["mo", "buttons"], outputs: ["btnClick"] }, { kind: "component", type: i3.BarsaQuestionAnswerVoteSectionComponent, selector: "bsu-barsa-question-answer-vote-section", inputs: ["vote", "voteDowns", "voteUps"], outputs: ["voteChange"] }, { kind: "component", type: i4.BarsaQuestionAnswerCreatorTimeSectionComponent, selector: "bsu-barsa-question-answer-creator-time-section", inputs: ["post"] }, { kind: "component", type: i5.BarsaQuestionAnswerCommentsSectionComponent, selector: "bsu-barsa-question-answer-comments-section", inputs: ["post"] }, { kind: "pipe", type: i6.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaQuestionAnswerFormComponent, selector: "bsu-barsa-question-answer-form", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tw-absolute tw-z-0 tw-bg-white tw-w-screen tw-top-0 tw-left-0\"></div>\n<div class=\"tw-w-full tw-py-8 tw-relative\">\n <div class=\"tw-w-full tw-max-w-[80rem] tw-mx-auto tw-grid tw-grid-cols-4 tw-gap-12\">\n <div class=\"tw-col-span-3 tw-flex tw-flex-col tw-gap-8\">\n <div class=\"tw-flex tw-gap-8 tw-pb-8\">\n <div class=\"tw-grow-0 tw-shrink-0 tw-flex tw-flex-col tw-items-center tw-gap-6\">\n <img src=\"https://picsum.photos/64/64\" class=\"tw-size-12 tw-rounded-full\" />\n <bsu-barsa-question-answer-vote-section\n [vote]=\"mo.Post.CurrentUserVote.Vote\"\n [voteUps]=\"mo.Post.VoteUps\"\n [voteDowns]=\"mo.Post.VoteDowns\"\n (voteChange)=\"onVoteChange($event)\"\n ></bsu-barsa-question-answer-vote-section>\n </div>\n <div class=\"tw-grow tw-shrink\">\n <bsu-barsa-question-answer-creator-time-section\n [post]=\"mo.Post\"\n ></bsu-barsa-question-answer-creator-time-section>\n <p class=\"tw-text-2xl tw-mt-4\">\n {{ mo.Title }}\n </p>\n <bsu-barsa-question-answer-content-actions-section\n [mo]=\"mo\"\n [buttons]=\"toolbarItems\"\n ></bsu-barsa-question-answer-content-actions-section>\n <bsu-barsa-question-answer-comments-section\n [post]=\"mo.Post\"\n ></bsu-barsa-question-answer-comments-section>\n </div>\n </div>\n <p class=\"tw-z-10 tw-text-2xl tw-pb-4 tw-border-b tw-border-gray-200 tw-relative\">\n {{ mo.Answers.MoDataList.length }}\n \u067E\u0627\u0633\u062E\n </p>\n <div class=\"tw-flex tw-flex-col tw-gap-8 tw-z-10 tw-relative\">\n @if (mo.Answers.MoDataList.length) { @if ('\u067E\u0627\u0633\u062E \u0647\u0627' | controlUi: layout94; as answers) {\n <bsu-layout-control [config]=\"answers\"></bsu-layout-control>\n } }\n </div>\n </div>\n <div class=\"tw-col-span-1\">\n @if ('\u0633\u0648\u0627\u0644\u0627\u062A \u0645\u0631\u062A\u0628\u0637' | controlUi: layout94; as relevantQuestions) {\n <bsu-layout-control [config]=\"relevantQuestions\"></bsu-layout-control>\n }\n </div>\n </div>\n <div class=\"tw-w-full tw-max-w-[80rem] tw-mx-auto tw-grid tw-grid-cols-4 tw-mt-4\">\n <div\n class=\"tw-col-span-4 tw-flex tw-flex-col tw-gap-4 tw-p-4 border tw-border-gray-200 tw-rounded-md tw-bg-white\"\n >\n <span class=\"tw-text-xl\">\u0627\u0631\u0633\u0627\u0644 \u067E\u0627\u0633\u062E</span>\n @if ('\u067E\u0627\u0633\u062E \u062C\u062F\u06CC\u062F' | controlUi: layout94; as newAnswerText) {\n <bsu-layout-control [config]=\"newAnswerText\"></bsu-layout-control>\n }\n <div class=\"tw-flex tw-justify-end\">\n @if ('\u0627\u0631\u0633\u0627\u0644 \u067E\u0627\u0633\u062E \u062C\u062F\u06CC\u062F' | controlUi: layout94; as newAnswerSubmit) {\n <bsu-layout-control\n class=\"tw-w-fit tw-min-w-fit tw-max-w-fit\"\n [config]=\"newAnswerSubmit\"\n ></bsu-layout-control>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--sapBackgroundColor: #fdfdfd}\n"], dependencies: [{ kind: "component", type: i1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i2.BarsaQuestionAnswerContentActionsSectionComponent, selector: "bsu-barsa-question-answer-content-actions-section", inputs: ["mo", "buttons"], outputs: ["btnClick"] }, { kind: "component", type: i3.BarsaQuestionAnswerVoteSectionComponent, selector: "bsu-barsa-question-answer-vote-section", inputs: ["vote", "voteDowns", "voteUps"], outputs: ["voteChange"] }, { kind: "component", type: i4.BarsaQuestionAnswerCreatorTimeSectionComponent, selector: "bsu-barsa-question-answer-creator-time-section", inputs: ["post"] }, { kind: "component", type: i5.BarsaQuestionAnswerCommentsSectionComponent, selector: "bsu-barsa-question-answer-comments-section", inputs: ["post"] }, { kind: "pipe", type: i6.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29
29
|
}
|
|
30
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaQuestionAnswerFormComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
@@ -16,7 +16,7 @@ export class BarsaTableColumnComponent extends BaseColumnPropsComponent {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: { disableEllapsis: "disableEllapsis" }, providers: [FormPanelService, ColumnService], usesInheritance: true, ngImport: i0, template: "<div\n [class.editMode]=\"editMode\"\n #divDom\n style=\"display: flex; width: 100%\"\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\n>\n @if (customComponent) {\n <bnrc-dynamic-item-component\n [component]=\"customComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"customComponent.Settings\"\n [column]=\"column\"\n [value]=\"value\"\n [icon]=\"icon\"\n [editMode]=\"editMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [containerDom]=\"divDom\"\n ></bnrc-dynamic-item-component>\n } @else {\n <bsu-column-renderer\n [mo]=\"mo\"\n [containerDom]=\"divDom\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis\"\n [value]=\"value | bbbTranslate\"\n [icon]=\"icon\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"save.emit($event)\"\n (keyup.esc)=\"cancel.emit($event)\"\n (keydown.Tab)=\"tab.emit($event)\"\n ></bsu-column-renderer>\n } @if (editMode) { @for (fieldCaption of column.$MergedFieldsToColumn; track fieldCaption) { @if (fieldCaption |\n controlUi: layout94; as layoutConfig) {\n <bsu-layout-control\n [caption]=\"fieldCaption\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n (keyup.control.enter)=\"save.emit($event)\"\n (keyup.esc)=\"cancel.emit($event)\"\n (keydown.Tab)=\"tab.emit($event)\"\n ></bsu-layout-control>\n } } }\n</div>\n", styles: [":host{display:contents;width:100%}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .editMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .editMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i3.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: { disableEllapsis: "disableEllapsis" }, providers: [FormPanelService, ColumnService], usesInheritance: true, ngImport: i0, template: "<div\n [class.editMode]=\"editMode\"\n #divDom\n style=\"display: flex; width: 100%\"\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\n>\n @if (customComponent) {\n <bnrc-dynamic-item-component\n [component]=\"customComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"customComponent.Settings\"\n [column]=\"column\"\n [value]=\"value\"\n [icon]=\"icon\"\n [editMode]=\"editMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [containerDom]=\"divDom\"\n ></bnrc-dynamic-item-component>\n } @else {\n <bsu-column-renderer\n [mo]=\"mo\"\n [containerDom]=\"divDom\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis\"\n [value]=\"value | bbbTranslate\"\n [icon]=\"icon\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"save.emit($event)\"\n (keyup.esc)=\"cancel.emit($event)\"\n (keydown.Tab)=\"tab.emit($event)\"\n ></bsu-column-renderer>\n } @if (editMode) { @for (fieldCaption of column.$MergedFieldsToColumn; track fieldCaption) { @if (fieldCaption |\n controlUi: layout94; as layoutConfig) {\n <bsu-layout-control\n [caption]=\"fieldCaption\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n (keyup.control.enter)=\"save.emit($event)\"\n (keyup.esc)=\"cancel.emit($event)\"\n (keydown.Tab)=\"tab.emit($event)\"\n ></bsu-layout-control>\n } } }\n</div>\n", styles: [":host{display:contents;width:100%}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .editMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .editMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i3.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableColumnComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
@@ -32,9 +32,9 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
|
32
32
|
}
|
|
33
33
|
ngOnInit() {
|
|
34
34
|
super.ngOnInit();
|
|
35
|
-
if (!this.node.icon.startsWith('http')) {
|
|
36
|
-
|
|
37
|
-
}
|
|
35
|
+
// if (!this.node.icon.startsWith('http')) {
|
|
36
|
+
// this.hideIcon = true;
|
|
37
|
+
// }
|
|
38
38
|
}
|
|
39
39
|
onListItemClick(liEl, e) {
|
|
40
40
|
if (e.target === liEl?.elementRef?.nativeElement) {
|
|
@@ -82,19 +82,17 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
|
82
82
|
this.dragMoved.emit($event);
|
|
83
83
|
}
|
|
84
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTreeItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList",
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-up' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if(icon && !hideIcon){\n <i [style.color]=\"color\" class=\"icon-item\" fd-list-icon [glyph]=\"icon\"></i>\n } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } }\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n @if (!hideIcon) {\n <img\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n }\n <span [style.color]=\"color\">{{ text }}</span>\n @if (children) {\n <span>{{ ' ( ' + children.length + ' )' }}</span>\n }\n </div>\n </div>\n @if (contextMenuItems && contextMenuItems.length > 0) {\n <i\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n } @if (access?.Add !== false && !inDialog) {\n <bsu-htree-create-new\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n }\n </div>\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\n }\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: i3.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role"] }, { kind: "component", type: i8.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i9.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "directive", type: i10.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
86
86
|
}
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTreeItemComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
|
-
args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (
|
|
89
|
+
args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-up' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if(icon && !hideIcon){\n <i [style.color]=\"color\" class=\"icon-item\" fd-list-icon [glyph]=\"icon\"></i>\n } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } }\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n @if (!hideIcon) {\n <img\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n }\n <span [style.color]=\"color\">{{ text }}</span>\n @if (children) {\n <span>{{ ' ( ' + children.length + ' )' }}</span>\n }\n </div>\n </div>\n @if (contextMenuItems && contextMenuItems.length > 0) {\n <i\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n } @if (access?.Add !== false && !inDialog) {\n <bsu-htree-create-new\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n }\n </div>\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\n }\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1.75rem}\n"] }]
|
|
90
90
|
}], propDecorators: { node: [{
|
|
91
91
|
type: Input
|
|
92
92
|
}], selectedNode: [{
|
|
93
93
|
type: Input
|
|
94
94
|
}], relationList: [{
|
|
95
95
|
type: Input
|
|
96
|
-
}], hasDragDrop: [{
|
|
97
|
-
type: Input
|
|
98
96
|
}], hideOpenIcon: [{
|
|
99
97
|
type: Input
|
|
100
98
|
}], hasArrowIcon: [{
|
|
@@ -123,6 +121,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
123
121
|
type: Input
|
|
124
122
|
}], enableNodeReordering: [{
|
|
125
123
|
type: Input
|
|
124
|
+
}], hideIcon: [{
|
|
125
|
+
type: Input
|
|
126
126
|
}], createNew: [{
|
|
127
127
|
type: Output
|
|
128
128
|
}], select: [{
|
|
@@ -136,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
136
136
|
}], dragMoved: [{
|
|
137
137
|
type: Output
|
|
138
138
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0QsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXRILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUFOdEU7O1FBWWEsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFjN0Isb0JBQW9CO1FBQ1YsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFHL0IsQ0FBQztRQUNLLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBSXBDLENBQUM7UUFDSyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBR2xDLENBQUM7UUFDSyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3ZELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR2pELFlBQU8sR0FBRztZQUNOLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZ0NBQWdDLEVBQUU7WUFDekQ7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLG1DQUFtQzthQUM5QztTQUNKLENBQUM7S0F5REw7SUF2REcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVB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QUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBUcmVlTm9kZU9iaiwgUmVsYXRpb25JdGVtVHlwZSwgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLXRyZWUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFyc2FUcmVlSXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBub2RlOiBUcmVlTm9kZU9iajtcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogUmVsYXRpb25JdGVtVHlwZVtdO1xuICAgIEBJbnB1dCgpIGhhc0RyYWdEcm9wOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNBcnJvd0ljb24gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNvbGxhcHNlSWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzQ2hpbGRyZW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgbGVhZkN1cnNvclBvaW50ZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNFeHBhbmQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XG4gICAgQElucHV0KCkgcGFyZW50Tm9kZTogVHJlZU5vZGVPYmo7XG4gICAgQElucHV0KCkgdGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzSGV0cm86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZW5hYmxlTm9kZVJlb3JkZXJpbmc6IGJvb2xlYW47XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXcgPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uSXRlbVR5cGU+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcbiAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9PigpO1xuICAgIEBPdXRwdXQoKSBjaGVja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcbiAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgY2hlY2tlZDogYm9vbGVhbjtcbiAgICB9PigpO1xuICAgIEBPdXRwdXQoKSB2aWV3Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9PigpO1xuICAgIEBPdXRwdXQoKSBsb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGRyYWdNb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIGljb24kOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgaGlkZUljb246IGJvb2xlYW47XG4gICAgcm93QnRucyA9IFtcbiAgICAgICAgeyBJY29uOiAnYWRkJywgQWN0aW9uOiAnY29uc29sZS5sb2coXCJhZGQgYnRuIGNsaWNrZWRcIiknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgQWN0aW9uOiAnY29uc29sZS5sb2coXCJkZWxldGUgYnRuIGNsaWNrZWRcIiknXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICghdGhpcy5ub2RlLmljb24uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVJY29uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgZSkge1xuICAgICAgICBpZiAoZS50YXJnZXQgPT09IGxpRWw/LmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uQ2hlY2tib3goY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrQ2hhbmdlLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4LCBjaGVja2VkIH0pO1xuICAgIH1cbiAgICBvblJvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZyAmJiB0aGlzLmlzTXVsdGlTZWxlY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubm9kZS5EYXRhLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbk5vZGVWaWV3Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NsaWNrLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUuRGF0YSwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgb25Mb2FkQ2hpbGRyZW4oZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbi5lbWl0KHRoaXMubm9kZS5EYXRhKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRXhwYW5kRGJsQ2xpY2soZSk6IHZvaWQge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIG9uQ3JlYXRlTmV3KGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVOZXcuZW1pdChlKTtcbiAgICB9XG4gICAgb25Sb3dBY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gbmV3IEZ1bmN0aW9uKGNvbW1hbmRCb2R5KTtcbiAgICAgICAgY29tbWFuZCgpO1xuICAgIH1cbiAgICBvbkRyYWdNb3ZlZCgkZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIZXRybykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJhZ01vdmVkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG59XG4iLCI8bGlcbiAgICBmZC1saXN0LWl0ZW1cbiAgICAjbGlFbFxuICAgIFtjbGFzcy4hdHctY3Vyc29yLXBvaW50ZXJdPVwibGVhZkN1cnNvclBvaW50ZXJcIlxuICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgIFtob3N0RWxdPVwibGlFbFwiXG4gICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICBbYXR0ci5sZXZlbF09XCJsZXZlbFwiXG4gICAgW2NsYXNzLnJvb3QtZ3JvdXBdPVwibGV2ZWwgPT09IDFcIlxuICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcbiAgICBbc2VsZWN0ZWRdPVwiaXNDaGVja2VkXCJcbiAgICAoZGJsY2xpY2spPVwib25Ob2RlVmlld0NsaWNrKClcIlxuICAgIGNka0RyYWdcbiAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlbmFibGVOb2RlUmVvcmRlcmluZ1wiXG4gICAgW2Nka0RyYWdEYXRhXT1cIm5vZGUuRGF0YS5JZFwiXG4gICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib3Blbk9uQ2xpY2sgPyBvbk5vZGVWaWV3Q2xpY2soKSA6IG9uTGlzdEl0ZW1DbGljayhsaUVsLCAkZXZlbnQpXCJcbj5cbiAgICA8ZGl2IChjbGljayk9XCJvblJvd0NoZWNrKClcIiBjbGFzcz1cInNwYWNlclwiIFtzdHlsZS53aWR0aF09XCIobGV2ZWwgLSAxKSAqIDQgKyAncmVtJ1wiPjwvZGl2PlxuICAgIEBpZiAoaGFzRHJhZ0Ryb3AgJiYgIWlzSGV0cm8pIHtcbiAgICA8ZmQtaWNvbiBnbHlwaD1cImdyaXBcIiBmb250PVwiQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9sc1wiIGNka0RyYWdIYW5kbGU+PC9mZC1pY29uPlxuICAgIH0gQGlmIChpbkRpYWxvZyAmJiBpc011bHRpU2VsZWN0KSB7XG4gICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm5vZGUuRGF0YS4kQ2FwdGlvblwiIFtuZ01vZGVsXT1cImlzQ2hlY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3goJGV2ZW50KVwiPjwvZmQtY2hlY2tib3g+XG4gICAgfVxuXG4gICAgPGRpdiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyB3aWR0aDogMTAwJTsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiAxXCI+XG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImhhc0NoaWxkcmVuID8gKGlzRXhwYW5kID8gJ3NsaW0tYXJyb3ctdXAnIDogY29sbGFwc2VJY29uKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25FeHBhbmREYmxDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2UgeyBAaWYgKCFwYXJlbnROb2RlPy5oYXNPbmVEZXB0aExldmVsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY29udGFpbmVyXCIgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IH0gQGlmKGljb24pe1xuICAgICAgICAgICAgPGkgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJpY29uLWl0ZW1cIiBmZC1saXN0LWljb24gW2dseXBoXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICB9IEBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB3aWR0aDogMnJlbVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICB9IH1cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiB1bnNldDsgYWxpZ24taXRlbXM6IGNlbnRlclwiIGZkLWxpc3QtdGl0bGUgW2ZvY3VzYWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgQGlmICghaGlkZUljb24pIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibm9kZS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctcmlnaHQucHhdPVwiIXJ0bCA/IDUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJydGwgPyA1IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjb250ZXh0TWVudUl0ZW1zICYmIGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICA8aVxuICAgICAgICAgICAgdWx2Q29udGV4dE1lbnVcbiAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgIFttb109XCJub2RlLkRhdGFcIlxuICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIChjb21tYW5kQ2xpY2spPVwib25VbHZDb21tYW5kKClcIlxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgID48L2k+XG4gICAgICAgIH0gQGlmIChhY2Nlc3M/LkFkZCAhPT0gZmFsc2UgJiYgIWluRGlhbG9nKSB7XG4gICAgICAgIDxic3UtaHRyZWUtY3JlYXRlLW5ld1xuICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxuICAgICAgICA+PC9ic3UtaHRyZWUtY3JlYXRlLW5ldz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoYWNjZXNzPy5WaWV3ICYmICFzaG93T2tDYW5jZWxCdXR0b25zICYmIGRldmljZU5hbWUgIT09ICdkZXNrdG9wJyAmJiAhaGlkZU9wZW5JY29uKSB7XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCI+PC9idXR0b24+XG4gICAgfVxuXG4gICAgPGJzdS1iYXJzYS10cmVlLWl0ZW1cbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgPjwvYnN1LWJhcnNhLXRyZWUtaXRlbT5cbjwvbGk+XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0QsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXRILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUFOdEU7O1FBV2EsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFlN0Isb0JBQW9CO1FBQ1YsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFHL0IsQ0FBQztRQUNLLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBSXBDLENBQUM7UUFDSyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBR2xDLENBQUM7UUFDSyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3ZELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpELFlBQU8sR0FBRztZQUNOLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZ0NBQWdDLEVBQUU7WUFDekQ7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLG1DQUFtQzthQUM5QztTQUNKLENBQUM7S0F5REw7SUF2REcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVB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QW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBSUcsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCwgVHJlZU5vZGVPYmosIFJlbGF0aW9uSXRlbVR5cGUsIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10cmVlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVHJlZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgQElucHV0KCkgc2VsZWN0ZWROb2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbDtcbiAgICBASW5wdXQoKSByZWxhdGlvbkxpc3Q6IFJlbGF0aW9uSXRlbVR5cGVbXTtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzQXJyb3dJY29uID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2xsYXBzZUljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxlYWZDdXJzb3JQb2ludGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNoaWxkcmVuOiBUcmVlTm9kZU9ialtdO1xuICAgIEBJbnB1dCgpIHBhcmVudE5vZGU6IFRyZWVOb2RlT2JqO1xuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGVuYWJsZU5vZGVSZW9yZGVyaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVJY29uOiBib29sZWFuO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkl0ZW1UeXBlPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgY2hlY2tDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICAgIGNoZWNrZWQ6IGJvb2xlYW47XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgbG9hZENoaWxkcmVuID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHJvd0J0bnMgPSBbXG4gICAgICAgIHsgSWNvbjogJ2FkZCcsIEFjdGlvbjogJ2NvbnNvbGUubG9nKFwiYWRkIGJ0biBjbGlja2VkXCIpJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBJY29uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIEFjdGlvbjogJ2NvbnNvbGUubG9nKFwiZGVsZXRlIGJ0biBjbGlja2VkXCIpJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBpZiAoIXRoaXMubm9kZS5pY29uLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgb25MaXN0SXRlbUNsaWNrKGxpRWwsIGUpIHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBsaUVsPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0NoYW5nZS5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCwgY2hlY2tlZCB9KTtcbiAgICB9XG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cgJiYgdGhpcy5pc011bHRpU2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh7IG5vZGU6IHRoaXMubm9kZSwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgb25VbHZDb21tYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVsdkNvbW1hbmQuZW1pdCh7IG1vOiB0aGlzLm5vZGUuRGF0YSwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgb25Ob2RlVmlld0NsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4uZW1pdCh0aGlzLm5vZGUuRGF0YSk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBvbkNyZWF0ZU5ldyhlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3JlYXRlTmV3LmVtaXQoZSk7XG4gICAgfVxuICAgIG9uUm93QWN0aW9uKGNvbW1hbmRCb2R5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBGdW5jdGlvbihjb21tYW5kQm9keSk7XG4gICAgICAgIGNvbW1hbmQoKTtcbiAgICB9XG4gICAgb25EcmFnTW92ZWQoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XG4gICAgfVxufVxuIiwiPGxpXG4gICAgZmQtbGlzdC1pdGVtXG4gICAgI2xpRWxcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcbiAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxuICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIlxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcbiAgICBbaW50ZXJhY3RpdmVdPVwidHJ1ZVwiXG4gICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICBjZGtEcmFnXG4gICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZW5hYmxlTm9kZVJlb3JkZXJpbmdcIlxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxuICAgIChjZGtEcmFnTW92ZWQpPVwib25EcmFnTW92ZWQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXG4+XG4gICAgPGRpdiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCIgY2xhc3M9XCJzcGFjZXJcIiBbc3R5bGUud2lkdGhdPVwiKGxldmVsIC0gMSkgKiA0ICsgJ3JlbSdcIj48L2Rpdj5cbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XG4gICAgPGZkLWljb24gZ2x5cGg9XCJncmlwXCIgZm9udD1cIkJ1c2luZXNzU3VpdGVJbkFwcFN5bWJvbHNcIiBjZGtEcmFnSGFuZGxlPjwvZmQtaWNvbj5cbiAgICB9IEBpZiAoaW5EaWFsb2cgJiYgaXNNdWx0aVNlbGVjdCkge1xuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxuICAgIH1cblxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleDogMVwiPlxuICAgICAgICAgICAgQGlmIChoYXNBcnJvd0ljb24pIHsgQGlmIChoYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucnRsXT1cInJ0bFwiXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJoYXNDaGlsZHJlbiA/IChpc0V4cGFuZCA/ICdzbGltLWFycm93LXVwJyA6IGNvbGxhcHNlSWNvbikgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvYWRDaGlsZHJlbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uRXhwYW5kRGJsQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHsgQGlmICghcGFyZW50Tm9kZT8uaGFzT25lRGVwdGhMZXZlbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSB9IEBpZihpY29uICYmICFoaWRlSWNvbil7XG4gICAgICAgICAgICA8aSBbc3R5bGUuY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cImljb24taXRlbVwiIGZkLWxpc3QtaWNvbiBbZ2x5cGhdPVwiaWNvblwiPjwvaT5cbiAgICAgICAgICAgIH0gQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAycmVtXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCIgZmQtbGlzdC10aXRsZSBbZm9jdXNhYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICBAaWYgKCFoaWRlSWNvbikge1xuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJub2RlLmljb25cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodC5weF09XCIhcnRsID8gNSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cInJ0bCA/IDUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj57eyB0ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnICggJyArIGNoaWxkcmVuLmxlbmd0aCArICcgKScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxpXG4gICAgICAgICAgICB1bHZDb250ZXh0TWVudVxuICAgICAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgICAgICBbbWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW21vXT1cIm5vZGUuRGF0YVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgfSBAaWYgKGFjY2Vzcz8uQWRkICE9PSBmYWxzZSAmJiAhaW5EaWFsb2cpIHtcbiAgICAgICAgPGJzdS1odHJlZS1jcmVhdGUtbmV3XG4gICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgIFtyZWxhdGlvbkxpc3RdPVwicmVsYXRpb25MaXN0XCJcbiAgICAgICAgICAgIChjcmVhdGVOZXcpPVwib25DcmVhdGVOZXcoJGV2ZW50KVwiXG4gICAgICAgID48L2JzdS1odHJlZS1jcmVhdGUtbmV3PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChhY2Nlc3M/LlZpZXcgJiYgIXNob3dPa0NhbmNlbEJ1dHRvbnMgJiYgZGV2aWNlTmFtZSAhPT0gJ2Rlc2t0b3AnICYmICFoaWRlT3Blbkljb24pIHtcbiAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwib25Ob2RlVmlld0NsaWNrKClcIj48L2J1dHRvbj5cbiAgICB9XG5cbiAgICA8YnN1LWJhcnNhLXRyZWUtaXRlbVxuICAgICAgICAqY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW3NlbGVjdGVkTm9kZV09XCJzZWxlY3RlZE5vZGVcIlxuICAgICAgICBbaGFzQXJyb3dJY29uXT1cImZhbHNlXCJcbiAgICA+PC9ic3UtYmFyc2EtdHJlZS1pdGVtPlxuPC9saT5cbiJdfQ==
|