tnx-shared 5.2.28 → 5.2.29
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/assets/docker/docker-entrypoint.sh +1 -1
- package/classes/base/list-component-base.d.ts +19 -5
- package/classes/base/list-component-base.d.ts.map +1 -1
- package/classes/environment-schema.d.ts +23 -20
- package/classes/environment-schema.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -0
- package/classes/public-function.d.ts.map +1 -1
- package/components/chat/chat-box/chat-box.component.d.ts.map +1 -1
- package/components/common-app-component/common-app-component.d.ts +1 -3
- package/components/common-app-component/common-app-component.d.ts.map +1 -1
- package/components/crud/advance-search/advance-search.component.d.ts +6 -6
- package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +6 -0
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/components/dropdown/dropdown.component.d.ts +5 -3
- package/components/dropdown/dropdown.component.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
- package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
- package/components/tn-tinymce/tn-tinymce.component.d.ts +2 -0
- package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
- package/directives/primeng/tn-table.directive.d.ts +7 -6
- package/directives/primeng/tn-table.directive.d.ts.map +1 -1
- package/esm2020/classes/base/list-component-base.mjs +56 -32
- package/esm2020/classes/environment-schema.mjs +10 -1
- package/esm2020/classes/public-function.mjs +3 -1
- package/esm2020/components/add-news/add-news.component.mjs +3 -3
- package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +2 -2
- package/esm2020/components/chat/chat-box/chat-box.component.mjs +3 -4
- package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +2 -2
- package/esm2020/components/common-app-component/common-app-component.mjs +57 -57
- package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
- package/esm2020/components/crud/advance-search/advance-search.component.mjs +28 -19
- package/esm2020/components/crud/crud-form/crud-form.component.mjs +12 -4
- package/esm2020/components/crud/crud-list/crud-list.component.mjs +3 -3
- package/esm2020/components/crud/tree-table/tree-table.component.mjs +3 -3
- package/esm2020/components/dropdown/dropdown.component.mjs +29 -24
- package/esm2020/components/entity-permission/entity-permission.component.mjs +3 -3
- package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +3 -3
- package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +3 -3
- package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +3 -3
- package/esm2020/components/main-list/main-list.component.mjs +3 -3
- package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +8 -3
- package/esm2020/components/radio-button-list/radio-button-list.component.mjs +3 -3
- package/esm2020/components/report-queue/report-queue.component.mjs +2 -2
- package/esm2020/components/settings/settings.component.mjs +3 -3
- package/esm2020/components/tn-app-help/tn-app-help.component.mjs +3 -3
- package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +3 -3
- package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +5 -4
- package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +7 -3
- package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +3 -3
- package/esm2020/components/user-picker/user-picker.component.mjs +2 -2
- package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +3 -3
- package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +3 -3
- package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +6 -3
- package/esm2020/congviec/congviec/congviec.component.mjs +3 -3
- package/esm2020/directives/primeng/tn-table.directive.mjs +28 -13
- package/esm2020/services/common.service.mjs +11 -3
- package/esm2020/services/environment.service.mjs +48 -7
- package/esm2020/services/permission.service.mjs +12 -15
- package/esm2020/services/position.service.mjs +2 -2
- package/esm2020/services/signalr.service.mjs +3 -3
- package/esm2020/services/tn-client.service.mjs +30 -25
- package/esm2020/tnx-shared.module.mjs +14 -8
- package/fesm2015/tnx-shared.mjs +587 -445
- package/fesm2015/tnx-shared.mjs.map +1 -1
- package/fesm2020/tnx-shared.mjs +587 -445
- package/fesm2020/tnx-shared.mjs.map +1 -1
- package/package.json +2 -2
- package/services/common.service.d.ts +6 -0
- package/services/common.service.d.ts.map +1 -1
- package/services/environment.service.d.ts +32 -23
- package/services/environment.service.d.ts.map +1 -1
- package/services/permission.service.d.ts +5 -0
- package/services/permission.service.d.ts.map +1 -1
- package/services/position.service.d.ts.map +1 -1
- package/services/signalr.service.d.ts +1 -1
- package/services/signalr.service.d.ts.map +1 -1
- package/services/tn-client.service.d.ts +3 -1
- package/services/tn-client.service.d.ts.map +1 -1
- package/tnx-shared.module.d.ts +12 -11
- package/tnx-shared.module.d.ts.map +1 -1
|
@@ -435,10 +435,10 @@ export class BaseCongViecComponent extends DataListBase {
|
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
437
|
BaseCongViecComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseCongViecComponent, deps: [{ token: i0.Injector }, { token: i1.EnvironmentService }, { token: i2.CongViecService }, { token: i3.DmLoaiCongViecService }, { token: i4.DmLinhVucCongViecService }, { token: i5.DmPriorityService }, { token: i6.CauHinhWorkflowService }, { token: i7.CongViecLienQuanService }, { token: i8.CongViecDinhKemService }, { token: i9.CongViecThayDoiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
-
BaseCongViecComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BaseCongViecComponent, selector: "base-congviec", inputs: { itemId: "itemId", serviceCode: "serviceCode", entity: "entity", itemIdAttach: "itemIdAttach", stateCode: "stateCode", isPicker: "isPicker", loaiDanhSach: "loaiDanhSach", idCongViec: "idCongViec", ids: "ids", isFromDashboard: "isFromDashboard", formState: "formState", isChildView: "isChildView" }, outputs: { idsChange: "idsChange" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "congViecForm", first: true, predicate: ["formBase"], descendants: true }, { propertyName: "congViecPicker", first: true, predicate: ["congViecPicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" [menuButtons]=\"getMenuButtons\" (onCopyLink)=\"_copyLink($event)\"\r\n (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"addCongViec($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n <button type=\"button\" pButton style=\"display: none\" icon=\"pi pi-replay\" label=\"\u0110\u1ED3ng b\u1ED9 quy\u1EC1n\"\r\n class=\"p-button-text\" (click)=\"triggerSyncPermission()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template *ngIf=\"loaiDanhSach > 0\" #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button type=\"button\" pButton pRipple pTooltip=\"{{'FORM.DELETE' | translate}}\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\" icon=\"pi pi-trash\"\r\n (click)=\"deleteCongViecTheoLoaiDanhSach(rowData)\"></button>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"loaiCongViecModel.showEditForm\" [styleClass]=\"'tn-form-dialog'\"\r\n [header]=\"loaiCongViecModel.header | translate\" [popupSize]=\"loaiCongViecModel.popupSize\"\r\n (onHide)=\"loaiCongViecModel.showEditForm = false\">\r\n <div class=\"
|
|
438
|
+
BaseCongViecComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BaseCongViecComponent, selector: "base-congviec", inputs: { itemId: "itemId", serviceCode: "serviceCode", entity: "entity", itemIdAttach: "itemIdAttach", stateCode: "stateCode", isPicker: "isPicker", loaiDanhSach: "loaiDanhSach", idCongViec: "idCongViec", ids: "ids", isFromDashboard: "isFromDashboard", formState: "formState", isChildView: "isChildView" }, outputs: { idsChange: "idsChange" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "congViecForm", first: true, predicate: ["formBase"], descendants: true }, { propertyName: "congViecPicker", first: true, predicate: ["congViecPicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" [menuButtons]=\"getMenuButtons\" (onCopyLink)=\"_copyLink($event)\"\r\n (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"addCongViec($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n <button type=\"button\" pButton style=\"display: none\" icon=\"pi pi-replay\" label=\"\u0110\u1ED3ng b\u1ED9 quy\u1EC1n\"\r\n class=\"p-button-text\" (click)=\"triggerSyncPermission()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template *ngIf=\"loaiDanhSach > 0\" #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button type=\"button\" pButton pRipple pTooltip=\"{{'FORM.DELETE' | translate}}\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\" icon=\"pi pi-trash\"\r\n (click)=\"deleteCongViecTheoLoaiDanhSach(rowData)\"></button>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"loaiCongViecModel.showEditForm\" [styleClass]=\"'tn-form-dialog'\"\r\n [header]=\"loaiCongViecModel.header | translate\" [popupSize]=\"loaiCongViecModel.popupSize\"\r\n (onHide)=\"loaiCongViecModel.showEditForm = false\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <div class=\"md:col-10 tn-dropdown p-fluid\">\r\n <dropdown [control]=\"searchSchema.loaiCongViec\" [(value)]=\"searchData.loaiCongViec\"></dropdown>\r\n </div>\r\n <div class=\"md:col-2\">\r\n <button type=\"button\" pButton class=\"p-button-primary p-col-12\" label=\"Ok\"\r\n (click)=\"showFormAddTask($event)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" [useDefaultScrollBar]=\"true\"\r\n (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" [itemId]=\"itemId\" (onSaved)=\"handleSaved($event)\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterInserted)=\"handleAfterInserted($event)\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showPickerForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"'Ch\u1ECDn c\u00F4ng vi\u1EC7c' | translate\" [popupSize]=\"setting.popupSize\" [showFooter]=\"true\"\r\n [useDefaultScrollBar]=\"true\" (onHide)=\"showPickerForm = false\">\r\n <base-congviec #congViecPicker [isPicker]=\"true\" [formState]=\"formState\" [loaiDanhSach]=\"loaiDanhSach\"\r\n [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn' | translate\"\r\n (click)=\"onSelectCongViec()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"showPickerForm=false\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [".container-task-info .percent-done{position:relative;border-radius:2px;background-color:#f0f0f0;height:5px;margin-top:5px;overflow:hidden}.container-task-info .percent-done .detail{position:absolute;left:0;top:0;height:5px;border-radius:2px;font-size:13px;text-align:center;background:#3eb839}.priority{text-align:center}.priority>span{padding:3px 7px;border-radius:3px;font-size:.8em}\n"], dependencies: [{ kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i12.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i13.CrudListComponent, selector: "crud-list" }, { kind: "component", type: BaseCongViecComponent, selector: "base-congviec", inputs: ["itemId", "serviceCode", "entity", "itemIdAttach", "stateCode", "isPicker", "loaiDanhSach", "idCongViec", "ids", "isFromDashboard", "formState", "isChildView"], outputs: ["idsChange"] }, { kind: "component", type: i14.BaseCongViecFormComponent, selector: "base-congviec-form", inputs: ["itemId", "crudList", "control", "tenCongViec"], outputs: ["onInit", "onAfterInserted"] }, { kind: "component", type: i15.DropdownComponent, selector: "dropdown", inputs: ["showClear", "disableDisplayFieldServerSearch", "filter", "control", "defaultLabel", "appendTo", "dataSource", "value", "itemSelectedStyleClass"], outputs: ["onInit", "onChanged", "onCollapse", "onExpand", "onDropdownClick", "onShow", "onShowSmartEvent", "onHide", "onHideSmartEvent", "onFocus", "onBlur", "onReady", "onDataSourceLoaded", "valueChange", "adjustValue"] }, { kind: "component", type: i16.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }] });
|
|
439
439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseCongViecComponent, decorators: [{
|
|
440
440
|
type: Component,
|
|
441
|
-
args: [{ selector: 'base-congviec', providers: [ComponentContextService], template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" [menuButtons]=\"getMenuButtons\" (onCopyLink)=\"_copyLink($event)\"\r\n (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"addCongViec($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n <button type=\"button\" pButton style=\"display: none\" icon=\"pi pi-replay\" label=\"\u0110\u1ED3ng b\u1ED9 quy\u1EC1n\"\r\n class=\"p-button-text\" (click)=\"triggerSyncPermission()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template *ngIf=\"loaiDanhSach > 0\" #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button type=\"button\" pButton pRipple pTooltip=\"{{'FORM.DELETE' | translate}}\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\" icon=\"pi pi-trash\"\r\n (click)=\"deleteCongViecTheoLoaiDanhSach(rowData)\"></button>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"loaiCongViecModel.showEditForm\" [styleClass]=\"'tn-form-dialog'\"\r\n [header]=\"loaiCongViecModel.header | translate\" [popupSize]=\"loaiCongViecModel.popupSize\"\r\n (onHide)=\"loaiCongViecModel.showEditForm = false\">\r\n <div class=\"
|
|
441
|
+
args: [{ selector: 'base-congviec', providers: [ComponentContextService], template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" [menuButtons]=\"getMenuButtons\" (onCopyLink)=\"_copyLink($event)\"\r\n (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"addCongViec($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n <button type=\"button\" pButton style=\"display: none\" icon=\"pi pi-replay\" label=\"\u0110\u1ED3ng b\u1ED9 quy\u1EC1n\"\r\n class=\"p-button-text\" (click)=\"triggerSyncPermission()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template *ngIf=\"loaiDanhSach > 0\" #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button type=\"button\" pButton pRipple pTooltip=\"{{'FORM.DELETE' | translate}}\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\" icon=\"pi pi-trash\"\r\n (click)=\"deleteCongViecTheoLoaiDanhSach(rowData)\"></button>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"loaiCongViecModel.showEditForm\" [styleClass]=\"'tn-form-dialog'\"\r\n [header]=\"loaiCongViecModel.header | translate\" [popupSize]=\"loaiCongViecModel.popupSize\"\r\n (onHide)=\"loaiCongViecModel.showEditForm = false\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <div class=\"md:col-10 tn-dropdown p-fluid\">\r\n <dropdown [control]=\"searchSchema.loaiCongViec\" [(value)]=\"searchData.loaiCongViec\"></dropdown>\r\n </div>\r\n <div class=\"md:col-2\">\r\n <button type=\"button\" pButton class=\"p-button-primary p-col-12\" label=\"Ok\"\r\n (click)=\"showFormAddTask($event)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" [useDefaultScrollBar]=\"true\"\r\n (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" [itemId]=\"itemId\" (onSaved)=\"handleSaved($event)\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterInserted)=\"handleAfterInserted($event)\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showPickerForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"'Ch\u1ECDn c\u00F4ng vi\u1EC7c' | translate\" [popupSize]=\"setting.popupSize\" [showFooter]=\"true\"\r\n [useDefaultScrollBar]=\"true\" (onHide)=\"showPickerForm = false\">\r\n <base-congviec #congViecPicker [isPicker]=\"true\" [formState]=\"formState\" [loaiDanhSach]=\"loaiDanhSach\"\r\n [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn' | translate\"\r\n (click)=\"onSelectCongViec()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"showPickerForm=false\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [".container-task-info .percent-done{position:relative;border-radius:2px;background-color:#f0f0f0;height:5px;margin-top:5px;overflow:hidden}.container-task-info .percent-done .detail{position:absolute;left:0;top:0;height:5px;border-radius:2px;font-size:13px;text-align:center;background:#3eb839}.priority{text-align:center}.priority>span{padding:3px 7px;border-radius:3px;font-size:.8em}\n"] }]
|
|
442
442
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.EnvironmentService }, { type: i2.CongViecService }, { type: i3.DmLoaiCongViecService }, { type: i4.DmLinhVucCongViecService }, { type: i5.DmPriorityService }, { type: i6.CauHinhWorkflowService }, { type: i7.CongViecLienQuanService }, { type: i8.CongViecDinhKemService }, { type: i9.CongViecThayDoiService }]; }, propDecorators: { congViecForm: [{
|
|
443
443
|
type: ViewChild,
|
|
444
444
|
args: ['formBase', { static: false }]
|
|
@@ -472,4 +472,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
472
472
|
}], idsChange: [{
|
|
473
473
|
type: Output
|
|
474
474
|
}] } });
|
|
475
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFZLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVExRCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhcEYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUE0Q25ELFlBQ2MsU0FBbUIsRUFDbkIsbUJBQXVDLEVBQ3ZDLGdCQUFpQyxFQUNqQyxzQkFBNkMsRUFDN0MseUJBQW1ELEVBQ25ELGtCQUFxQyxFQUNyQyx1QkFBK0MsRUFDakQsd0JBQWlELEVBQ2pELHVCQUErQyxFQUMvQyx1QkFB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SztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sR0FBRztzQkFBZixLQUFLO2dCQVNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29sdW1uU2NoZW1hQmFzZSxcclxuICAgIERpYWxvZ01vZGVsLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgTW9kZWxTY2hlbWEsXHJcbiAgICBQb3B1cFNpemVcclxufSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgVG9waWNSZWxvYWRDb25nVmllY1Y1IH0gZnJvbSAnLi4vLi4vY29uc3QvY29tbW9uJztcclxuaW1wb3J0IHsgSGVpZ2h0VHlwZSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21tb24nO1xyXG5pbXBvcnQgeyBJQ29uZ1ZpZWNGb3JtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pLWNvbmd2aWVjLWZvcm0nO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2F1SGluaFdvcmtmbG93U2VydmljZSB9IGZyb20gJy4uL2NhdWhpbmgtd29ya2Zsb3cvc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYywgRW51bVN0YXRlQnlNZW51Q29uZ1ZpZWMgfSBmcm9tICcuLi9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBDb25nVmllY0RpbmhLZW1TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllYy1kaW5oa2VtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY1RoYXlEb2lTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllYy10aGF5ZG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY0xpZW5RdWFuU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZ3ZpZWNsaWVucXVhbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1CYXNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbmdWaWVjRm9ybTogSUNvbmdWaWVjRm9ybTtcclxuICAgIEBWaWV3Q2hpbGQoJ2NvbmdWaWVjUGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbmdWaWVjUGlja2VyOiBCYXNlQ29uZ1ZpZWNDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZzsgLy8gSWQgY+G7p2EgYuG6o24gZ2hpIG3DoCBjw7RuZyB2aeG7h2MgZ+G6r24gdsOgbyAodHLGsOG7nW5nIGl0ZW1JZCBj4bunYSBjw7RuZyB2aeG7h2MpXHJcbiAgICBASW5wdXQoKSBzZXJ2aWNlQ29kZTogc3RyaW5nOyAvLyBzZXJ2aWNlIGNvZGUgY+G7p2EgYuG6o24gZ2hpIHRyb25nIGPDtG5nIHZp4buHYyDEkcOtbmgga8OobVxyXG4gICAgQElucHV0KCkgZW50aXR5OiBzdHJpbmc7IC8vIGLhuqNuZyBj4bunYSBi4bqjbiBnaGkgdHJvbmcgY8O0bmcgdmnhu4djIMSRw61uaCBrw6htXHJcbiAgICBASW5wdXQoKSBpdGVtSWRBdHRhY2g6IHN0cmluZzsgLy8gSWQgY+G7p2EgYuG6o24gZ2hpIHRyb25nIGPDtG5nIHZp4buHYyDEkcOtbmgga8OobVxyXG4gICAgQElucHV0KCkgc3RhdGVDb2RlOiBFbnVtU3RhdGVCeU1lbnVDb25nVmllYztcclxuICAgIEBJbnB1dCgpIGlzUGlja2VyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbG9haURhbmhTYWNoOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpZENvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBfaWRzOiBzdHJpbmdbXVxyXG4gICAgQElucHV0KCkgc2V0IGlkcyh2YWx1ZTogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLl9pZHMgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5iYXNlUmVhZHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGlkcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faWRzO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgaXNGcm9tRGFzaGJvYXJkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIGlzQ2hpbGRWaWV3ID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIGlkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcblxyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG4gICAgZGljV29ya2Zsb3dCeUxvYWlDb25nVmllYyA9IHt9O1xyXG4gICAgZGljTG9haUNvbmdWaWVjID0ge307XHJcbiAgICBjb25nVmllY1ZpZXdNb2RlbCA9IG5ldyBEaWFsb2dNb2RlbCh7XHJcbiAgICAgICAgaGVhZGVyOiAnWGVtIGNoaSB0aeG6v3QgY8O0bmcgdmnhu4djJ1xyXG4gICAgfSk7XHJcbiAgICBsb2FpQ29uZ1ZpZWNNb2RlbCA9IG5ldyBEaWFsb2dNb2RlbCh7XHJcbiAgICAgICAgaGVhZGVyOiAnQ2jhu41uIGxv4bqhaSBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgIHBvcHVwU2l6ZTogbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiA2MDAsIGhlaWdodDogMTIwIH0pXHJcbiAgICB9KTtcclxuICAgIHNob3dQaWNrZXJGb3JtOiBib29sZWFuO1xyXG4gICAgaGlkZGVuQWRkOiBib29sZWFuO1xyXG4gICAgaGlkZGVuRWRpdDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkRlbGV0ZTogYm9vbGVhbjtcclxuICAgIHR5cGVkTGluazogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxpbmhWdWNDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlOiBDb25nVmllY0xpZW5RdWFuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY0RpbmhLZW1TZXJ2aWNlOiBDb25nVmllY0RpbmhLZW1TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjVGhheURvaVNlcnZpY2U6IENvbmdWaWVjVGhheURvaVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNvZGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhLnN0YXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcucG9wdXBTaXplLndpZHRoID0gMTM2MDtcclxuICAgICAgICB0aGlzLnNldHRpbmcucG9wdXBTaXplLmhlaWdodCA9IDc2MDtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY1NlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnY8O0bmcgdmnhu4djJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaXNXb3JrZmxvd1RyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS5hZGp1c3RTZXR0aW5nV29ya2Zsb3dGb3JDcnVkTGlzdCh0aGlzLnNldHRpbmcpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuUGFnZVRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA+IDApIHsgLy8gRGFuaCBzw6FjaCBjdiBjb24sIGN2IGxpw6puIHF1YW5cclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5FZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VUaXRsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZGVuQWRkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUlkQXR0YWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuQWRkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5FZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5EZWxldGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc0NoaWxkVmlldykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmZpeEhlaWdodFR5cGVJbkRpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWyd0ZW4nLCAnbW9UYSddO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGVuJywgbmFtZTogJ1TDqm4nLCBmdWxsTmFtZTogJ1TDqm4nLCBkZXNjcmlwdGlvbjogJ1TDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ21vVGEnLCBuYW1lOiAnTcO0IHThuqMnLCBmdWxsTmFtZTogJ03DtCB04bqjJywgZGVzY3JpcHRpb246ICdNw7QgdOG6oycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbmdheUJhdERhdScsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBi4bqvdCDEkeG6p3UnLCBmdWxsTmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGRlc2NyaXB0aW9uOiAnTmfDoHkgYuG6r3QgxJHhuqd1JyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5S2V0VGh1YycsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGZ1bGxOYW1lOiAnTmfDoHkga+G6v3QgdGjDumMnLCBkZXNjcmlwdGlvbjogJ05nw6B5IGvhur90IHRow7pjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdpZFByaW9yaXR5JywgbmFtZTogJ8SQ4buZIMawdSB0acOqbicsIGZ1bGxOYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZGVzY3JpcHRpb246ICfEkOG7mSDGsHUgdGnDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJywgbmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBmdWxsTmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBkZXNjcmlwdGlvbjogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTGluaFZ1YycsIG5hbWU6ICdMxKluaCB24buxYycsIGZ1bGxOYW1lOiAnTMSpbmggduG7sWMnLCBkZXNjcmlwdGlvbjogJ0zEqW5oIHbhu7FjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdwaGFuVHJhbScsIGRhdGFUeXBlOiAnaW50JywgbmFtZTogJ1Bo4bqnbiB0csSDbScsIGZ1bGxOYW1lOiAnUGjhuqduIHRyxINtJywgZGVzY3JpcHRpb246ICdQaOG6p24gdHLEg20nIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdjb25nVmllY0luZm8nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxOHJlbSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTVweCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkVHJlZTogJ2lkUGFyZW50JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdERlc2NlbmRhbnQ6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMaW5oVnVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZVJlZkZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAnYmFja2dyb3VuZCxjb2xvcicsXHJcbiAgICAgICAgICAgICAgICBmdW5jU2V0VmFsdWVSb3c6IChyb3dJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93SXRlbS5wcmlvcml0eUNvbG9yID0gZGF0YS5jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICByb3dJdGVtLnByaW9yaXR5QmFja2dyb3VuZCA9IGRhdGEuYmFja2dyb3VuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKFRvcGljUmVsb2FkQ29uZ1ZpZWNWNSwgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTY2hlbWFTZWFyY2goKTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYS5sb2FpQ29uZ1ZpZWMgPSBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gbG/huqFpIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgIGxvYWRPbkluaXQ6IHRydWUsXHJcbiAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgZmllbGRUcmVlOiAnaWRQYXJlbnQnLFxyXG4gICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IG51bGwsXHJcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ21hUGhhbkNhcCcsIGRpcjogMSB9XSxcclxuICAgICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdoaWVuVGhpVHJvbmdDb25nVmllYycsIE9wZXJhdG9yLmVxdWFsLCB0cnVlKVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC51blN1YnNjcmliZShUb3BpY1JlbG9hZENvbmdWaWVjVjUpO1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcyAmJiAhdGhpcy5pZHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFncmlkSW5mby5zb3J0cyB8fCAhZ3JpZEluZm8uc29ydHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkJywgZGlyOiAtMSB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUlkKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdCh0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbUlkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXRlbUlkQXR0YWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxzdElkID0gYXdhaXQgdGhpcy5nZXRJZHNDb25nVmllY0J5SXRlbUlkQXR0YWNoKCk7XHJcbiAgICAgICAgICAgIGlmICghbHN0SWQubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBsc3RJZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zdGF0ZUNvZGUpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pZHMpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCB0aGlzLmlkcykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgLy8gQ8O0bmcgdmnhu4djIGxpw6puIHF1YW5cclxuICAgICAgICAgICAgY29uc3QgaWRzQ29uZ1ZpZWNMaWVuUXVhbiA9IGF3YWl0IHRoaXMuZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90SW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDaGEnLCBPcGVyYXRvci5pc051bGwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICE9PSBGb3JtU3RhdGUuQUREKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcnMgPSBhd2FpdCB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0RGV0YWlsKHRoaXMuaWRDb25nVmllYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJzLmRhdGEuaWRDaGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgcnMuZGF0YS5pZENoYSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKC4uLmZpbHRlcnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZENoYScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRJZHNDb25nVmllY0J5SXRlbUlkQXR0YWNoKCkge1xyXG4gICAgICAgIGNvbnN0IGxzdERpbmhLZW0gPSAoYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5nZXRBbGwoW1xyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignc2VydmljZUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zZXJ2aWNlQ29kZSksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdlbnRpdHknLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5lbnRpdHkpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignZW50aXR5S2V5JywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbUlkQXR0YWNoKSxcclxuICAgICAgICBdLCAnaWRDb25nVmllYycpKS5kYXRhO1xyXG4gICAgICAgIHJldHVybiBsc3REaW5oS2VtLm1hcChxID0+IHEuaWRDb25nVmllYyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0ucGhhblRyYW0pIGl0ZW0ucGhhblRyYW0gPSA1O1xyXG4gICAgICAgICAgICBpdGVtLnBlcmNlbnRXaWR0aCA9IGAke2l0ZW0ucGhhblRyYW19JWA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvbWlzZUdldERhdGEoZ3JpZEluZm86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGcm9tRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5maWx0ZXIsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZUNvZGU6IHRoaXMucGFyZW50TW9kZWwuc2VsZWN0ZWRJdGVtLnN0YXRlQ29kZSxcclxuICAgICAgICAgICAgICAgIHN0YXRlQ29kZUJ5Vmlld0RvblZpOiB0aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5zdGF0ZUNvZGVCeVZpZXdEb25WaSxcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0TGlzdFRhc2tzRGFzaGJvYXJkKGZpbHRlcnMpO1xyXG4gICAgICAgICAgICAvLyBncmlkSW5mby5maWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5wYXJlbnRNb2RlbC5zZWxlY3RlZEl0ZW0uc3RhdGVDb2RlKVxyXG4gICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gc3VwZXIuZ2V0UHJvbWlzZUdldERhdGEoZ3JpZEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyQ29udGFpbmVyKCdvcicsXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYyksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjTGllblF1YW4nLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSldO1xyXG4gICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZ2V0QWxsKGZpbHRlcnMsICdpZENvbmdWaWVjLGlkQ29uZ1ZpZWNMaWVuUXVhbicpO1xyXG4gICAgICAgIGNvbnN0IGlkc0NvbmdWaWVjTGllblF1YW4gPSBbXTtcclxuICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBycy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pZENvbmdWaWVjID09IGVsZW1lbnQuaWRDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjTGllblF1YW4ucHVzaChlbGVtZW50LmlkQ29uZ1ZpZWNMaWVuUXVhbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlkQ29uZ1ZpZWMgPT0gZWxlbWVudC5pZENvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllY0xpZW5RdWFuLnB1c2goZWxlbWVudC5pZENvbmdWaWVjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHNDb25nVmllY0xpZW5RdWFuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGjDqm0gY8O0bmcgdmnhu4djXHJcbiAgICAgKiBT4bq9IG3hu58gbMOqbiBmb3JtIMSR4buDIGNo4buNbiBsb+G6oWkgY8O0bmcgdmnhu4djIHRyxrDhu5tjIHLhu5NpIG3hu5tpIG3hu58gZm9ybSB0aMOqbSBt4bubaSBjw7RuZyB2aeG7h2NcclxuICAgICAqL1xyXG4gICAgYWRkQ29uZ1ZpZWMoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5sb2FpQ29uZ1ZpZWNNb2RlbC5zaG93RWRpdEZvcm0gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtQWRkVGFzayhldnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0LhuqFuIHBo4bqjaSBjaOG7jW4gbG/huqFpIGPDtG5nIHZp4buHYycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2FkZChldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZUFkZCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5kYXRhLmlkTG9haUNvbmdWaWVjID0gdGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYztcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VkU3RhdHVzV29ya2Zsb3coaXRlbUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZ1ZpZWNGb3JtXHJcbiAgICAgICAgICAgICYmIHRoaXMuZm9ybU1vZGVsLmRhdGFcclxuICAgICAgICAgICAgJiYgdGhpcy5mb3JtTW9kZWwuZGF0YS5pZCA9PSBpdGVtSWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uY2xlYXJXb3JrZmxvd0J1dHRvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uX3RyaWdnZXJHZXREZXRhaWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DaG9uQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UGlja2VyRm9ybSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdHJpZ2dlclN5bmNQZXJtaXNzaW9uKCkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjVGhheURvaVNlcnZpY2UudHJpZ2dlclN5bmNUYXNrUGVybWlzc2lvbigpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJ8SQ4buTbmcgYuG7mSB0aMOgbmggY8O0bmcnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2F2ZWQoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICAvLyBMw6AgZm9ybSB0cnV54buBbiBpZCB04burIGLDqm4gbmdvw6BpIHbDoG9cclxuICAgICAgICAvLyBT4bq9IGPhuqduIHVwZGF0ZSBuZ8aw4bujYyBs4bqhaSBpZHMgbuG6v3UgbMOgIGNhc2UgdGjDqm0gbeG7m2kgYuG6o24gZ2hpXHJcbiAgICAgICAgLy8gdsOgIHJlbG9hZFxyXG4gICAgICAgIGlmICh0aGlzLmlkcyAmJiBkYXRhLmluc2VydCkge1xyXG4gICAgICAgICAgICB0aGlzLmlkcy5wdXNoKGRhdGEuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuaWRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcnVkTGlzdC5yZWxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVBZnRlckluc2VydGVkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllY0xpZW5RdWFuOiBpZFxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgaWRDaGE6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBbaWRdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVSZWxvYWRBZnRlckRlbGV0ZShpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0lkcyA9IHRoaXMuaWRzLmZpbHRlcihxID0+IGlkcy5zb21lKHggPT4geCA9PSBxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuaWRzID0gbmV3SWRzO1xyXG4gICAgICAgICAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuaWRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc0RlbGV0ZShpZHMgPSBbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBpZHNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZGVsZXRlQnVsa0NvbmdWaWVjTGllblF1YW4obW9kZWwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YUVycm9yKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS5kZWxldGVCdWxrQ29uZ1ZpZWNDb24oaWRzKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGVsZXRlQ29uZ1ZpZWNUaGVvTG9haURhbmhTYWNoKHJvd0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZUNvbmZpcm0oKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFycykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RlbGV0ZShbcm93RGF0YS5pZF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25TZWxlY3RDb25nVmllYygpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbmdWaWVjTGllblF1YW46IGl0ZW0uaWRcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZENoYTogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiB0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubWFwKHggPT4geC5pZClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjQ29uKG1vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQaWNrZXJGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyA9IFtdKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuaW5zZXJ0QnVsa0FzeW5jKGl0ZW1zKS50aGVuKHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UsICcnLCBmID0+IHRoaXMucmVsb2FkKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRDb25nVmllY0Nvbihtb2RlbCkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS51cGRhdGVCdWxrSWRDaGEobW9kZWwpLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSwgJycsIGYgPT4gdGhpcy5yZWxvYWQoKSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iLCI8Y3J1ZC1saXN0ICNjcnVkTGlzdCBbbW9kZWxdPVwibW9kZWxcIiBbc2V0dGluZ109XCJzZXR0aW5nXCIgW2RhdGFTb3VyY2VdPVwibW9kZWwuZGF0YVNvdXJjZVwiIFtoaWRkZW5BZGRdPVwiaGlkZGVuQWRkXCJcclxuICAgIFtoaWRkZW5FZGl0XT1cImhpZGRlbkVkaXRcIiBbaGlkZGVuRGVsZXRlXT1cImhpZGRlbkRlbGV0ZVwiIFtoaWRkZW5Db3B5TGlua109XCJ0cnVlXCIgW2hpZGRlbkFkZF09XCJpc0Zyb21EYXNoYm9hcmRcIlxyXG4gICAgW3Nob3dTY3JvbGxIb3Jpem9udGFsXT1cInRydWVcIiBbbWVudUJ1dHRvbnNdPVwiZ2V0TWVudUJ1dHRvbnNcIiAob25Db3B5TGluayk9XCJfY29weUxpbmsoJGV2ZW50KVwiXHJcbiAgICAob25Db3B5TGlua011bHRpcGxlKT1cIl9jb3B5TGlua011bHRpcGxlKClcIiAob25SZWxvYWQpPVwiX3RyaWdnZXJQcm9jZXNzRGF0YSgkZXZlbnQpXCIgKG9uQWRkKT1cImFkZENvbmdWaWVjKCRldmVudClcIlxyXG4gICAgKG9uRWRpdCk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uVmlldyk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uRGVsZXRlKT1cIl9kZWxldGUoJGV2ZW50KVwiXHJcbiAgICAob25EZWxldGVNdWx0aXBsZSk9XCJfZGVsZXRlTXVsdGlwbGUoJGV2ZW50KVwiIChvblJlbG9hZGVkKT1cIl91bm1hcmtMb2FkaW5nKClcIlxyXG4gICAgKG9uQ2hhbmdlZFN0YXR1c1dvcmtmbG93KT1cImhhbmRsZUNoYW5nZWRTdGF0dXNXb3JrZmxvdygkZXZlbnQpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2J1dHRvbkFmdGVyVG9vbGJhcj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwibG9haURhbmhTYWNoID4gMCAmJiAhaXNQaWNrZXJcIiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGxhYmVsPVwiQ2jhu41uIGPDtG5nIHZp4buHY1wiXHJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25DaG9uQ29uZ1ZpZWMoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgaWNvbj1cInBpIHBpLXJlcGxheVwiIGxhYmVsPVwixJDhu5NuZyBi4buZIHF1eeG7gW5cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiAoY2xpY2spPVwidHJpZ2dlclN5bmNQZXJtaXNzaW9uKClcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmdWaWVjSW5mbyBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRhc2staW5mb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbC10YXNrLWluZm9cIj5cclxuICAgICAgICAgICAgICAgIHt7cm93RGF0YS50ZW59fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnQtZG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbCB0cmFuc2l0aW9uLXdpZHRoXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiByb3dEYXRhLnBlcmNlbnRXaWR0aFxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaWRQcmlvcml0eSBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpb3JpdHlcIj5cclxuICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHJvd0RhdGEucHJpb3JpdHlDb2xvcixcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJvd0RhdGEucHJpb3JpdHlCYWNrZ3JvdW5kXHJcbiAgICAgICAgICAgIH1cIj57e3Jvd0RhdGEuc3RyaWRQcmlvcml0eX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImxvYWlEYW5oU2FjaCA+IDBcIiAjZnVuY3Rpb24gbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LWNydWRMaXN0PVwiY3J1ZExpc3RcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgcFRvb2x0aXA9XCJ7eydGT1JNLkRFTEVURScgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciBsaW5rLW9yLWFjdGlvblwiIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb25nVmllY1RoZW9Mb2FpRGFuaFNhY2gocm93RGF0YSlcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvY3J1ZC1saXN0PlxyXG5cclxuPHRuLWRpYWxvZyAqbmdJZj1cImxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybVwiIFtzdHlsZUNsYXNzXT1cIid0bi1mb3JtLWRpYWxvZydcIlxyXG4gICAgW2hlYWRlcl09XCJsb2FpQ29uZ1ZpZWNNb2RlbC5oZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cImxvYWlDb25nVmllY01vZGVsLnBvcHVwU2l6ZVwiXHJcbiAgICAob25IaWRlKT1cImxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybSA9IGZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1kLTEwIHRuLWRyb3Bkb3duIHAtZmx1aWRcIj5cclxuICAgICAgICAgICAgICAgIDxkcm9wZG93biBbY29udHJvbF09XCJzZWFyY2hTY2hlbWEubG9haUNvbmdWaWVjXCIgWyh2YWx1ZSldPVwic2VhcmNoRGF0YS5sb2FpQ29uZ1ZpZWNcIj48L2Ryb3Bkb3duPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgcC1jb2wtMTJcIiBsYWJlbD1cIk9rXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0Zvcm1BZGRUYXNrKCRldmVudClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90bi1kaWFsb2c+XHJcblxyXG48dG4tZGlhbG9nICpuZ0lmPVwic2hvd0RldGFpbEZvcm1cIiAjZGlhbG9nIFtzdHlsZUNsYXNzXT1cIidjb25ndmllYy1mb3JtIHRuLWZvcm0tZGlhbG9nJ1wiXHJcbiAgICBbaGVhZGVyXT1cInNldHRpbmcucG9wdXBIZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cInNldHRpbmcucG9wdXBTaXplXCIgW3VzZURlZmF1bHRTY3JvbGxCYXJdPVwidHJ1ZVwiXHJcbiAgICAob25IaWRlKT1cInNob3dEZXRhaWxGb3JtID0gZmFsc2VcIj5cclxuICAgIDxiYXNlLWNvbmd2aWVjLWZvcm0gI2Zvcm1CYXNlIFtwYXJlbnRNb2RlbF09XCJtb2RlbFwiIFtwYXJlbnRTZXR0aW5nXT1cInNldHRpbmdcIiBbcGFyZW50Q29udGV4dF09XCJjb250ZXh0XCJcclxuICAgICAgICBbbW9kZWxdPVwiZm9ybU1vZGVsXCIgW2NydWRMaXN0XT1cImNydWRMaXN0XCIgW2l0ZW1JZF09XCJpdGVtSWRcIiAob25TYXZlZCk9XCJoYW5kbGVTYXZlZCgkZXZlbnQpXCJcclxuICAgICAgICAob25DYW5jZWwpPVwiX2hhbmRsZUNhbmNlbCgkZXZlbnQpXCIgKG9uQWZ0ZXJJbnNlcnRlZCk9XCJoYW5kbGVBZnRlckluc2VydGVkKCRldmVudClcIj5cclxuICAgIDwvYmFzZS1jb25ndmllYy1mb3JtPlxyXG48L3RuLWRpYWxvZz5cclxuXHJcbjx0bi1kaWFsb2cgKm5nSWY9XCJzaG93UGlja2VyRm9ybVwiICNkaWFsb2cgW3N0eWxlQ2xhc3NdPVwiJ2Nvbmd2aWVjLWZvcm0gdG4tZm9ybS1kaWFsb2cnXCJcclxuICAgIFtoZWFkZXJdPVwiJ0No4buNbiBjw7RuZyB2aeG7h2MnIHwgdHJhbnNsYXRlXCIgW3BvcHVwU2l6ZV09XCJzZXR0aW5nLnBvcHVwU2l6ZVwiIFtzaG93Rm9vdGVyXT1cInRydWVcIlxyXG4gICAgW3VzZURlZmF1bHRTY3JvbGxCYXJdPVwidHJ1ZVwiIChvbkhpZGUpPVwic2hvd1BpY2tlckZvcm0gPSBmYWxzZVwiPlxyXG4gICAgPGJhc2UtY29uZ3ZpZWMgI2NvbmdWaWVjUGlja2VyIFtpc1BpY2tlcl09XCJ0cnVlXCIgW2Zvcm1TdGF0ZV09XCJmb3JtU3RhdGVcIiBbbG9haURhbmhTYWNoXT1cImxvYWlEYW5oU2FjaFwiXHJcbiAgICAgICAgW2lkQ29uZ1ZpZWNdPVwiaWRDb25nVmllY1wiPlxyXG4gICAgPC9iYXNlLWNvbmd2aWVjPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBpY29uPVwicGkgcGktc2F2ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dFwiIFtsYWJlbF09XCInQ2jhu41uJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdENvbmdWaWVjKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1yZXBsYXlcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidGT1JNLkNBTkNFTCcgfCB0cmFuc2xhdGVcIiBwcmV2ZW50VGFiIChjbGljayk9XCJzaG93UGlja2VyRm9ybT1mYWxzZVwiPjwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC90bi1kaWFsb2c+Il19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFZLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVExRCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhcEYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUE0Q25ELFlBQ2MsU0FBbUIsRUFDbkIsbUJBQXVDLEVBQ3ZDLGdCQUFpQyxFQUNqQyxzQkFBNkMsRUFDN0MseUJBQW1ELEVBQ25ELGtCQUFxQyxFQUNyQyx1QkFBK0MsRUFDakQsd0JBQWlELEVBQ2pELHVCQUErQyxFQUMvQyx1QkFB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SztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sR0FBRztzQkFBZixLQUFLO2dCQVNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29sdW1uU2NoZW1hQmFzZSxcclxuICAgIERpYWxvZ01vZGVsLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgTW9kZWxTY2hlbWEsXHJcbiAgICBQb3B1cFNpemVcclxufSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgVG9waWNSZWxvYWRDb25nVmllY1Y1IH0gZnJvbSAnLi4vLi4vY29uc3QvY29tbW9uJztcclxuaW1wb3J0IHsgSGVpZ2h0VHlwZSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21tb24nO1xyXG5pbXBvcnQgeyBJQ29uZ1ZpZWNGb3JtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pLWNvbmd2aWVjLWZvcm0nO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2F1SGluaFdvcmtmbG93U2VydmljZSB9IGZyb20gJy4uL2NhdWhpbmgtd29ya2Zsb3cvc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYywgRW51bVN0YXRlQnlNZW51Q29uZ1ZpZWMgfSBmcm9tICcuLi9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBDb25nVmllY0RpbmhLZW1TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllYy1kaW5oa2VtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY1RoYXlEb2lTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllYy10aGF5ZG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY0xpZW5RdWFuU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZ3ZpZWNsaWVucXVhbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1CYXNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbmdWaWVjRm9ybTogSUNvbmdWaWVjRm9ybTtcclxuICAgIEBWaWV3Q2hpbGQoJ2NvbmdWaWVjUGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbmdWaWVjUGlja2VyOiBCYXNlQ29uZ1ZpZWNDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZzsgLy8gSWQgY+G7p2EgYuG6o24gZ2hpIG3DoCBjw7RuZyB2aeG7h2MgZ+G6r24gdsOgbyAodHLGsOG7nW5nIGl0ZW1JZCBj4bunYSBjw7RuZyB2aeG7h2MpXHJcbiAgICBASW5wdXQoKSBzZXJ2aWNlQ29kZTogc3RyaW5nOyAvLyBzZXJ2aWNlIGNvZGUgY+G7p2EgYuG6o24gZ2hpIHRyb25nIGPDtG5nIHZp4buHYyDEkcOtbmgga8OobVxyXG4gICAgQElucHV0KCkgZW50aXR5OiBzdHJpbmc7IC8vIGLhuqNuZyBj4bunYSBi4bqjbiBnaGkgdHJvbmcgY8O0bmcgdmnhu4djIMSRw61uaCBrw6htXHJcbiAgICBASW5wdXQoKSBpdGVtSWRBdHRhY2g6IHN0cmluZzsgLy8gSWQgY+G7p2EgYuG6o24gZ2hpIHRyb25nIGPDtG5nIHZp4buHYyDEkcOtbmgga8OobVxyXG4gICAgQElucHV0KCkgc3RhdGVDb2RlOiBFbnVtU3RhdGVCeU1lbnVDb25nVmllYztcclxuICAgIEBJbnB1dCgpIGlzUGlja2VyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbG9haURhbmhTYWNoOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpZENvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBfaWRzOiBzdHJpbmdbXVxyXG4gICAgQElucHV0KCkgc2V0IGlkcyh2YWx1ZTogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLl9pZHMgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5iYXNlUmVhZHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGlkcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faWRzO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgaXNGcm9tRGFzaGJvYXJkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIGlzQ2hpbGRWaWV3ID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIGlkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcblxyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG4gICAgZGljV29ya2Zsb3dCeUxvYWlDb25nVmllYyA9IHt9O1xyXG4gICAgZGljTG9haUNvbmdWaWVjID0ge307XHJcbiAgICBjb25nVmllY1ZpZXdNb2RlbCA9IG5ldyBEaWFsb2dNb2RlbCh7XHJcbiAgICAgICAgaGVhZGVyOiAnWGVtIGNoaSB0aeG6v3QgY8O0bmcgdmnhu4djJ1xyXG4gICAgfSk7XHJcbiAgICBsb2FpQ29uZ1ZpZWNNb2RlbCA9IG5ldyBEaWFsb2dNb2RlbCh7XHJcbiAgICAgICAgaGVhZGVyOiAnQ2jhu41uIGxv4bqhaSBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgIHBvcHVwU2l6ZTogbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiA2MDAsIGhlaWdodDogMTIwIH0pXHJcbiAgICB9KTtcclxuICAgIHNob3dQaWNrZXJGb3JtOiBib29sZWFuO1xyXG4gICAgaGlkZGVuQWRkOiBib29sZWFuO1xyXG4gICAgaGlkZGVuRWRpdDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkRlbGV0ZTogYm9vbGVhbjtcclxuICAgIHR5cGVkTGluazogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxpbmhWdWNDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlOiBDb25nVmllY0xpZW5RdWFuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY0RpbmhLZW1TZXJ2aWNlOiBDb25nVmllY0RpbmhLZW1TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjVGhheURvaVNlcnZpY2U6IENvbmdWaWVjVGhheURvaVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNvZGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhLnN0YXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcucG9wdXBTaXplLndpZHRoID0gMTM2MDtcclxuICAgICAgICB0aGlzLnNldHRpbmcucG9wdXBTaXplLmhlaWdodCA9IDc2MDtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY1NlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnY8O0bmcgdmnhu4djJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaXNXb3JrZmxvd1RyZWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS5hZGp1c3RTZXR0aW5nV29ya2Zsb3dGb3JDcnVkTGlzdCh0aGlzLnNldHRpbmcpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuUGFnZVRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA+IDApIHsgLy8gRGFuaCBzw6FjaCBjdiBjb24sIGN2IGxpw6puIHF1YW5cclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5FZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VUaXRsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZGVuQWRkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUlkQXR0YWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuQWRkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5FZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oaWRkZW5EZWxldGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc0NoaWxkVmlldykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmZpeEhlaWdodFR5cGVJbkRpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWyd0ZW4nLCAnbW9UYSddO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGVuJywgbmFtZTogJ1TDqm4nLCBmdWxsTmFtZTogJ1TDqm4nLCBkZXNjcmlwdGlvbjogJ1TDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ21vVGEnLCBuYW1lOiAnTcO0IHThuqMnLCBmdWxsTmFtZTogJ03DtCB04bqjJywgZGVzY3JpcHRpb246ICdNw7QgdOG6oycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbmdheUJhdERhdScsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBi4bqvdCDEkeG6p3UnLCBmdWxsTmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGRlc2NyaXB0aW9uOiAnTmfDoHkgYuG6r3QgxJHhuqd1JyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5S2V0VGh1YycsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGZ1bGxOYW1lOiAnTmfDoHkga+G6v3QgdGjDumMnLCBkZXNjcmlwdGlvbjogJ05nw6B5IGvhur90IHRow7pjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdpZFByaW9yaXR5JywgbmFtZTogJ8SQ4buZIMawdSB0acOqbicsIGZ1bGxOYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZGVzY3JpcHRpb246ICfEkOG7mSDGsHUgdGnDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJywgbmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBmdWxsTmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBkZXNjcmlwdGlvbjogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTGluaFZ1YycsIG5hbWU6ICdMxKluaCB24buxYycsIGZ1bGxOYW1lOiAnTMSpbmggduG7sWMnLCBkZXNjcmlwdGlvbjogJ0zEqW5oIHbhu7FjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdwaGFuVHJhbScsIGRhdGFUeXBlOiAnaW50JywgbmFtZTogJ1Bo4bqnbiB0csSDbScsIGZ1bGxOYW1lOiAnUGjhuqduIHRyxINtJywgZGVzY3JpcHRpb246ICdQaOG6p24gdHLEg20nIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdjb25nVmllY0luZm8nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxOHJlbSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTVweCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkVHJlZTogJ2lkUGFyZW50JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdERlc2NlbmRhbnQ6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMaW5oVnVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZVJlZkZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAnYmFja2dyb3VuZCxjb2xvcicsXHJcbiAgICAgICAgICAgICAgICBmdW5jU2V0VmFsdWVSb3c6IChyb3dJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93SXRlbS5wcmlvcml0eUNvbG9yID0gZGF0YS5jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICByb3dJdGVtLnByaW9yaXR5QmFja2dyb3VuZCA9IGRhdGEuYmFja2dyb3VuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKFRvcGljUmVsb2FkQ29uZ1ZpZWNWNSwgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTY2hlbWFTZWFyY2goKTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFNjaGVtYS5sb2FpQ29uZ1ZpZWMgPSBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gbG/huqFpIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgIGxvYWRPbkluaXQ6IHRydWUsXHJcbiAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgZmllbGRUcmVlOiAnaWRQYXJlbnQnLFxyXG4gICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IG51bGwsXHJcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ21hUGhhbkNhcCcsIGRpcjogMSB9XSxcclxuICAgICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdoaWVuVGhpVHJvbmdDb25nVmllYycsIE9wZXJhdG9yLmVxdWFsLCB0cnVlKVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC51blN1YnNjcmliZShUb3BpY1JlbG9hZENvbmdWaWVjVjUpO1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcyAmJiAhdGhpcy5pZHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFncmlkSW5mby5zb3J0cyB8fCAhZ3JpZEluZm8uc29ydHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkJywgZGlyOiAtMSB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUlkKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdCh0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbUlkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXRlbUlkQXR0YWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxzdElkID0gYXdhaXQgdGhpcy5nZXRJZHNDb25nVmllY0J5SXRlbUlkQXR0YWNoKCk7XHJcbiAgICAgICAgICAgIGlmICghbHN0SWQubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBsc3RJZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zdGF0ZUNvZGUpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pZHMpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCB0aGlzLmlkcykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgLy8gQ8O0bmcgdmnhu4djIGxpw6puIHF1YW5cclxuICAgICAgICAgICAgY29uc3QgaWRzQ29uZ1ZpZWNMaWVuUXVhbiA9IGF3YWl0IHRoaXMuZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90SW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDaGEnLCBPcGVyYXRvci5pc051bGwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICE9PSBGb3JtU3RhdGUuQUREKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcnMgPSBhd2FpdCB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0RGV0YWlsKHRoaXMuaWRDb25nVmllYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJzLmRhdGEuaWRDaGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgcnMuZGF0YS5pZENoYSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKC4uLmZpbHRlcnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZENoYScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRJZHNDb25nVmllY0J5SXRlbUlkQXR0YWNoKCkge1xyXG4gICAgICAgIGNvbnN0IGxzdERpbmhLZW0gPSAoYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5nZXRBbGwoW1xyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignc2VydmljZUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zZXJ2aWNlQ29kZSksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdlbnRpdHknLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5lbnRpdHkpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignZW50aXR5S2V5JywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbUlkQXR0YWNoKSxcclxuICAgICAgICBdLCAnaWRDb25nVmllYycpKS5kYXRhO1xyXG4gICAgICAgIHJldHVybiBsc3REaW5oS2VtLm1hcChxID0+IHEuaWRDb25nVmllYyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0ucGhhblRyYW0pIGl0ZW0ucGhhblRyYW0gPSA1O1xyXG4gICAgICAgICAgICBpdGVtLnBlcmNlbnRXaWR0aCA9IGAke2l0ZW0ucGhhblRyYW19JWA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvbWlzZUdldERhdGEoZ3JpZEluZm86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGcm9tRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5maWx0ZXIsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZUNvZGU6IHRoaXMucGFyZW50TW9kZWwuc2VsZWN0ZWRJdGVtLnN0YXRlQ29kZSxcclxuICAgICAgICAgICAgICAgIHN0YXRlQ29kZUJ5Vmlld0RvblZpOiB0aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5zdGF0ZUNvZGVCeVZpZXdEb25WaSxcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0TGlzdFRhc2tzRGFzaGJvYXJkKGZpbHRlcnMpO1xyXG4gICAgICAgICAgICAvLyBncmlkSW5mby5maWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5wYXJlbnRNb2RlbC5zZWxlY3RlZEl0ZW0uc3RhdGVDb2RlKVxyXG4gICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gc3VwZXIuZ2V0UHJvbWlzZUdldERhdGEoZ3JpZEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyQ29udGFpbmVyKCdvcicsXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYyksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjTGllblF1YW4nLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSldO1xyXG4gICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZ2V0QWxsKGZpbHRlcnMsICdpZENvbmdWaWVjLGlkQ29uZ1ZpZWNMaWVuUXVhbicpO1xyXG4gICAgICAgIGNvbnN0IGlkc0NvbmdWaWVjTGllblF1YW4gPSBbXTtcclxuICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBycy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pZENvbmdWaWVjID09IGVsZW1lbnQuaWRDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjTGllblF1YW4ucHVzaChlbGVtZW50LmlkQ29uZ1ZpZWNMaWVuUXVhbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlkQ29uZ1ZpZWMgPT0gZWxlbWVudC5pZENvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllY0xpZW5RdWFuLnB1c2goZWxlbWVudC5pZENvbmdWaWVjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHNDb25nVmllY0xpZW5RdWFuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGjDqm0gY8O0bmcgdmnhu4djXHJcbiAgICAgKiBT4bq9IG3hu58gbMOqbiBmb3JtIMSR4buDIGNo4buNbiBsb+G6oWkgY8O0bmcgdmnhu4djIHRyxrDhu5tjIHLhu5NpIG3hu5tpIG3hu58gZm9ybSB0aMOqbSBt4bubaSBjw7RuZyB2aeG7h2NcclxuICAgICAqL1xyXG4gICAgYWRkQ29uZ1ZpZWMoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5sb2FpQ29uZ1ZpZWNNb2RlbC5zaG93RWRpdEZvcm0gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtQWRkVGFzayhldnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0LhuqFuIHBo4bqjaSBjaOG7jW4gbG/huqFpIGPDtG5nIHZp4buHYycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2FkZChldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZUFkZCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5kYXRhLmlkTG9haUNvbmdWaWVjID0gdGhpcy5zZWFyY2hEYXRhLmxvYWlDb25nVmllYztcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VkU3RhdHVzV29ya2Zsb3coaXRlbUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZ1ZpZWNGb3JtXHJcbiAgICAgICAgICAgICYmIHRoaXMuZm9ybU1vZGVsLmRhdGFcclxuICAgICAgICAgICAgJiYgdGhpcy5mb3JtTW9kZWwuZGF0YS5pZCA9PSBpdGVtSWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uY2xlYXJXb3JrZmxvd0J1dHRvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uX3RyaWdnZXJHZXREZXRhaWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DaG9uQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UGlja2VyRm9ybSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdHJpZ2dlclN5bmNQZXJtaXNzaW9uKCkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjVGhheURvaVNlcnZpY2UudHJpZ2dlclN5bmNUYXNrUGVybWlzc2lvbigpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJ8SQ4buTbmcgYuG7mSB0aMOgbmggY8O0bmcnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2F2ZWQoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICAvLyBMw6AgZm9ybSB0cnV54buBbiBpZCB04burIGLDqm4gbmdvw6BpIHbDoG9cclxuICAgICAgICAvLyBT4bq9IGPhuqduIHVwZGF0ZSBuZ8aw4bujYyBs4bqhaSBpZHMgbuG6v3UgbMOgIGNhc2UgdGjDqm0gbeG7m2kgYuG6o24gZ2hpXHJcbiAgICAgICAgLy8gdsOgIHJlbG9hZFxyXG4gICAgICAgIGlmICh0aGlzLmlkcyAmJiBkYXRhLmluc2VydCkge1xyXG4gICAgICAgICAgICB0aGlzLmlkcy5wdXNoKGRhdGEuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuaWRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcnVkTGlzdC5yZWxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVBZnRlckluc2VydGVkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllY0xpZW5RdWFuOiBpZFxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgaWRDaGE6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBbaWRdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVSZWxvYWRBZnRlckRlbGV0ZShpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0lkcyA9IHRoaXMuaWRzLmZpbHRlcihxID0+IGlkcy5zb21lKHggPT4geCA9PSBxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuaWRzID0gbmV3SWRzO1xyXG4gICAgICAgICAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuaWRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc0RlbGV0ZShpZHMgPSBbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBpZHNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZGVsZXRlQnVsa0NvbmdWaWVjTGllblF1YW4obW9kZWwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YUVycm9yKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS5kZWxldGVCdWxrQ29uZ1ZpZWNDb24oaWRzKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGVsZXRlQ29uZ1ZpZWNUaGVvTG9haURhbmhTYWNoKHJvd0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZUNvbmZpcm0oKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFycykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RlbGV0ZShbcm93RGF0YS5pZF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25TZWxlY3RDb25nVmllYygpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbmdWaWVjTGllblF1YW46IGl0ZW0uaWRcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZENoYTogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiB0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubWFwKHggPT4geC5pZClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjQ29uKG1vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQaWNrZXJGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyA9IFtdKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuaW5zZXJ0QnVsa0FzeW5jKGl0ZW1zKS50aGVuKHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UsICcnLCBmID0+IHRoaXMucmVsb2FkKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRDb25nVmllY0Nvbihtb2RlbCkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS51cGRhdGVCdWxrSWRDaGEobW9kZWwpLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSwgJycsIGYgPT4gdGhpcy5yZWxvYWQoKSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iLCI8Y3J1ZC1saXN0ICNjcnVkTGlzdCBbbW9kZWxdPVwibW9kZWxcIiBbc2V0dGluZ109XCJzZXR0aW5nXCIgW2RhdGFTb3VyY2VdPVwibW9kZWwuZGF0YVNvdXJjZVwiIFtoaWRkZW5BZGRdPVwiaGlkZGVuQWRkXCJcclxuICAgIFtoaWRkZW5FZGl0XT1cImhpZGRlbkVkaXRcIiBbaGlkZGVuRGVsZXRlXT1cImhpZGRlbkRlbGV0ZVwiIFtoaWRkZW5Db3B5TGlua109XCJ0cnVlXCIgW2hpZGRlbkFkZF09XCJpc0Zyb21EYXNoYm9hcmRcIlxyXG4gICAgW3Nob3dTY3JvbGxIb3Jpem9udGFsXT1cInRydWVcIiBbbWVudUJ1dHRvbnNdPVwiZ2V0TWVudUJ1dHRvbnNcIiAob25Db3B5TGluayk9XCJfY29weUxpbmsoJGV2ZW50KVwiXHJcbiAgICAob25Db3B5TGlua011bHRpcGxlKT1cIl9jb3B5TGlua011bHRpcGxlKClcIiAob25SZWxvYWQpPVwiX3RyaWdnZXJQcm9jZXNzRGF0YSgkZXZlbnQpXCIgKG9uQWRkKT1cImFkZENvbmdWaWVjKCRldmVudClcIlxyXG4gICAgKG9uRWRpdCk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uVmlldyk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uRGVsZXRlKT1cIl9kZWxldGUoJGV2ZW50KVwiXHJcbiAgICAob25EZWxldGVNdWx0aXBsZSk9XCJfZGVsZXRlTXVsdGlwbGUoJGV2ZW50KVwiIChvblJlbG9hZGVkKT1cIl91bm1hcmtMb2FkaW5nKClcIlxyXG4gICAgKG9uQ2hhbmdlZFN0YXR1c1dvcmtmbG93KT1cImhhbmRsZUNoYW5nZWRTdGF0dXNXb3JrZmxvdygkZXZlbnQpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2J1dHRvbkFmdGVyVG9vbGJhcj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwibG9haURhbmhTYWNoID4gMCAmJiAhaXNQaWNrZXJcIiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGxhYmVsPVwiQ2jhu41uIGPDtG5nIHZp4buHY1wiXHJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25DaG9uQ29uZ1ZpZWMoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgaWNvbj1cInBpIHBpLXJlcGxheVwiIGxhYmVsPVwixJDhu5NuZyBi4buZIHF1eeG7gW5cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiAoY2xpY2spPVwidHJpZ2dlclN5bmNQZXJtaXNzaW9uKClcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmdWaWVjSW5mbyBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRhc2staW5mb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbC10YXNrLWluZm9cIj5cclxuICAgICAgICAgICAgICAgIHt7cm93RGF0YS50ZW59fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnQtZG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbCB0cmFuc2l0aW9uLXdpZHRoXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiByb3dEYXRhLnBlcmNlbnRXaWR0aFxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaWRQcmlvcml0eSBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpb3JpdHlcIj5cclxuICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHJvd0RhdGEucHJpb3JpdHlDb2xvcixcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJvd0RhdGEucHJpb3JpdHlCYWNrZ3JvdW5kXHJcbiAgICAgICAgICAgIH1cIj57e3Jvd0RhdGEuc3RyaWRQcmlvcml0eX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImxvYWlEYW5oU2FjaCA+IDBcIiAjZnVuY3Rpb24gbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LWNydWRMaXN0PVwiY3J1ZExpc3RcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgcFRvb2x0aXA9XCJ7eydGT1JNLkRFTEVURScgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciBsaW5rLW9yLWFjdGlvblwiIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb25nVmllY1RoZW9Mb2FpRGFuaFNhY2gocm93RGF0YSlcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvY3J1ZC1saXN0PlxyXG5cclxuPHRuLWRpYWxvZyAqbmdJZj1cImxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybVwiIFtzdHlsZUNsYXNzXT1cIid0bi1mb3JtLWRpYWxvZydcIlxyXG4gICAgW2hlYWRlcl09XCJsb2FpQ29uZ1ZpZWNNb2RlbC5oZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cImxvYWlDb25nVmllY01vZGVsLnBvcHVwU2l6ZVwiXHJcbiAgICAob25IaWRlKT1cImxvYWlDb25nVmllY01vZGVsLnNob3dFZGl0Rm9ybSA9IGZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kOmNvbC0xMCB0bi1kcm9wZG93biBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHJvcGRvd24gW2NvbnRyb2xdPVwic2VhcmNoU2NoZW1hLmxvYWlDb25nVmllY1wiIFsodmFsdWUpXT1cInNlYXJjaERhdGEubG9haUNvbmdWaWVjXCI+PC9kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZDpjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgcC1jb2wtMTJcIiBsYWJlbD1cIk9rXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0Zvcm1BZGRUYXNrKCRldmVudClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90bi1kaWFsb2c+XHJcblxyXG48dG4tZGlhbG9nICpuZ0lmPVwic2hvd0RldGFpbEZvcm1cIiAjZGlhbG9nIFtzdHlsZUNsYXNzXT1cIidjb25ndmllYy1mb3JtIHRuLWZvcm0tZGlhbG9nJ1wiXHJcbiAgICBbaGVhZGVyXT1cInNldHRpbmcucG9wdXBIZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cInNldHRpbmcucG9wdXBTaXplXCIgW3VzZURlZmF1bHRTY3JvbGxCYXJdPVwidHJ1ZVwiXHJcbiAgICAob25IaWRlKT1cInNob3dEZXRhaWxGb3JtID0gZmFsc2VcIj5cclxuICAgIDxiYXNlLWNvbmd2aWVjLWZvcm0gI2Zvcm1CYXNlIFtwYXJlbnRNb2RlbF09XCJtb2RlbFwiIFtwYXJlbnRTZXR0aW5nXT1cInNldHRpbmdcIiBbcGFyZW50Q29udGV4dF09XCJjb250ZXh0XCJcclxuICAgICAgICBbbW9kZWxdPVwiZm9ybU1vZGVsXCIgW2NydWRMaXN0XT1cImNydWRMaXN0XCIgW2l0ZW1JZF09XCJpdGVtSWRcIiAob25TYXZlZCk9XCJoYW5kbGVTYXZlZCgkZXZlbnQpXCJcclxuICAgICAgICAob25DYW5jZWwpPVwiX2hhbmRsZUNhbmNlbCgkZXZlbnQpXCIgKG9uQWZ0ZXJJbnNlcnRlZCk9XCJoYW5kbGVBZnRlckluc2VydGVkKCRldmVudClcIj5cclxuICAgIDwvYmFzZS1jb25ndmllYy1mb3JtPlxyXG48L3RuLWRpYWxvZz5cclxuXHJcbjx0bi1kaWFsb2cgKm5nSWY9XCJzaG93UGlja2VyRm9ybVwiICNkaWFsb2cgW3N0eWxlQ2xhc3NdPVwiJ2Nvbmd2aWVjLWZvcm0gdG4tZm9ybS1kaWFsb2cnXCJcclxuICAgIFtoZWFkZXJdPVwiJ0No4buNbiBjw7RuZyB2aeG7h2MnIHwgdHJhbnNsYXRlXCIgW3BvcHVwU2l6ZV09XCJzZXR0aW5nLnBvcHVwU2l6ZVwiIFtzaG93Rm9vdGVyXT1cInRydWVcIlxyXG4gICAgW3VzZURlZmF1bHRTY3JvbGxCYXJdPVwidHJ1ZVwiIChvbkhpZGUpPVwic2hvd1BpY2tlckZvcm0gPSBmYWxzZVwiPlxyXG4gICAgPGJhc2UtY29uZ3ZpZWMgI2NvbmdWaWVjUGlja2VyIFtpc1BpY2tlcl09XCJ0cnVlXCIgW2Zvcm1TdGF0ZV09XCJmb3JtU3RhdGVcIiBbbG9haURhbmhTYWNoXT1cImxvYWlEYW5oU2FjaFwiXHJcbiAgICAgICAgW2lkQ29uZ1ZpZWNdPVwiaWRDb25nVmllY1wiPlxyXG4gICAgPC9iYXNlLWNvbmd2aWVjPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBpY29uPVwicGkgcGktc2F2ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dFwiIFtsYWJlbF09XCInQ2jhu41uJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdENvbmdWaWVjKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1yZXBsYXlcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidGT1JNLkNBTkNFTCcgfCB0cmFuc2xhdGVcIiBwcmV2ZW50VGFiIChjbGljayk9XCJzaG93UGlja2VyRm9ybT1mYWxzZVwiPjwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC90bi1kaWFsb2c+Il19
|
|
@@ -5,11 +5,19 @@ import * as i1 from "../../classes/base/crud-list-base";
|
|
|
5
5
|
import * as i2 from "@angular/common";
|
|
6
6
|
import * as i3 from "../../classes/base/tree-table-base";
|
|
7
7
|
export class TnReorderableColumnDirective {
|
|
8
|
-
constructor(
|
|
9
|
-
|
|
8
|
+
constructor(
|
|
9
|
+
// public crudList: CrudListBaseComponent,
|
|
10
|
+
el, zone) {
|
|
10
11
|
this.el = el;
|
|
11
12
|
this.zone = zone;
|
|
12
|
-
this.dt = this.crudList.table;
|
|
13
|
+
// this.dt = this.crudList.table;
|
|
14
|
+
}
|
|
15
|
+
set hostRef(value) {
|
|
16
|
+
this._hostRef = value;
|
|
17
|
+
if (this._hostRef == null) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
this.dt = this._hostRef.table;
|
|
13
21
|
}
|
|
14
22
|
ngAfterViewInit() {
|
|
15
23
|
if (this.isEnabled()) {
|
|
@@ -84,25 +92,30 @@ export class TnReorderableColumnDirective {
|
|
|
84
92
|
this.unbindEvents();
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
|
-
TnReorderableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableColumnDirective, deps: [{ token:
|
|
88
|
-
TnReorderableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: TnReorderableColumnDirective, selector: "[tnReorderableColumn]", inputs: { tnReorderableColumnDisabled: "tnReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" } }, ngImport: i0 });
|
|
95
|
+
TnReorderableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableColumnDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
96
|
+
TnReorderableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: TnReorderableColumnDirective, selector: "[tnReorderableColumn]", inputs: { tnReorderableColumnDisabled: "tnReorderableColumnDisabled", hostRef: "hostRef" }, host: { listeners: { "drop": "onDrop($event)" } }, ngImport: i0 });
|
|
89
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableColumnDirective, decorators: [{
|
|
90
98
|
type: Directive,
|
|
91
99
|
args: [{
|
|
92
100
|
selector: '[tnReorderableColumn]'
|
|
93
101
|
}]
|
|
94
|
-
}], ctorParameters: function () { return [{ type:
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { tnReorderableColumnDisabled: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], hostRef: [{
|
|
95
105
|
type: Input
|
|
96
106
|
}], onDrop: [{
|
|
97
107
|
type: HostListener,
|
|
98
108
|
args: ['drop', ['$event']]
|
|
99
109
|
}] } });
|
|
100
110
|
export class TnReorderableRowDirective {
|
|
101
|
-
constructor(
|
|
102
|
-
this.crudList = crudList;
|
|
111
|
+
constructor(el, zone) {
|
|
103
112
|
this.el = el;
|
|
104
113
|
this.zone = zone;
|
|
105
|
-
|
|
114
|
+
}
|
|
115
|
+
set hostRef(value) {
|
|
116
|
+
if (value) {
|
|
117
|
+
this.dt = value.table;
|
|
118
|
+
}
|
|
106
119
|
}
|
|
107
120
|
ngAfterViewInit() {
|
|
108
121
|
if (this.isEnabled()) {
|
|
@@ -178,18 +191,20 @@ export class TnReorderableRowDirective {
|
|
|
178
191
|
event.preventDefault();
|
|
179
192
|
}
|
|
180
193
|
}
|
|
181
|
-
TnReorderableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableRowDirective, deps: [{ token:
|
|
182
|
-
TnReorderableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: TnReorderableRowDirective, selector: "[tnReorderableRow]", inputs: { index: ["tnReorderableRow", "index"], tnReorderableRowDisabled: "tnReorderableRowDisabled" }, host: { listeners: { "drop": "onDrop($event)" } }, ngImport: i0 });
|
|
194
|
+
TnReorderableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
195
|
+
TnReorderableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: TnReorderableRowDirective, selector: "[tnReorderableRow]", inputs: { index: ["tnReorderableRow", "index"], tnReorderableRowDisabled: "tnReorderableRowDisabled", hostRef: "hostRef" }, host: { listeners: { "drop": "onDrop($event)" } }, ngImport: i0 });
|
|
183
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnReorderableRowDirective, decorators: [{
|
|
184
197
|
type: Directive,
|
|
185
198
|
args: [{
|
|
186
199
|
selector: '[tnReorderableRow]'
|
|
187
200
|
}]
|
|
188
|
-
}], ctorParameters: function () { return [{ type:
|
|
201
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { index: [{
|
|
189
202
|
type: Input,
|
|
190
203
|
args: ['tnReorderableRow']
|
|
191
204
|
}], tnReorderableRowDisabled: [{
|
|
192
205
|
type: Input
|
|
206
|
+
}], hostRef: [{
|
|
207
|
+
type: Input
|
|
193
208
|
}], onDrop: [{
|
|
194
209
|
type: HostListener,
|
|
195
210
|
args: ['drop', ['$event']]
|
|
@@ -386,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
386
401
|
}], ctorParameters: function () { return [{ type: i3.TreeTableBaseComponent }]; }, propDecorators: { rowNode: [{
|
|
387
402
|
type: Input
|
|
388
403
|
}] } });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9wcmltZW5nL3RuLXRhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFLTCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQVduRCxNQUFNLE9BQU8sNEJBQTRCO0lBZXJDLFlBQ1csUUFBK0IsRUFBUyxFQUFjLEVBQVMsSUFBWTtRQUEzRSxhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRWxGLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFNUUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxD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QUk7aUJBQ3hDOzZHQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBIb3N0LFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBTZWxmLFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kb20nO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvdHJlZXRhYmxlJztcclxuaW1wb3J0IHsgQ3J1ZExpc3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NydWQtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS90cmVlLXRhYmxlLWJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9saXN0LWNvbXBvbmVudC1iYXNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdG5SZW9yZGVyYWJsZUNvbHVtbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUblJlb3JkZXJhYmxlQ29sdW1uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIHRuUmVvcmRlcmFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBkdDogVGFibGU7XHJcblxyXG4gICAgZHJhZ1N0YXJ0TGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnT3Zlckxpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgZHJhZ0VudGVyTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnTGVhdmVMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIG1vdXNlRG93bkxpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGNydWRMaXN0OiBDcnVkTGlzdEJhc2VDb21wb25lbnQsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5kdCA9IHRoaXMuY3J1ZExpc3QudGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmluZEV2ZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiaW5kRXZlbnRzKCkge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm1vdXNlRG93bkxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCB0aGlzLmRyYWdTdGFydExpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lciA9IHRoaXMub25EcmFnRW50ZXIuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0VudGVyLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0xlYXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmJpbmRFdmVudHMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW91c2VEb3duTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcmFnRW50ZXJMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcmFnRW50ZXJMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcmFnTGVhdmVMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VEb3duKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5ub2RlTmFtZSA9PT0gJ0lOUFVUJyB8fCBldmVudC50YXJnZXQubm9kZU5hbWUgPT09ICdURVhUQVJFQScgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC50YXJnZXQsICdwLWNvbHVtbi1yZXNpemVyJykpIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5kdC5vbkNvbHVtbkRyYWdTdGFydChldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdPdmVyKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdFbnRlcihldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Db2x1bW5EcmFnRW50ZXIoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnTGVhdmUoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmR0Lm9uQ29sdW1uRHJhZ0xlYXZlKGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcclxuICAgIG9uRHJvcChldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHQub25Db2x1bW5Ecm9wKGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc0VuYWJsZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG5SZW9yZGVyYWJsZUNvbHVtbkRpc2FibGVkICE9PSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudW5iaW5kRXZlbnRzKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdG5SZW9yZGVyYWJsZVJvd10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUblJlb3JkZXJhYmxlUm93RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCd0blJlb3JkZXJhYmxlUm93JykgaW5kZXg6IG51bWJlcjtcclxuXHJcbiAgICBASW5wdXQoKSB0blJlb3JkZXJhYmxlUm93RGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgZHQ6IFRhYmxlO1xyXG5cclxuICAgIG1vdXNlRG93bkxpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgZHJhZ1N0YXJ0TGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnRW5kTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnT3Zlckxpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgZHJhZ0xlYXZlTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcm9wTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgY3J1ZExpc3Q6IENydWRMaXN0QmFzZUNvbXBvbmVudCxcclxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHVibGljIHpvbmU6IE5nWm9uZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5kdCA9IHRoaXMuY3J1ZExpc3QudGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcm9wcGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRFdmVudHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYmluZEV2ZW50cygpIHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vdXNlRG93bkxpc3RlbmVyID0gdGhpcy5vbk1vdXNlRG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydExpc3RlbmVyID0gdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgdGhpcy5kcmFnU3RhcnRMaXN0ZW5lcik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRyYWdFbmRMaXN0ZW5lciA9IHRoaXMub25EcmFnRW5kLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgdGhpcy5kcmFnRW5kTGlzdGVuZXIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gdGhpcy5vbkRyYWdPdmVyLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gdGhpcy5vbkRyYWdMZWF2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW5iaW5kRXZlbnRzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1vdXNlRG93bkxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLm1vdXNlRG93bkxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdTdGFydExpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydExpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbmRMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgdGhpcy5kcmFnRW5kTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdFbmRMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcmFnT3Zlckxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZURvd24oZXZlbnQpIHtcclxuICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC50YXJnZXQsICdwLWRhdGF0YWJsZS1yZW9yZGVyYWJsZXJvdy1oYW5kbGUnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcmFnZ2FibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnU3RhcnQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmR0Lm9uUm93RHJhZ1N0YXJ0KGV2ZW50LCB0aGlzLmluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdFbmQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmR0Lm9uUm93RHJhZ0VuZChldmVudCk7XHJcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ092ZXIoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmR0Lm9uUm93RHJhZ092ZXIoZXZlbnQsIHRoaXMuaW5kZXgsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdMZWF2ZShldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Sb3dEcmFnTGVhdmUoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbmFibGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRuUmVvcmRlcmFibGVSb3dEaXNhYmxlZCAhPT0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcclxuICAgIG9uRHJvcChldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpICYmIHRoaXMuZHQucm93RHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5kdC5vblJvd0Ryb3AoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3RuU29ydGFibGVDb2x1bW5dJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2NsYXNzLnAtc29ydGFibGUtY29sdW1uXSc6ICdpc0VuYWJsZWQoKScsXHJcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdpc0VuYWJsZWQoKSA/IFwiMFwiIDogbnVsbCcsXHJcbiAgICAgICAgJ1tjbGFzcy5wLWhpZ2hsaWdodF0nOiAnc29ydGVkJyxcclxuICAgICAgICAnW2F0dHIucm9sZV0nOiAnXCJjb2x1bW5oZWFkZXJcIicsXHJcbiAgICAgICAgJ1thdHRyLmFyaWEtc29ydF0nOiAnc29ydE9yZGVyJ1xyXG4gICAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5Tb3J0YWJsZUNvbHVtbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgndG5Tb3J0YWJsZUNvbHVtbicpIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB0blNvcnRhYmxlQ29sdW1uRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBfaG9zdFJlZjogTGlzdENvbXBvbmVudEJhc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgaG9zdFJlZih2YWx1ZTogTGlzdENvbXBvbmVudEJhc2UpIHtcclxuICAgICAgICB0aGlzLl9ob3N0UmVmID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMuX2hvc3RSZWYgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblRhYmxlUmVhZHkgPSB0aGlzLl9ob3N0UmVmLnRhYmxlUmVhZHlTb3VyY2UkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kdCA9IHRoaXMuX2hvc3RSZWYudGFibGU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNvcnRTb3VyY2UkLnN1YnNjcmliZShzb3J0TWV0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGR0OiBUYWJsZTtcclxuXHJcbiAgICBzb3J0ZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgc29ydE9yZGVyOiBzdHJpbmc7XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uVGFibGVSZWFkeTogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIC8vIHB1YmxpYyBjcnVkTGlzdDogQ3J1ZExpc3RCYXNlQ29tcG9uZW50XHJcbiAgICApIHtcclxuICAgICAgICAvLyB0aGlzLnN1YnNjcmlwdGlvblRhYmxlUmVhZHkgPSB0aGlzLmNydWRMaXN0LnRhYmxlUmVhZHlTb3VyY2UkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAvLyAgICAgdGhpcy5kdCA9IHRoaXMuY3J1ZExpc3QudGFibGU7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNvcnRTb3VyY2UkLnN1YnNjcmliZShzb3J0TWV0YSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICAvLyAgICAgICAgIH0pO1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVNvcnRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZHQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNvcnRlZCA9IHRoaXMuZHQuaXNTb3J0ZWQodGhpcy5maWVsZCk7XHJcbiAgICAgICAgdGhpcy5zb3J0T3JkZXIgPSB0aGlzLnNvcnRlZCA/ICh0aGlzLmR0LnNvcnRPcmRlciA9PT0gMSA/ICdhc2NlbmRpbmcnIDogJ2Rlc2NlbmRpbmcnKSA6ICdub25lJztcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkgJiYgIXRoaXMuaXNGaWx0ZXJFbGVtZW50KDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHQuc29ydCh7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcclxuICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgRG9tSGFuZGxlci5jbGVhclNlbGVjdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcclxuICAgIG9uRW50ZXJLZXkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uQ2xpY2soZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRW5hYmxlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50blNvcnRhYmxlQ29sdW1uRGlzYWJsZWQgIT09IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGaWx0ZXJFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MoZWxlbWVudCwgJ3BpLWZpbHRlci1pY29uJykgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhlbGVtZW50LCAncC1jb2x1bW4tZmlsdGVyLW1lbnUtYnV0dG9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25UYWJsZVJlYWR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uVGFibGVSZWFkeS51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndG4tc29ydEljb24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8aSBjbGFzcz1cInAtc29ydGFibGUtY29sdW1uLWljb24gcGkgcGktZndcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwaS1zb3J0LWFtb3VudC11cC1hbHQnOiBzb3J0T3JkZXIgPT09IDEsICdwaS1zb3J0LWFtb3VudC1kb3duJzogc29ydE9yZGVyID09PSAtMSwgJ3BpLXNvcnQtYWx0Jzogc29ydE9yZGVyID09PSAwfVwiPjwvaT5cclxuICAgIGAsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRuU29ydEljb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgZmllbGQ6IHN0cmluZztcclxuXHJcbiAgICBkdDogVGFibGU7XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgc29ydE9yZGVyOiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGNydWRMaXN0OiBDcnVkTGlzdEJhc2VDb21wb25lbnQsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICB0aGlzLmR0ID0gY3J1ZExpc3QudGFibGU7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmR0LnRhYmxlU2VydmljZS5zb3J0U291cmNlJC5zdWJzY3JpYmUoc29ydE1ldGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljayhldmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU29ydFN0YXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmR0LnNvcnRNb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMuZHQuaXNTb3J0ZWQodGhpcy5maWVsZCkgPyB0aGlzLmR0LnNvcnRPcmRlciA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZHQuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgY29uc3Qgc29ydE1ldGEgPSB0aGlzLmR0LmdldFNvcnRNZXRhKHRoaXMuZmllbGQpO1xyXG4gICAgICAgICAgICB0aGlzLnNvcnRPcmRlciA9IHNvcnRNZXRhID8gc29ydE1ldGEub3JkZXIgOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0bi10cmVlVGFibGVUb2dnbGVyJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwLXRyZWV0YWJsZS10b2dnbGVyIHAtbGlua1wiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIiB0YWJpbmRleD1cIi0xXCIgcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwicm93Tm9kZS5ub2RlLmxlYWYgPT09IGZhbHNlIHx8IChyb3dOb2RlLm5vZGUuY2hpbGRyZW4gJiYgcm93Tm9kZS5ub2RlLmNoaWxkcmVuLmxlbmd0aCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luTGVmdF09XCJyb3dOb2RlLmxldmVsICogMTYgKyAncHgnXCI+XHJcbiAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInJvd05vZGUubm9kZS5leHBhbmRlZCA/ICdwaSBwaS1mdyBwaS1jaGV2cm9uLWRvd24nIDogJ3BpIHBpLWZ3IHBpLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRuVHJlZVRhYmxlVG9nZ2xlciB7XHJcbiAgICBASW5wdXQoKSByb3dOb2RlOiBhbnk7XHJcbiAgICB0dDogVHJlZVRhYmxlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dGI6IFRyZWVUYWJsZUJhc2VDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnR0ID0gdHRiLnRyZWVUYWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIHRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkID0gIXRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yb3dOb2RlLm5vZGUuZXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50dC5vbk5vZGVFeHBhbmQuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcclxuICAgICAgICAgICAgICAgIG5vZGU6IHRoaXMucm93Tm9kZS5ub2RlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50dC5vbk5vZGVDb2xsYXBzZS5lbWl0KHtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgbm9kZTogdGhpcy5yb3dOb2RlLm5vZGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnR0LnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMudHQudGFibGVTZXJ2aWNlLm9uVUlVcGRhdGUodGhpcy50dC52YWx1ZSk7XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
404
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9wcmltZW5nL3RuLXRhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQVVuRCxNQUFNLE9BQU8sNEJBQTRCO0lBd0JyQztJQUNJLDBDQUEwQztJQUNuQyxFQUFjLEVBQ2QsSUFBWTtRQURaLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRW5CLGlDQUFpQztJQUNyQyxDQUFDO0lBM0JELElBQWEsT0FBTyxDQUFDLEtBQXdCO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDdkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBc0JELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FB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QWMsRUFBRSxDQUFDO0lBQzNCLENBQUM7OytHQTVCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwyRkFUakI7Ozs7OztLQU1UOzJGQUdRLGtCQUFrQjtrQkFYOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUU7Ozs7OztLQU1UO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN4Qzs2R0FFWSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2RvbSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQgeyBDcnVkTGlzdEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY3J1ZC1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBUcmVlVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL3RyZWUtdGFibGUtYmFzZSc7XHJcbmltcG9ydCB7IExpc3RDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2xpc3QtY29tcG9uZW50LWJhc2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1t0blJlb3JkZXJhYmxlQ29sdW1uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRuUmVvcmRlcmFibGVDb2x1bW5EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdG5SZW9yZGVyYWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgX2hvc3RSZWY6IExpc3RDb21wb25lbnRCYXNlO1xyXG4gICAgQElucHV0KCkgc2V0IGhvc3RSZWYodmFsdWU6IExpc3RDb21wb25lbnRCYXNlKSB7XHJcbiAgICAgICAgdGhpcy5faG9zdFJlZiA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLl9ob3N0UmVmID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kdCA9IHRoaXMuX2hvc3RSZWYudGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgZHQ6IFRhYmxlO1xyXG5cclxuICAgIGRyYWdTdGFydExpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgZHJhZ092ZXJMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGRyYWdFbnRlckxpc3RlbmVyOiBhbnk7XHJcblxyXG4gICAgZHJhZ0xlYXZlTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBtb3VzZURvd25MaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIC8vIHB1YmxpYyBjcnVkTGlzdDogQ3J1ZExpc3RCYXNlQ29tcG9uZW50LFxyXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBwdWJsaWMgem9uZTogTmdab25lXHJcbiAgICApIHtcclxuICAgICAgICAvLyB0aGlzLmR0ID0gdGhpcy5jcnVkTGlzdC50YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5iaW5kRXZlbnRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJpbmRFdmVudHMoKSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MaXN0ZW5lciA9IHRoaXMub25Nb3VzZURvd24uYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRMaXN0ZW5lciA9IHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gdGhpcy5vbkRyYWdFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IHRoaXMub25EcmFnRW50ZXIuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IHRoaXMub25EcmFnTGVhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVuYmluZEV2ZW50cygpIHtcclxuICAgICAgICBpZiAodGhpcy5tb3VzZURvd25MaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm1vdXNlRG93bkxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcmFnT3Zlckxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbnRlckxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbnRlckxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZURvd24oZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGV2ZW50LnRhcmdldC5ub2RlTmFtZSA9PT0gJ1RFWFRBUkVBJyB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtY29sdW1uLXJlc2l6ZXInKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnU3RhcnQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmR0Lm9uQ29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ092ZXIoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ0VudGVyKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5kdC5vbkNvbHVtbkRyYWdFbnRlcihldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdMZWF2ZShldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Db2x1bW5EcmFnTGVhdmUoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gICAgb25Ecm9wKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kdC5vbkNvbHVtbkRyb3AoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzRW5hYmxlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50blJlb3JkZXJhYmxlQ29sdW1uRGlzYWJsZWQgIT09IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy51bmJpbmRFdmVudHMoKTtcclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1t0blJlb3JkZXJhYmxlUm93XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRuUmVvcmRlcmFibGVSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoJ3RuUmVvcmRlcmFibGVSb3cnKSBpbmRleDogbnVtYmVyO1xyXG5cclxuICAgIEBJbnB1dCgpIHRuUmVvcmRlcmFibGVSb3dEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKSBzZXQgaG9zdFJlZih2YWx1ZTogTGlzdENvbXBvbmVudEJhc2UpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5kdCA9IHZhbHVlLnRhYmxlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkdDogVGFibGU7XHJcblxyXG4gICAgbW91c2VEb3duTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnU3RhcnRMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGRyYWdFbmRMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGRyYWdPdmVyTGlzdGVuZXI6IGFueTtcclxuXHJcbiAgICBkcmFnTGVhdmVMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGRyb3BMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBwdWJsaWMgem9uZTogTmdab25lXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyb3BwYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmluZEV2ZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiaW5kRXZlbnRzKCkge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm1vdXNlRG93bkxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCB0aGlzLmRyYWdTdGFydExpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VuZExpc3RlbmVyID0gdGhpcy5vbkRyYWdFbmQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCB0aGlzLmRyYWdFbmRMaXN0ZW5lcik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ092ZXIuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0xlYXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmJpbmRFdmVudHMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW91c2VEb3duTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgdGhpcy5kcmFnU3RhcnRMaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0VuZExpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCB0aGlzLmRyYWdFbmRMaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VuZExpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyYWdPdmVyTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbk1vdXNlRG93bihldmVudCkge1xyXG4gICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtZGF0YXRhYmxlLXJlb3JkZXJhYmxlcm93LWhhbmRsZScpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcmFnZ2FibGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdGFydChldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Sb3dEcmFnU3RhcnQoZXZlbnQsIHRoaXMuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ0VuZChldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Sb3dEcmFnRW5kKGV2ZW50KTtcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnT3ZlcihldmVudCkge1xyXG4gICAgICAgIHRoaXMuZHQub25Sb3dEcmFnT3ZlcihldmVudCwgdGhpcy5pbmRleCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5kdC5vblJvd0RyYWdMZWF2ZShldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpc0VuYWJsZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG5SZW9yZGVyYWJsZVJvd0Rpc2FibGVkICE9PSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gICAgb25Ecm9wKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkgJiYgdGhpcy5kdC5yb3dEcmFnZ2luZykge1xyXG4gICAgICAgICAgICB0aGlzLmR0Lm9uUm93RHJvcChldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdG5Tb3J0YWJsZUNvbHVtbl0nLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdbY2xhc3MucC1zb3J0YWJsZS1jb2x1bW5dJzogJ2lzRW5hYmxlZCgpJyxcclxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2lzRW5hYmxlZCgpID8gXCIwXCIgOiBudWxsJyxcclxuICAgICAgICAnW2NsYXNzLnAtaGlnaGxpZ2h0XSc6ICdzb3J0ZWQnLFxyXG4gICAgICAgICdbYXR0ci5yb2xlXSc6ICdcImNvbHVtbmhlYWRlclwiJyxcclxuICAgICAgICAnW2F0dHIuYXJpYS1zb3J0XSc6ICdzb3J0T3JkZXInXHJcbiAgICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUblNvcnRhYmxlQ29sdW1uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCd0blNvcnRhYmxlQ29sdW1uJykgZmllbGQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHRuU29ydGFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIF9ob3N0UmVmOiBMaXN0Q29tcG9uZW50QmFzZTtcclxuICAgIEBJbnB1dCgpIHNldCBob3N0UmVmKHZhbHVlOiBMaXN0Q29tcG9uZW50QmFzZSkge1xyXG4gICAgICAgIHRoaXMuX2hvc3RSZWYgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5faG9zdFJlZiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uVGFibGVSZWFkeSA9IHRoaXMuX2hvc3RSZWYudGFibGVSZWFkeVNvdXJjZSQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmR0ID0gdGhpcy5faG9zdFJlZi50YWJsZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5kdC50YWJsZVNlcnZpY2Uuc29ydFNvdXJjZSQuc3Vic2NyaWJlKHNvcnRNZXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZHQ6IFRhYmxlO1xyXG5cclxuICAgIHNvcnRlZDogYm9vbGVhbjtcclxuXHJcbiAgICBzb3J0T3JkZXI6IHN0cmluZztcclxuXHJcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBzdWJzY3JpcHRpb25UYWJsZVJlYWR5OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHVibGljIGNydWRMaXN0OiBDcnVkTGlzdEJhc2VDb21wb25lbnRcclxuICAgICkge1xyXG4gICAgICAgIC8vIHRoaXMuc3Vic2NyaXB0aW9uVGFibGVSZWFkeSA9IHRoaXMuY3J1ZExpc3QudGFibGVSZWFkeVNvdXJjZSQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmR0ID0gdGhpcy5jcnVkTGlzdC50YWJsZTtcclxuICAgICAgICAvLyAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5kdC50YWJsZVNlcnZpY2Uuc29ydFNvdXJjZSQuc3Vic2NyaWJlKHNvcnRNZXRhID0+IHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xyXG4gICAgICAgIC8vICAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU29ydFN0YXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kdCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc29ydGVkID0gdGhpcy5kdC5pc1NvcnRlZCh0aGlzLmZpZWxkKTtcclxuICAgICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMuc29ydGVkID8gKHRoaXMuZHQuc29ydE9yZGVyID09PSAxID8gJ2FzY2VuZGluZycgOiAnZGVzY2VuZGluZycpIDogJ25vbmUnO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSAmJiAhdGhpcy5pc0ZpbHRlckVsZW1lbnQoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5kdC5zb3J0KHtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGRcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBEb21IYW5kbGVyLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgb25FbnRlcktleShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgICAgIHRoaXMub25DbGljayhldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbmFibGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRuU29ydGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0ZpbHRlckVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhlbGVtZW50LCAncGktZmlsdGVyLWljb24nKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGVsZW1lbnQsICdwLWNvbHVtbi1maWx0ZXItbWVudS1idXR0b24nKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblRhYmxlUmVhZHkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25UYWJsZVJlYWR5LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0bi1zb3J0SWNvbicsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxpIGNsYXNzPVwicC1zb3J0YWJsZS1jb2x1bW4taWNvbiBwaSBwaS1md1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3BpLXNvcnQtYW1vdW50LXVwLWFsdCc6IHNvcnRPcmRlciA9PT0gMSwgJ3BpLXNvcnQtYW1vdW50LWRvd24nOiBzb3J0T3JkZXIgPT09IC0xLCAncGktc29ydC1hbHQnOiBzb3J0T3JkZXIgPT09IDB9XCI+PC9pPlxyXG4gICAgYCxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5Tb3J0SWNvbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xyXG5cclxuICAgIGR0OiBUYWJsZTtcclxuXHJcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBzb3J0T3JkZXI6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY3J1ZExpc3Q6IENydWRMaXN0QmFzZUNvbXBvbmVudCwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHRoaXMuZHQgPSBjcnVkTGlzdC50YWJsZTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNvcnRTb3VyY2UkLnN1YnNjcmliZShzb3J0TWV0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTb3J0U3RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHQuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5kdC5pc1NvcnRlZCh0aGlzLmZpZWxkKSA/IHRoaXMuZHQuc29ydE9yZGVyIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5kdC5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0TWV0YSA9IHRoaXMuZHQuZ2V0U29ydE1ldGEodGhpcy5maWVsZCk7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gc29ydE1ldGEgPyBzb3J0TWV0YS5vcmRlciA6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3RuLXRyZWVUYWJsZVRvZ2dsZXInLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtdHJlZXRhYmxlLXRvZ2dsZXIgcC1saW5rXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiIHRhYmluZGV4PVwiLTFcIiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJyb3dOb2RlLm5vZGUubGVhZiA9PT0gZmFsc2UgfHwgKHJvd05vZGUubm9kZS5jaGlsZHJlbiAmJiByb3dOb2RlLm5vZGUuY2hpbGRyZW4ubGVuZ3RoKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0XT1cInJvd05vZGUubGV2ZWwgKiAxNiArICdweCdcIj5cclxuICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93Tm9kZS5ub2RlLmV4cGFuZGVkID8gJ3BpIHBpLWZ3IHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktZncgcGktY2hldnJvbi1yaWdodCdcIj48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5UcmVlVGFibGVUb2dnbGVyIHtcclxuICAgIEBJbnB1dCgpIHJvd05vZGU6IGFueTtcclxuICAgIHR0OiBUcmVlVGFibGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0YjogVHJlZVRhYmxlQmFzZUNvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMudHQgPSB0dGIudHJlZVRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5yb3dOb2RlLm5vZGUuZXhwYW5kZWQgPSAhdGhpcy5yb3dOb2RlLm5vZGUuZXhwYW5kZWQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJvd05vZGUubm9kZS5leHBhbmRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnR0Lm9uTm9kZUV4cGFuZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgbm9kZTogdGhpcy5yb3dOb2RlLm5vZGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnR0Lm9uTm9kZUNvbGxhcHNlLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXHJcbiAgICAgICAgICAgICAgICBub2RlOiB0aGlzLnJvd05vZGUubm9kZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudHQudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy50dC50YWJsZVNlcnZpY2Uub25VSVVwZGF0ZSh0aGlzLnR0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|