@seniorsistemas/angular-components 17.9.0 → 17.9.2
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/bundles/seniorsistemas-angular-components.umd.js +138 -21
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/info-sign/info-sign.component.d.ts +1 -0
- package/components/info-sign/info-sign.directive.d.ts +1 -0
- package/components/kanban/components/kanban-column/kanban-column.component.d.ts +2 -0
- package/components/kanban/components/kanban-item/kanban-item.component.d.ts +7 -4
- package/components/kanban/kanban.component.d.ts +7 -5
- package/components/kanban/models/index.d.ts +1 -1
- package/components/kanban/models/kanban-data.d.ts +9 -2
- package/components/tooltip/tooltip.directive.d.ts +32 -2
- package/esm2015/components/info-sign/info-sign.component.js +2 -2
- package/esm2015/components/info-sign/info-sign.directive.js +5 -1
- package/esm2015/components/kanban/components/kanban-column/kanban-column.component.js +14 -2
- package/esm2015/components/kanban/components/kanban-item/kanban-item.component.js +20 -6
- package/esm2015/components/kanban/kanban.component.js +26 -18
- package/esm2015/components/kanban/models/index.js +1 -1
- package/esm2015/components/kanban/models/kanban-data.js +1 -1
- package/esm2015/components/tooltip/tooltip.directive.js +84 -8
- package/esm5/components/info-sign/info-sign.component.js +2 -2
- package/esm5/components/info-sign/info-sign.directive.js +5 -1
- package/esm5/components/kanban/components/kanban-column/kanban-column.component.js +16 -3
- package/esm5/components/kanban/components/kanban-item/kanban-item.component.js +22 -7
- package/esm5/components/kanban/kanban.component.js +26 -18
- package/esm5/components/kanban/models/index.js +1 -1
- package/esm5/components/kanban/models/kanban-data.js +1 -1
- package/esm5/components/tooltip/tooltip.directive.js +85 -8
- package/fesm2015/seniorsistemas-angular-components.js +136 -22
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +139 -22
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { __assign, __decorate, __read, __spread } from "tslib";
|
|
2
|
-
import { moveItemInArray, transferArrayItem } from
|
|
3
|
-
import { Component, ContentChildren, EventEmitter, Input, Output } from
|
|
4
|
-
import { Subject } from
|
|
5
|
-
import { takeUntil } from
|
|
6
|
-
import { TemplateDirective } from
|
|
7
|
-
import { KanbanEventService } from
|
|
8
|
-
import { KanbanTemplateTypes } from
|
|
2
|
+
import { moveItemInArray, transferArrayItem } from "@angular/cdk/drag-drop";
|
|
3
|
+
import { Component, ContentChildren, EventEmitter, Input, Output, } from "@angular/core";
|
|
4
|
+
import { Subject } from "rxjs";
|
|
5
|
+
import { takeUntil } from "rxjs/operators";
|
|
6
|
+
import { TemplateDirective } from "../template/template.directive";
|
|
7
|
+
import { KanbanEventService } from "./kanban-event.service";
|
|
8
|
+
import { KanbanTemplateTypes } from "./models/index";
|
|
9
9
|
var KanbanComponent = /** @class */ (function () {
|
|
10
10
|
function KanbanComponent(kanbanEventService) {
|
|
11
11
|
this.kanbanEventService = kanbanEventService;
|
|
12
|
+
this.showItemCheckboxes = true;
|
|
13
|
+
this.showColumnCheckboxes = true;
|
|
12
14
|
this.itemsMoved = new EventEmitter();
|
|
13
15
|
this.dataUpdated = new EventEmitter();
|
|
14
16
|
this.itemsSelected = new EventEmitter();
|
|
@@ -68,6 +70,8 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
68
70
|
this.selectedItems.clear();
|
|
69
71
|
};
|
|
70
72
|
KanbanComponent.prototype.selectItem = function (event, item, column) {
|
|
73
|
+
if (item.disabled || item.frozen)
|
|
74
|
+
return;
|
|
71
75
|
if (event.ctrlKey) {
|
|
72
76
|
if (this.selectedItems.delete(item)) {
|
|
73
77
|
this.kanbanEventService.emitUnselectItemEvent(item);
|
|
@@ -82,6 +86,8 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
88
|
else {
|
|
89
|
+
if (this.selectedItems.delete(item))
|
|
90
|
+
return;
|
|
85
91
|
this.selectedItems.clear();
|
|
86
92
|
this.selectedItems.add(item);
|
|
87
93
|
this.selectedColumn = column;
|
|
@@ -98,9 +104,7 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
98
104
|
this.draggingItems.clear();
|
|
99
105
|
};
|
|
100
106
|
KanbanComponent.prototype.getLinkedColumns = function (currentColumn) {
|
|
101
|
-
return this.data.columns
|
|
102
|
-
.filter(function (column) { return column != currentColumn; })
|
|
103
|
-
.map(function (column) { return column.id; });
|
|
107
|
+
return this.data.columns.filter(function (column) { return column != currentColumn; }).map(function (column) { return column.id; });
|
|
104
108
|
};
|
|
105
109
|
KanbanComponent.prototype.getColumnHeaderTemplate = function () {
|
|
106
110
|
return this._getCustomTemplate(KanbanTemplateTypes.ColumnHeader);
|
|
@@ -127,7 +131,7 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
127
131
|
.pipe(takeUntil(this._unsubscribe$))
|
|
128
132
|
.subscribe(function (column) {
|
|
129
133
|
column.items
|
|
130
|
-
.filter(function (item) { return !item.disabled; })
|
|
134
|
+
.filter(function (item) { return !item.disabled && !item.frozen; })
|
|
131
135
|
.forEach(function (item) {
|
|
132
136
|
_this.selectedItems.add(item);
|
|
133
137
|
});
|
|
@@ -157,9 +161,7 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
157
161
|
});
|
|
158
162
|
});
|
|
159
163
|
});
|
|
160
|
-
this.kanbanEventService.unselectItemEvent
|
|
161
|
-
.pipe(takeUntil(this._unsubscribe$))
|
|
162
|
-
.subscribe(function (item) {
|
|
164
|
+
this.kanbanEventService.unselectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(function (item) {
|
|
163
165
|
_this.selectedItems.delete(item);
|
|
164
166
|
});
|
|
165
167
|
};
|
|
@@ -188,6 +190,12 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
188
190
|
__decorate([
|
|
189
191
|
Input()
|
|
190
192
|
], KanbanComponent.prototype, "data", void 0);
|
|
193
|
+
__decorate([
|
|
194
|
+
Input()
|
|
195
|
+
], KanbanComponent.prototype, "showItemCheckboxes", void 0);
|
|
196
|
+
__decorate([
|
|
197
|
+
Input()
|
|
198
|
+
], KanbanComponent.prototype, "showColumnCheckboxes", void 0);
|
|
191
199
|
__decorate([
|
|
192
200
|
Output()
|
|
193
201
|
], KanbanComponent.prototype, "itemsMoved", void 0);
|
|
@@ -202,12 +210,12 @@ var KanbanComponent = /** @class */ (function () {
|
|
|
202
210
|
], KanbanComponent.prototype, "templates", void 0);
|
|
203
211
|
KanbanComponent = __decorate([
|
|
204
212
|
Component({
|
|
205
|
-
selector:
|
|
206
|
-
template: "<div class=\"kanban\">\n <s-kanban-column\n *ngFor=\"let column of data.columns\"\n [data]=\"column\"\n [headerTemplate]=\"columnHeaderTemplate\">\n <div\n [id]=\"column.id\"\n style=\"height: 100%; width: 100%;\"\n cdkDropList\n #dynamicList=\"cdkDropList\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"getLinkedColumns(column)\"\n (cdkDropListDropped)=\"drop($event)\">\n\n <ng-container *ngIf=\"!columnEmptyMessageTemplate; then defaultEmptyMessageTemplate else customEmptyMessageTemplate\"></ng-container>\n\n <ng-template #defaultEmptyMessageTemplate>\n <div *ngIf=\"!column.items.length\" class=\"empty-message\">\n <p class=\"text\">\n <span class=\"fas fa-clock\"></span> \n <span>{{ \"platform.angular_components.count_items_in_target\" | translate:{ count: column.items.length, target: column.title } }}</span>\n </p>\n </div>\n </ng-template>\n\n <ng-template #customEmptyMessageTemplate>\n <ng-container *ngTemplateOutlet=\"columnEmptyMessageTemplate; context: { $implicit: column }\"></ng-container>\n </ng-template>\n\n <div\n *ngFor=\"let item of column.items\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"item.disabled\"\n (cdkDragStarted)=\"dragStarted()\"\n (cdkDragReleased)=\"dragReleased()\"\n (click)=\"selectItem($event, item, column)\">\n \n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n\n <ng-container *cdkDragPreview>\n <ng-container *ngIf=\"selectedItems.size > 1; then itemDraggingTemplate else itemTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #itemTemplate>\n <s-kanban-item\n [item]=\"item\"\n [selected]=\"selectedItems.has(item)\"\n [headerTemplate]=\"itemHeaderTemplate\"\n [bodyTemplate]=\"itemBodyTemplate\"\n [footerTemplate]=\"itemFooterTemplate\">\n </s-kanban-item>\n </ng-template>\n\n <ng-template #itemDraggingTemplate>\n <s-kanban-item-dragging [quantityItems]=\"selectedItems.size\"></s-kanban-item-dragging>\n </ng-template>\n\n <div *cdkDragPlaceholder>\n <div class=\"placeholder\">\n <div class=\"placeholder-line\"></div>\n </div>\n </div>\n </div>\n </div>\n </s-kanban-column>\n</div>\n\n",
|
|
207
|
-
styles: [".kanban{display:-ms-flexbox;display:flex;gap:16px;width:100%}.kanban .empty-message{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:16px}.kanban .empty-message .text{overflow:hidden;text-align:center;text-overflow:ellipsis;width:100%;white-space:nowrap}@media screen and (max-width:600px){.kanban{-ms-flex-direction:column;flex-direction:column}}s-kanban-column{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;min-width:292px}.placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.placeholder .placeholder-line{background-color:#a5a5b2;height:1px;margin:6px 0;width:50%}"]
|
|
213
|
+
selector: "s-kanban",
|
|
214
|
+
template: "<div class=\"kanban\">\n <s-kanban-column\n *ngFor=\"let column of data.columns\"\n [data]=\"column\"\n [showCheckbox]=\"showColumnCheckboxes\"\n [headerTemplate]=\"columnHeaderTemplate\">\n <div\n [id]=\"column.id\"\n style=\"height: 100%; width: 100%;\"\n cdkDropList\n #dynamicList=\"cdkDropList\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"getLinkedColumns(column)\"\n (cdkDropListDropped)=\"drop($event)\">\n\n <ng-container *ngIf=\"!columnEmptyMessageTemplate; then defaultEmptyMessageTemplate else customEmptyMessageTemplate\"></ng-container>\n\n <ng-template #defaultEmptyMessageTemplate>\n <div *ngIf=\"!column.items.length\" class=\"empty-message\">\n <p class=\"text\">\n <span class=\"fas fa-clock\"></span> \n <span>{{ \"platform.angular_components.count_items_in_target\" | translate:{ count: column.items.length, target: column.title } }}</span>\n </p>\n </div>\n </ng-template>\n\n <ng-template #customEmptyMessageTemplate>\n <ng-container *ngTemplateOutlet=\"columnEmptyMessageTemplate; context: { $implicit: column }\"></ng-container>\n </ng-template>\n\n <div\n *ngFor=\"let item of column.items\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"item.disabled || item.frozen\"\n (cdkDragStarted)=\"dragStarted()\"\n (cdkDragReleased)=\"dragReleased()\"\n (click)=\"selectItem($event, item, column)\">\n \n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n\n <ng-container *cdkDragPreview>\n <ng-container *ngIf=\"selectedItems.size > 1; then itemDraggingTemplate else itemTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #itemTemplate>\n <s-kanban-item\n [item]=\"item\"\n [selected]=\"selectedItems.has(item)\"\n [showCheckbox]=\"showItemCheckboxes\"\n [headerTemplate]=\"itemHeaderTemplate\"\n [bodyTemplate]=\"itemBodyTemplate\"\n [footerTemplate]=\"itemFooterTemplate\">\n </s-kanban-item>\n </ng-template>\n\n <ng-template #itemDraggingTemplate>\n <s-kanban-item-dragging [quantityItems]=\"selectedItems.size\"></s-kanban-item-dragging>\n </ng-template>\n\n <div *cdkDragPlaceholder>\n <div class=\"placeholder\">\n <div class=\"placeholder-line\"></div>\n </div>\n </div>\n </div>\n </div>\n </s-kanban-column>\n</div>\n\n",
|
|
215
|
+
styles: [".kanban{display:-ms-flexbox;display:flex;gap:16px;overflow:auto;width:100%}.kanban .empty-message{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:16px}.kanban .empty-message .text{overflow:hidden;text-align:center;text-overflow:ellipsis;width:100%;white-space:nowrap}@media screen and (max-width:600px){.kanban{-ms-flex-direction:column;flex-direction:column}}s-kanban-column{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;min-width:292px}.placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.placeholder .placeholder-line{background-color:#a5a5b2;height:1px;margin:6px 0;width:50%}"]
|
|
208
216
|
})
|
|
209
217
|
], KanbanComponent);
|
|
210
218
|
return KanbanComponent;
|
|
211
219
|
}());
|
|
212
220
|
export { KanbanComponent };
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFFckosT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUE2RCxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2hIO0lBMkJJLHlCQUNxQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXZCcEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBR3JELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUc3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBR2pELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7UUFRckMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXhDLENBQUM7SUFFRSxrQ0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxD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LEFBNU9ELElBNE9DO1NBNU9ZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLYW5iYW5FdmVudFNlcnZpY2UgfSBmcm9tICcuL2thbmJhbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEthbmJhbkNvbHVtbiwgS2FuYmFuRGF0YSwgS2FuYmFuSXRlbSwgS2FuYmFuSXRlbU1vdmVkRGF0YSwgS2FuYmFuVGVtcGxhdGVUeXBlcyB9IGZyb20gJy4vbW9kZWxzL2luZGV4JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWthbmJhbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4va2FuYmFuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhOiBLYW5iYW5EYXRhO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1Nb3ZlZERhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0YVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkRhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXRlbXNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuSXRlbVtdPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG4gICAgcHVibGljIGRyYWdnaW5nSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG5cbiAgICBwdWJsaWMgY29sdW1uSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Cb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Gb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBrYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSxcbiAgICApIHsgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplRGF0YSgpO1xuICAgICAgICB0aGlzLl92YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fZ2V0VGVtcGxhdGVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8S2FuYmFuSXRlbVtdPik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGhpcy5kYXRhLmNvbHVtbnMuZmluZCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCA9PT0gZXZlbnQuY29udGFpbmVyLmlkKTtcblxuICAgICAgICBpZiAoIXByZXZpb3VzQ29sdW1uIHx8ICF0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgY29sdW1ucyB3aGVuIHBlcmZvcm1pbmcgZHJhZyBhbmQgZHJvcFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSAmJiBpdGVtICE9PSBldmVudC5pdGVtLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChldmVudC5pdGVtLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuaXRlbXNNb3ZlZC5lbWl0KHtcbiAgICAgICAgICAgIGl0ZW1zOiBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSxcbiAgICAgICAgICAgIHByZXZpb3VzQ29sdW1uLFxuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5kYXRhVXBkYXRlZC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhVXBkYXRlZC5lbWl0KHsgLi4udGhpcy5kYXRhIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQoY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RJdGVtKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBLYW5iYW5JdGVtLCBjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0VW5zZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1uICYmICF0aGlzLnNlbGVjdGVkQ29sdW1uLml0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRTZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1JlbGVhc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGlua2VkQ29sdW1ucyhjdXJyZW50Q29sdW1uOiBLYW5iYW5Db2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5jb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uICE9IGN1cnJlbnRDb2x1bW4pXG4gICAgICAgICAgICAubWFwKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkhlYWRlcilcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uRW1wdHlNZXNzYWdlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkVtcHR5TWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1IZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVRlbXBsYXRlKEthbmJhblRlbXBsYXRlVHlwZXMuSXRlbUhlYWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1Cb2R5VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkl0ZW1Cb2R5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5JdGVtRm9vdGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRDdXN0b21UZW1wbGF0ZSh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlOiBUZW1wbGF0ZURpcmVjdGl2ZSkgPT4gdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk/LnRlbXBsYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2Uuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtOiBLYW5iYW5JdGVtKSA9PiAhaXRlbS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gJiYgIXRoaXMuc2VsZWN0ZWRDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuXG4gICAgICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgaXRlbSBjb2x1bW4gYW5kIHNldHRpbmcgc2VsZWN0ZWRDb2x1bW4uXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLml0ZW1zLmZvckVhY2goKGN1cnJlbnRJdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS51bnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uaWQgPSBjb2x1bW4uaWQgfHwgYGlkLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCk7XG5cbiAgICAgICAgaWYgKG5ldyBTZXQoY29sdW1uSWRzKS5zaXplICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVwZWF0ZWQgSURzIGFyZSBub3QgYWNjZXB0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlclRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1IZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJvZHlUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1Gb290ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk7XG4gICAgfVxufVxuIl19
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUE2RCxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2hIO0lBaUNJLHlCQUE2QixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTVCNUQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRzFCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUc1QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFHckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRzdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFHakQsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBYyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQVFyQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFJMEIsQ0FBQztJQUVoRSxrQ0FBUSxHQUFmO1FBQ0ks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RUFBRTtpRUFDMkI7SUFHbkM7UUFEQyxNQUFNLEVBQUU7dURBQ21EO0lBRzVEO1FBREMsTUFBTSxFQUFFO3dEQUMyQztJQUdwRDtRQURDLE1BQU0sRUFBRTswREFDK0M7SUFjcEI7UUFBbkMsZUFBZSxDQUFDLGlCQUFpQixDQUFDO3NEQUF5QztJQS9CbkUsZUFBZTtRQUwzQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsVUFBVTtZQUNwQixpbEZBQXNDOztTQUV6QyxDQUFDO09BQ1csZUFBZSxDQThOM0I7SUFBRCxzQkFBQztDQUFBLEFBOU5ELElBOE5DO1NBOU5ZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IEthbmJhbkV2ZW50U2VydmljZSB9IGZyb20gXCIuL2thbmJhbi1ldmVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkRhdGEsIEthbmJhbkl0ZW0sIEthbmJhbkl0ZW1Nb3ZlZERhdGEsIEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9tb2RlbHMvaW5kZXhcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1rYW5iYW5cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2thbmJhbi5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9rYW5iYW4uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhOiBLYW5iYW5EYXRhO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0l0ZW1DaGVja2JveGVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dDb2x1bW5DaGVja2JveGVzID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpdGVtc01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5JdGVtTW92ZWREYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGFVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5EYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1bXT4oKTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZENvbHVtbjogS2FuYmFuQ29sdW1uO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gbmV3IFNldDxLYW5iYW5JdGVtPigpO1xuICAgIHB1YmxpYyBkcmFnZ2luZ0l0ZW1zID0gbmV3IFNldDxLYW5iYW5JdGVtPigpO1xuXG4gICAgcHVibGljIGNvbHVtbkhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBjb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwdWJsaWMgaXRlbUhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtQm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtRm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBrYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZURhdGEoKTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuX2dldFRlbXBsYXRlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEthbmJhbkl0ZW1bXT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW4gPSB0aGlzLmRhdGEuY29sdW1ucy5maW5kKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCk7XG4gICAgICAgIGNvbnN0IHRhcmdldENvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGV2ZW50LmNvbnRhaW5lci5pZCk7XG5cbiAgICAgICAgaWYgKCFwcmV2aW91c0NvbHVtbiB8fCAhdGFyZ2V0Q29sdW1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbnMgd2hlbiBwZXJmb3JtaW5nIGRyYWcgYW5kIGRyb3BcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSAmJiBpdGVtICE9PSBldmVudC5pdGVtLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIHByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIHByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGV2ZW50Lml0ZW0uZGF0YSk7XG5cbiAgICAgICAgdGhpcy5pdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgICAgaXRlbXM6IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdLFxuICAgICAgICAgICAgcHJldmlvdXNDb2x1bW4sXG4gICAgICAgICAgICB0YXJnZXRDb2x1bW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmRhdGFVcGRhdGVkLm9ic2VydmVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmRhdGEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGEuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudChjb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEl0ZW0oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEthbmJhbkl0ZW0sIGNvbHVtbjogS2FuYmFuQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkIHx8IGl0ZW0uZnJvemVuKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuZGVsZXRlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbHVtbiAmJiAhdGhpcy5zZWxlY3RlZENvbHVtbi5pdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFNlbGVjdEl0ZW1FdmVudChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuZGVsZXRlKGl0ZW0pKSByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChpdGVtKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRyYWdTdGFydGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ0l0ZW1zLmFkZChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyYWdSZWxlYXNlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0l0ZW1zLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmtlZENvbHVtbnMoY3VycmVudENvbHVtbjogS2FuYmFuQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuY29sdW1ucy5maWx0ZXIoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4gIT0gY3VycmVudENvbHVtbikubWFwKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkhlYWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5Db2x1bW5FbXB0eU1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkl0ZW1IZWFkZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtQm9keVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5JdGVtQm9keSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1Gb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVRlbXBsYXRlKEthbmJhblRlbXBsYXRlVHlwZXMuSXRlbUZvb3Rlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q3VzdG9tVGVtcGxhdGUodHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcy5maW5kKCh0ZW1wbGF0ZTogVGVtcGxhdGVEaXJlY3RpdmUpID0+IHRlbXBsYXRlLnR5cGUgPT09IHR5cGUpPy50ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbHVtbi5pdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IEthbmJhbkl0ZW0pID0+ICFpdGVtLmRpc2FibGVkICYmICFpdGVtLmZyb3plbilcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNTZWxlY3RlZC5lbWl0KFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gJiYgIXRoaXMuc2VsZWN0ZWRDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuXG4gICAgICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgaXRlbSBjb2x1bW4gYW5kIHNldHRpbmcgc2VsZWN0ZWRDb2x1bW4uXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLml0ZW1zLmZvckVhY2goKGN1cnJlbnRJdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS51bnNlbGVjdEl0ZW1FdmVudC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uaWQgPSBjb2x1bW4uaWQgfHwgYGlkLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCk7XG5cbiAgICAgICAgaWYgKG5ldyBTZXQoY29sdW1uSWRzKS5zaXplICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVwZWF0ZWQgSURzIGFyZSBub3QgYWNjZXB0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlclRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1IZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJvZHlUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1Gb290ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { KanbanTemplateTypes } from "./kanban-template-types";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2FuYmFuRGF0YSwgS2FuYmFuQ29sdW1uLCBLYW5iYW5JdGVtLCBLYW5iYW5JdGVtTW92ZWREYXRhLCBLYW5iYW5JdGVtT3B0aW9uIH0gZnJvbSBcIi4va2FuYmFuLWRhdGFcIjtcbmV4cG9ydCB7IEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9rYW5iYW4tdGVtcGxhdGUtdHlwZXNcIjtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2thbmJhbi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaWVyZWRNZW51SXRlbURhdGEgfSBmcm9tIFwiLi4vLi4vdGllcmVkLW1lbnUvbW9kZWxzL3RpZXJlZC1tZW51LWl0ZW0tZGF0YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkRhdGEge1xuICAgIGNvbHVtbnM6IEthbmJhbkNvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdO1xuICAgIG9wdGlvbnM/
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2thbmJhbi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaWVyZWRNZW51SXRlbURhdGEgfSBmcm9tIFwiLi4vLi4vdGllcmVkLW1lbnUvbW9kZWxzL3RpZXJlZC1tZW51LWl0ZW0tZGF0YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkRhdGEge1xuICAgIGNvbHVtbnM6IEthbmJhbkNvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdO1xuICAgIG9wdGlvbnM/OiBLYW5iYW5Db2x1bW5PcHRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtIHtcbiAgICBvcHRpb25zPzogS2FuYmFuSXRlbU9wdGlvbltdO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBmcm96ZW4/OiBib29sZWFuO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtTW92ZWREYXRhIHtcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdLFxuICAgIHByZXZpb3VzQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgdGFyZ2V0Q29sdW1uOiBLYW5iYW5Db2x1bW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2FuYmFuQ29sdW1uT3B0aW9uIGV4dGVuZHMgT21pdDxUaWVyZWRNZW51SXRlbURhdGEsICdjb21tYW5kJz4ge1xuICAgIGNvbW1hbmQ6IChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtT3B0aW9uIGV4dGVuZHMgT21pdDxUaWVyZWRNZW51SXRlbURhdGEsICdjb21tYW5kJz4ge1xuICAgIGNvbW1hbmQ6IChpdGVtOiBLYW5iYW5JdGVtKSA9PiB2b2lkO1xufVxuIl19
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, EmbeddedViewRef, HostListener, Injector, Input, OnDestroy, OnInit } from "@angular/core";
|
|
2
|
+
import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, EmbeddedViewRef, HostListener, Injector, Input, OnDestroy, OnInit, Renderer2 } from "@angular/core";
|
|
3
3
|
import { DebounceUtils } from "../utils/debouce";
|
|
4
4
|
import { MobileBehavior, TooltipEvent, TooltipPosition } from "./models";
|
|
5
5
|
import { TooltipComponent } from "./tooltip.component";
|
|
6
6
|
var TooltipDirective = /** @class */ (function () {
|
|
7
|
-
function TooltipDirective(elementRef, appRef, componentFactoryResolver, injector, debounceUtils) {
|
|
7
|
+
function TooltipDirective(elementRef, appRef, componentFactoryResolver, injector, debounceUtils, renderer) {
|
|
8
8
|
var _this = this;
|
|
9
9
|
this.elementRef = elementRef;
|
|
10
10
|
this.appRef = appRef;
|
|
11
11
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
12
12
|
this.injector = injector;
|
|
13
13
|
this.debounceUtils = debounceUtils;
|
|
14
|
+
this.renderer = renderer;
|
|
14
15
|
this.position = TooltipPosition.Top;
|
|
15
16
|
this.showDelay = 500;
|
|
16
17
|
this.tooltipEvent = TooltipEvent.Hover;
|
|
@@ -23,6 +24,7 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
23
24
|
}
|
|
24
25
|
TooltipDirective.prototype.ngOnInit = function () {
|
|
25
26
|
this.validatePosition();
|
|
27
|
+
this.updateTooltipVisibilityWhenFocusOnInput();
|
|
26
28
|
};
|
|
27
29
|
TooltipDirective.prototype.ngOnDestroy = function () {
|
|
28
30
|
this.destroy();
|
|
@@ -46,6 +48,59 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
46
48
|
TooltipDirective.prototype.isMousePositionOutsideOfElement = function (mouseX, mouseY, elementArea) {
|
|
47
49
|
return mouseX < elementArea.left || mouseX >= elementArea.right || mouseY < elementArea.top || mouseY >= elementArea.bottom;
|
|
48
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Manipula a visibilidade do tooltip quando houver uma referência de input.
|
|
53
|
+
*/
|
|
54
|
+
TooltipDirective.prototype.updateTooltipVisibilityWhenFocusOnInput = function () {
|
|
55
|
+
var _this = this;
|
|
56
|
+
if (this.focusedInputRef) {
|
|
57
|
+
var inputFocus = this.focusedInputRef;
|
|
58
|
+
var icon_1 = this.getIconFromFocusedInput(inputFocus);
|
|
59
|
+
this.renderer.listen(inputFocus, 'focus', function () {
|
|
60
|
+
if (icon_1 && _this.isMatchingTooltip(icon_1)) {
|
|
61
|
+
_this.createTootipByFocus(icon_1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
this.renderer.listen(inputFocus, 'blur', function () {
|
|
65
|
+
if (icon_1 && _this.isMatchingTooltip(icon_1)) {
|
|
66
|
+
_this.removeTooltip(icon_1);
|
|
67
|
+
_this.destroy();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Obtém o elemento do ícone associado ao label do input em focus.
|
|
74
|
+
* @param focusedInput O input em focus.
|
|
75
|
+
* @returns O ícone do input em focus ou null.
|
|
76
|
+
*/
|
|
77
|
+
TooltipDirective.prototype.getIconFromFocusedInput = function (focusedInput) {
|
|
78
|
+
var label = document.querySelector("label[for='" + focusedInput.id + "']");
|
|
79
|
+
if (label) {
|
|
80
|
+
var icon = label.nextElementSibling;
|
|
81
|
+
return (icon === null || icon === void 0 ? void 0 : icon.classList.contains('info-sign__icon')) ? icon : null;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Verifica se o ícone tem o tooltip correspondente ao atual.
|
|
87
|
+
* @param icon O ícone do input em focus.
|
|
88
|
+
* @returns true se o tooltip corresponde; caso contrário, false.
|
|
89
|
+
*/
|
|
90
|
+
TooltipDirective.prototype.isMatchingTooltip = function (icon) {
|
|
91
|
+
var tooltipText = icon.getAttribute('ng-reflect-tooltip');
|
|
92
|
+
return this.tooltip === tooltipText;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Remove o tooltip associado ao ícone do input em focus.
|
|
96
|
+
* @param icon O ícone do input em focus.
|
|
97
|
+
*/
|
|
98
|
+
TooltipDirective.prototype.removeTooltip = function (icon) {
|
|
99
|
+
var tooltip = icon.querySelector('.tooltip');
|
|
100
|
+
if (tooltip) {
|
|
101
|
+
tooltip.remove();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
49
104
|
// whenever the component with the tooltip is clicked I destroy the tooltip.
|
|
50
105
|
// whenever a key is pressed on the component with the tooltip I destroy the tooltip.
|
|
51
106
|
TooltipDirective.prototype.onClick = function () {
|
|
@@ -110,10 +165,7 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
110
165
|
TooltipDirective.prototype.createTootip = function () {
|
|
111
166
|
var _a;
|
|
112
167
|
if (this.componentRef === null && ((_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
113
|
-
var
|
|
114
|
-
this.componentRef = componentFactory.create(this.injector);
|
|
115
|
-
this.appRef.attachView(this.componentRef.hostView);
|
|
116
|
-
var domElem = this.componentRef.hostView.rootNodes[0];
|
|
168
|
+
var domElem = this.getDomElement();
|
|
117
169
|
document.body.appendChild(domElem);
|
|
118
170
|
this.setTooltipComponentProperties();
|
|
119
171
|
this.showTimeout = window.setTimeout(this.showTooltip.bind(this), this.showDelay);
|
|
@@ -123,6 +175,27 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
123
175
|
}
|
|
124
176
|
}
|
|
125
177
|
};
|
|
178
|
+
TooltipDirective.prototype.getDomElement = function () {
|
|
179
|
+
var componentFactory = this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);
|
|
180
|
+
this.componentRef = componentFactory.create(this.injector);
|
|
181
|
+
this.appRef.attachView(this.componentRef.hostView);
|
|
182
|
+
return this.componentRef.hostView.rootNodes[0];
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Cria um tooltip para o icone do input em focus.
|
|
186
|
+
*
|
|
187
|
+
* @param icon O ícone do input em focus.
|
|
188
|
+
*/
|
|
189
|
+
TooltipDirective.prototype.createTootipByFocus = function (icon) {
|
|
190
|
+
var _a;
|
|
191
|
+
if (this.componentRef === null && ((_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
192
|
+
var domElem = this.getDomElement();
|
|
193
|
+
var tooltip_1 = domElem.querySelector('.tooltip');
|
|
194
|
+
icon.appendChild(tooltip_1);
|
|
195
|
+
this.setTooltipComponentProperties();
|
|
196
|
+
setTimeout(function () { return tooltip_1.classList.add("tooltip--visible"); }, 0);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
126
199
|
TooltipDirective.prototype.showTooltip = function () {
|
|
127
200
|
if (this.componentRef !== null) {
|
|
128
201
|
this.componentRef.instance.visible = this.visible;
|
|
@@ -240,7 +313,8 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
240
313
|
{ type: ApplicationRef },
|
|
241
314
|
{ type: ComponentFactoryResolver },
|
|
242
315
|
{ type: Injector },
|
|
243
|
-
{ type: DebounceUtils }
|
|
316
|
+
{ type: DebounceUtils },
|
|
317
|
+
{ type: Renderer2 }
|
|
244
318
|
]; };
|
|
245
319
|
__decorate([
|
|
246
320
|
Input("sTooltip")
|
|
@@ -266,6 +340,9 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
266
340
|
__decorate([
|
|
267
341
|
Input()
|
|
268
342
|
], TooltipDirective.prototype, "mobileBehavior", void 0);
|
|
343
|
+
__decorate([
|
|
344
|
+
Input()
|
|
345
|
+
], TooltipDirective.prototype, "focusedInputRef", void 0);
|
|
269
346
|
__decorate([
|
|
270
347
|
HostListener("click"),
|
|
271
348
|
HostListener("keydown")
|
|
@@ -300,4 +377,4 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
300
377
|
return TooltipDirective;
|
|
301
378
|
}());
|
|
302
379
|
export { TooltipDirective };
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0osY0FBYyxFQUNkLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTXZEO0lBZ0NHLDBCQUNvQixVQUFzQixFQUN0QixNQUFzQixFQUN0Qix3QkFBa0QsRUFDbEQsUUFBa0IsRUFDbEIsYUFBNEI7UUFMaEQsaUJBU0M7UUFSbUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFoQ3pDLGFBQVEsR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUdoRCxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBTWhCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUdsQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsWUFBTyxHQUFHLElBQUksQ0FBQztRQUdmLG1CQUFjLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUV4QyxpQkFBWSxHQUFzQixJ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QyxTQUFTLENBQUM7bURBT3ZCO0lBSUQ7UUFEQyxZQUFZLENBQUMscUJBQXFCLENBQUM7Z0VBS25DO0lBR0Q7UUFEQyxZQUFZLENBQUMsT0FBTyxDQUFDO21EQUtyQjtJQUdEO1FBREMsWUFBWSxDQUFDLE1BQU0sQ0FBQztrREFLcEI7SUFHRDtRQURDLFlBQVksQ0FBQyxZQUFZLENBQUM7d0RBSzFCO0lBSUQ7UUFGQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUM7d0RBS3JCO0lBR0Q7UUFEQyxZQUFZLENBQUMsWUFBWSxDQUFDO3dEQVMxQjtJQUdEO1FBREMsWUFBWSxDQUFDLFVBQVUsQ0FBQztzREFReEI7SUE5SVMsZ0JBQWdCO1FBSDVCLFNBQVMsQ0FBQztZQUNSLFFBQVEsRUFBRSxZQUFZO1NBQ3hCLENBQUM7T0FDVyxnQkFBZ0IsQ0F3VDVCO0lBQUQsdUJBQUM7Q0FBQSxBQXhURCxJQXdUQztTQXhUWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgQXBwbGljYXRpb25SZWYsXG4gICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICBDb21wb25lbnRSZWYsXG4gICBEaXJlY3RpdmUsXG4gICBFbGVtZW50UmVmLFxuICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgSG9zdExpc3RlbmVyLFxuICAgSW5qZWN0b3IsXG4gICBJbnB1dCxcbiAgIE9uRGVzdHJveSxcbiAgIE9uSW5pdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGVib3VuY2VVdGlscyB9IGZyb20gXCIuLi91dGlscy9kZWJvdWNlXCI7XG5pbXBvcnQgeyBNb2JpbGVCZWhhdmlvciwgVG9vbHRpcEV2ZW50LCBUb29sdGlwUG9zaXRpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudEFyZWEgfSBmcm9tIFwiLi9tb2RlbHMvZWxlbWVudC1hcmVhXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgc2VsZWN0b3I6IFwiW3NUb29sdGlwXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgQElucHV0KFwic1Rvb2x0aXBcIilcbiAgIHB1YmxpYyB0b29sdGlwOiBzdHJpbmc7XG5cbiAgIEBJbnB1dChcInRvb2x0aXBQb3NpdGlvblwiKVxuICAgcHVibGljIHBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHNob3dEZWxheSA9IDUwMDtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBkaXNwbGF5VGltZTogbnVtYmVyO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHRvb2x0aXBFdmVudCA9IFRvb2x0aXBFdmVudC5Ib3ZlcjtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBlc2NhcGUgPSBmYWxzZTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBtb2JpbGVCZWhhdmlvciA9IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nO1xuXG4gICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICAgcHJpdmF0ZSBzaG93VGltZW91dD86IG51bWJlcjtcbiAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgcHJpdmF0ZSB0b29sdGlwRGl2RWxlbWVudD86IEhUTUxFbGVtZW50O1xuICAgcHJpdmF0ZSByZWFkb25seSBib3VuZE9uV2luZG93TW91c2VNb3ZlRnVuY3Rpb246IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb246ICgpID0+IHZvaWQ7XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVV0aWxzOiBEZWJvdW5jZVV0aWxzXG4gICApIHtcbiAgICAgIHRoaXMuYm91bmRPbldpbmRvd01vdXNlTW92ZUZ1bmN0aW9uID0gdGhpcy5vbldpbmRvd01vdXNlTW92ZS5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy5kZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbiA9IHRoaXMuZGVib3VuY2VVdGlscy5kZWJvdW5jZUxlYWRpbmcoKCkgPT4gdGhpcy5jcmVhdGVUb290aXAoKSk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMudmFsaWRhdGVQb3NpdGlvbigpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBvbldpbmRvd01vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvb2xUaXBSZWN0ID0gdGhpcy50b29sdGlwRGl2RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgY29uc3QgdG90YWxFbGVtZW50QXJlYSA9IHtcbiAgICAgICAgIHRvcDogTWF0aC5taW4oZWxlbWVudFJlY3QudG9wLCB0b29sVGlwUmVjdC50b3ApLFxuICAgICAgICAgcmlnaHQ6IE1hdGgubWF4KGVsZW1lbnRSZWN0LnJpZ2h0LCB0b29sVGlwUmVjdC5yaWdodCksXG4gICAgICAgICBsZWZ0OiBNYXRoLm1pbihlbGVtZW50UmVjdC5sZWZ0LCB0b29sVGlwUmVjdC5sZWZ0KSxcbiAgICAgICAgIGJvdHRvbTogTWF0aC5tYXgoZWxlbWVudFJlY3QuYm90dG9tLCB0b29sVGlwUmVjdC5ib3R0b20pXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5pc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFksIHRvdGFsRWxlbWVudEFyZWEpKSB7XG4gICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBpc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50KG1vdXNlWDogbnVtYmVyLCBtb3VzZVk6IG51bWJlciwgZWxlbWVudEFyZWE6IEVsZW1lbnRBcmVhKSB7XG4gICAgICByZXR1cm4gbW91c2VYIDwgZWxlbWVudEFyZWEubGVmdCB8fCBtb3VzZVggPj0gZWxlbWVudEFyZWEucmlnaHQgfHwgbW91c2VZIDwgZWxlbWVudEFyZWEudG9wIHx8IG1vdXNlWSA+PSBlbGVtZW50QXJlYS5ib3R0b207XG4gICB9XG5cbiAgIC8vIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgdG9vbHRpcCBpcyBjbGlja2VkIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgIC8vIHdoZW5ldmVyIGEga2V5IGlzIHByZXNzZWQgb24gdGhlIGNvbXBvbmVudCB3aXRoIHRoZSB0b29sdGlwIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxuICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIilcbiAgIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIgJiZcbiAgICAgICAgICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpICYmXG4gICAgICAgICAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBob25lL2kpKSB7XG4gICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgIH1cblxuICAgLy8gd2hlbmV2ZXIgeW91IHRvdWNoIG91dHNpZGUgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSB0b29sdGlwIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDp0b3VjaHN0YXJ0XCIpXG4gICBwdWJsaWMgb25Eb2N1bWVudFRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Ib3Zlcikge1xuICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB9XG4gICB9XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJmb2N1c1wiKVxuICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Gb2N1cykge1xuICAgICAgICAgdGhpcy5jcmVhdGVUb290aXAoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIilcbiAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Gb2N1cykge1xuICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB9XG4gICB9XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIpXG4gICBwdWJsaWMgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24oKTtcbiAgICAgIH1cbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIilcbiAgIEBIb3N0TGlzdGVuZXIoXCJ3aGVlbFwiKVxuICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcInRvdWNoc3RhcnRcIilcbiAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Ib3Zlcikge1xuICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUb290aXAuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMubW9iaWxlQmVoYXZpb3IgPT09IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nID8gdGhpcy5zaG93RGVsYXkgOiAwXG4gICAgICAgICApO1xuICAgICAgfVxuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwidG91Y2hlbmRcIilcbiAgIHB1YmxpYyBvblRvdWNoRW5kKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgIGlmICh0aGlzLm1vYmlsZUJlaGF2aW9yID09PSBNb2JpbGVCZWhhdmlvci5QcmVzc2luZykge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSB2YWxpZGF0ZVBvc2l0aW9uKCkge1xuICAgICAgY29uc3QgY29udGFpbnNQb3NpdGlvbiA9IFtcbiAgICAgICAgIFRvb2x0aXBQb3NpdGlvbi5Ub3AsXG4gICAgICAgICBUb29sdGlwUG9zaXRpb24uUmlnaHQsXG4gICAgICAgICBUb29sdGlwUG9zaXRpb24uQm90dG9tLFxuICAgICAgICAgVG9vbHRpcFBvc2l0aW9uLkxlZnQsXG4gICAgICBdLmluY2x1ZGVzKHRoaXMucG9zaXRpb24pO1xuXG4gICAgICBpZiAoIWNvbnRhaW5zUG9zaXRpb24pIHtcbiAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb29sdGlwICR7dGhpcy5wb3NpdGlvbn0gcG9zaXRpb24gaXMgdW5leHBlY3RlZGApO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGNyZWF0ZVRvb3RpcCgpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiA9PT0gbnVsbCAmJiB0aGlzLnRvb2x0aXA/Lmxlbmd0aCkge1xuICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgY29uc3QgZG9tRWxlbSA9ICh0aGlzLmNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgICAgIHRoaXMuc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgIHRoaXMuc2hvd1RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLnNob3dUb29sdGlwLmJpbmQodGhpcyksIHRoaXMuc2hvd0RlbGF5KTtcblxuICAgICAgICAgdGhpcy50b29sdGlwRGl2RWxlbWVudCA9IGRvbUVsZW0ucXVlcnlTZWxlY3RvcignLnRvb2x0aXAnKTtcblxuICAgICAgICAgaWYgKHRoaXMuZGlzcGxheVRpbWUpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuZGVzdHJveS5iaW5kKHRoaXMpLCB0aGlzLmRpc3BsYXlUaW1lKTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBzaG93VG9vbHRpcCgpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmlzaWJsZSA9IHRoaXMudmlzaWJsZTtcblxuICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuYm91bmRPbldpbmRvd01vdXNlTW92ZUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBzZXRUb29sdGlwQ29tcG9uZW50UHJvcGVydGllcygpIHtcbiAgICAgIGNvbnN0IG1hcmdpbiA9IDIwO1xuICAgICAgY29uc3QgYW5jaG9yU2l6ZSA9IDU7XG5cbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9vbHRpcCA9IHRoaXMudG9vbHRpcDtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmVzY2FwZSA9IHRoaXMuZXNjYXBlO1xuXG4gICAgICAgICBjb25zdCB7IGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSB9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgIGNvbnN0IHRvb2x0aXBIZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICBjb25zdCB0b29sdGlwV2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICBjb25zdCBzYWZlU3BhY2UgPSAxNTA7XG5cbiAgICAgICAgIGxldCBwb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICAgICBjb25zdCBpbnZhbGlkT3B0aW9uczogVG9vbHRpcFBvc2l0aW9uW10gPSBbXTtcblxuICAgICAgICAgd2hpbGUgKCFwb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBpZiAoaW52YWxpZE9wdGlvbnMuaW5jbHVkZXMoVG9vbHRpcFBvc2l0aW9uLlRvcClcbiAgICAgICAgICAgICAgICYmIGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5Cb3R0b20pXG4gICAgICAgICAgICAgICAmJiBpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uTGVmdClcbiAgICAgICAgICAgICAgICYmIGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5SaWdodCkpIHtcbiAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3BhY2UgdG8gc2hvdyB0b29sdGlwXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLlRvcDoge1xuICAgICAgICAgICAgICAgICAgaWYgKGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5Ub3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLkxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgdG9wU2hpZnQgPSB0b3A7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0b3BTaGlmdCA8PSB0b29sdGlwSGVpZ2h0ICsgc2FmZVNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLkJvdHRvbTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRPcHRpb25zLnB1c2goVG9vbHRpcFBvc2l0aW9uLlRvcCk7XG4gICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQodG9vbHRpcFdpZHRoIC8gMiArIGxlZnQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gTWF0aC5yb3VuZCh0b3AgLSBtYXJnaW4gLSBhbmNob3JTaXplKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5Cb3R0b206IHtcblxuICAgICAgICAgICAgICAgICAgaWYgKGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5Cb3R0b20pKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLkxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgYm90dG9tU2hpZnQgPSBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCAtIGJvdHRvbTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGJvdHRvbVNoaWZ0IDw9IHRvb2x0aXBIZWlnaHQgKyBzYWZlU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaChUb29sdGlwUG9zaXRpb24uQm90dG9tKTtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gTWF0aC5yb3VuZCh0b29sdGlwV2lkdGggLyAyICsgbGVmdCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKGJvdHRvbSArIG1hcmdpbik7XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uTGVmdDoge1xuICAgICAgICAgICAgICAgICAgaWYgKGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5MZWZ0KSkge1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdFNoaWZ0ID0gbGVmdDtcblxuICAgICAgICAgICAgICAgICAgaWYgKGxlZnRTaGlmdCA8PSB0b29sdGlwV2lkdGggKyBzYWZlU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uUmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT3B0aW9ucy5wdXNoKFRvb2x0aXBQb3NpdGlvbi5MZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gTWF0aC5yb3VuZChsZWZ0IC0gbWFyZ2luKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQodG9wICsgdG9vbHRpcEhlaWdodCAvIDIgLSBhbmNob3JTaXplKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5SaWdodDoge1xuICAgICAgICAgICAgICAgICAgaWYgKGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5SaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0U2hpZnQgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIC0gcmlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChyaWdodFNoaWZ0IDw9IHRvb2x0aXBXaWR0aCArIHNhZmVTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5MZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaChUb29sdGlwUG9zaXRpb24uUmlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHJpZ2h0ICsgbWFyZ2luKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQodG9wICsgdG9vbHRpcEhlaWdodCAvIDIgLSBhbmNob3JTaXplKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgIHRoaXMudG9vbHRpcERpdkVsZW1lbnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZE9uV2luZG93TW91c2VNb3ZlRnVuY3Rpb24pO1xuICAgfVxufVxuIl19
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0osY0FBYyxFQUNkLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU12RDtJQW1DRywwQkFDb0IsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsd0JBQWtELEVBQ2xELFFBQWtCLEVBQ2xCLGFBQTRCLEVBQzVCLFFBQW1CO1FBTnZDLGlCQVVDO1FBVG1CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQ2hDLGFBQVEsR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUdoRCxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBTWhCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUdsQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsWUFBTyxHQUFHLElBQUksQ0FBQztRQUdmLG1C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ekM7UUFGQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JCLFlBQVksQ0FBQyxTQUFTLENBQUM7bURBT3ZCO0lBSUQ7UUFEQyxZQUFZLENBQUMscUJBQXFCLENBQUM7Z0VBS25DO0lBR0Q7UUFEQyxZQUFZLENBQUMsT0FBTyxDQUFDO21EQUtyQjtJQUdEO1FBREMsWUFBWSxDQUFDLE1BQU0sQ0FBQztrREFLcEI7SUFHRDtRQURDLFlBQVksQ0FBQyxZQUFZLENBQUM7d0RBSzFCO0lBSUQ7UUFGQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUM7d0RBS3JCO0lBR0Q7UUFEQyxZQUFZLENBQUMsWUFBWSxDQUFDO3dEQVMxQjtJQUdEO1FBREMsWUFBWSxDQUFDLFVBQVUsQ0FBQztzREFReEI7SUE1TVMsZ0JBQWdCO1FBSDVCLFNBQVMsQ0FBQztZQUNSLFFBQVEsRUFBRSxZQUFZO1NBQ3hCLENBQUM7T0FDVyxnQkFBZ0IsQ0EwWTVCO0lBQUQsdUJBQUM7Q0FBQSxBQTFZRCxJQTBZQztTQTFZWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgQXBwbGljYXRpb25SZWYsXG4gICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICBDb21wb25lbnRSZWYsXG4gICBEaXJlY3RpdmUsXG4gICBFbGVtZW50UmVmLFxuICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgSG9zdExpc3RlbmVyLFxuICAgSW5qZWN0b3IsXG4gICBJbnB1dCxcbiAgIE9uRGVzdHJveSxcbiAgIE9uSW5pdCxcbiAgIFJlbmRlcmVyMlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGVib3VuY2VVdGlscyB9IGZyb20gXCIuLi91dGlscy9kZWJvdWNlXCI7XG5pbXBvcnQgeyBNb2JpbGVCZWhhdmlvciwgVG9vbHRpcEV2ZW50LCBUb29sdGlwUG9zaXRpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudEFyZWEgfSBmcm9tIFwiLi9tb2RlbHMvZWxlbWVudC1hcmVhXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgc2VsZWN0b3I6IFwiW3NUb29sdGlwXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgQElucHV0KFwic1Rvb2x0aXBcIilcbiAgIHB1YmxpYyB0b29sdGlwOiBzdHJpbmc7XG5cbiAgIEBJbnB1dChcInRvb2x0aXBQb3NpdGlvblwiKVxuICAgcHVibGljIHBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHNob3dEZWxheSA9IDUwMDtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBkaXNwbGF5VGltZTogbnVtYmVyO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHRvb2x0aXBFdmVudCA9IFRvb2x0aXBFdmVudC5Ib3ZlcjtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBlc2NhcGUgPSBmYWxzZTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBtb2JpbGVCZWhhdmlvciA9IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGZvY3VzZWRJbnB1dFJlZjogSFRNTElucHV0RWxlbWVudDtcblxuICAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gbnVsbDtcbiAgIHByaXZhdGUgc2hvd1RpbWVvdXQ/OiBudW1iZXI7XG4gICBwcml2YXRlIHRvdWNoVGltZW91dD86IG51bWJlcjtcbiAgIHByaXZhdGUgdG9vbHRpcERpdkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRPbldpbmRvd01vdXNlTW92ZUZ1bmN0aW9uOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uOiAoKSA9PiB2b2lkO1xuXG4gICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VVdGlsczogRGVib3VuY2VVdGlscyxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgKSB7XG4gICAgICB0aGlzLmJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbiA9IHRoaXMub25XaW5kb3dNb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24gPSB0aGlzLmRlYm91bmNlVXRpbHMuZGVib3VuY2VMZWFkaW5nKCgpID0+IHRoaXMuY3JlYXRlVG9vdGlwKCkpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLnZhbGlkYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgfVxuXG4gICBwcml2YXRlIG9uV2luZG93TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBlbGVtZW50UmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgdG9vbFRpcFJlY3QgPSB0aGlzLnRvb2x0aXBEaXZFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBjb25zdCB0b3RhbEVsZW1lbnRBcmVhID0ge1xuICAgICAgICAgdG9wOiBNYXRoLm1pbihlbGVtZW50UmVjdC50b3AsIHRvb2xUaXBSZWN0LnRvcCksXG4gICAgICAgICByaWdodDogTWF0aC5tYXgoZWxlbWVudFJlY3QucmlnaHQsIHRvb2xUaXBSZWN0LnJpZ2h0KSxcbiAgICAgICAgIGxlZnQ6IE1hdGgubWluKGVsZW1lbnRSZWN0LmxlZnQsIHRvb2xUaXBSZWN0LmxlZnQpLFxuICAgICAgICAgYm90dG9tOiBNYXRoLm1heChlbGVtZW50UmVjdC5ib3R0b20sIHRvb2xUaXBSZWN0LmJvdHRvbSlcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmlzTW91c2VQb3NpdGlvbk91dHNpZGVPZkVsZW1lbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgdG90YWxFbGVtZW50QXJlYSkpIHtcbiAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGlzTW91c2VQb3NpdGlvbk91dHNpZGVPZkVsZW1lbnQobW91c2VYOiBudW1iZXIsIG1vdXNlWTogbnVtYmVyLCBlbGVtZW50QXJlYTogRWxlbWVudEFyZWEpIHtcbiAgICAgIHJldHVybiBtb3VzZVggPCBlbGVtZW50QXJlYS5sZWZ0IHx8IG1vdXNlWCA+PSBlbGVtZW50QXJlYS5yaWdodCB8fCBtb3VzZVkgPCBlbGVtZW50QXJlYS50b3AgfHwgbW91c2VZID49IGVsZW1lbnRBcmVhLmJvdHRvbTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBNYW5pcHVsYSBhIHZpc2liaWxpZGFkZSBkbyB0b29sdGlwIHF1YW5kbyBob3V2ZXIgdW1hIHJlZmVyw6puY2lhIGRlIGlucHV0LlxuICAgICovXG4gICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEZvY3VzID0gdGhpcy5mb2N1c2VkSW5wdXRSZWY7XG4gICAgICAgICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZvY3VzZWRJbnB1dChpbnB1dEZvY3VzKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpY29uICYmIHRoaXMuaXNNYXRjaGluZ1Rvb2x0aXAoaWNvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb290aXBCeUZvY3VzKGljb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgJ2JsdXInLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb24gJiYgdGhpcy5pc01hdGNoaW5nVG9vbHRpcChpY29uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXAoaWNvbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0w6ltIG8gZWxlbWVudG8gZG8gw61jb25lIGFzc29jaWFkbyBhbyBsYWJlbCBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAgKiBAcGFyYW0gZm9jdXNlZElucHV0IE8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHJldHVybnMgTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMgb3UgbnVsbC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEljb25Gcm9tRm9jdXNlZElucHV0KGZvY3VzZWRJbnB1dDogSFRNTElucHV0RWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGFiZWxbZm9yPScke2ZvY3VzZWRJbnB1dC5pZH0nXWApO1xuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGljb24gPSBsYWJlbC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm4gaWNvbj8uY2xhc3NMaXN0LmNvbnRhaW5zKCdpbmZvLXNpZ25fX2ljb24nKSA/IGljb24gOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNlIG8gw61jb25lIHRlbSBvIHRvb2x0aXAgY29ycmVzcG9uZGVudGUgYW8gYXR1YWwuXG4gICAgICogQHBhcmFtIGljb24gTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHJldHVybnMgdHJ1ZSBzZSBvIHRvb2x0aXAgY29ycmVzcG9uZGU7IGNhc28gY29udHLDoXJpbywgZmFsc2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc01hdGNoaW5nVG9vbHRpcChpY29uOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b29sdGlwVGV4dCA9IGljb24uZ2V0QXR0cmlidXRlKCduZy1yZWZsZWN0LXRvb2x0aXAnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcCA9PT0gdG9vbHRpcFRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIG8gdG9vbHRpcCBhc3NvY2lhZG8gYW8gw61jb25lIGRvIGlucHV0IGVtIGZvY3VzLlxuICAgICAqIEBwYXJhbSBpY29uIE8gw61jb25lIGRvIGlucHV0IGVtIGZvY3VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVtb3ZlVG9vbHRpcChpY29uOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b29sdGlwID0gaWNvbi5xdWVyeVNlbGVjdG9yKCcudG9vbHRpcCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodG9vbHRpcCkge1xuICAgICAgICAgICAgdG9vbHRpcC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgLy8gd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSB0b29sdGlwIGlzIGNsaWNrZWQgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXG4gICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiKVxuICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Ib3ZlciAmJlxuICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FuZHJvaWQvaSkgJiZcbiAgICAgICAgICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSkpIHtcbiAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgfVxuICAgfVxuXG4gICAvLyB3aGVuZXZlciB5b3UgdG91Y2ggb3V0c2lkZSB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnRvdWNoc3RhcnRcIilcbiAgIHB1YmxpYyBvbkRvY3VtZW50VG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcImZvY3VzXCIpXG4gICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkZvY3VzKSB7XG4gICAgICAgICB0aGlzLmNyZWF0ZVRvb3RpcCgpO1xuICAgICAgfVxuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwiYmx1clwiKVxuICAgcHVibGljIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkZvY3VzKSB7XG4gICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIilcbiAgIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Ib3Zlcikge1xuICAgICAgICAgdGhpcy5kZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbigpO1xuICAgICAgfVxuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwibW91c2VsZWF2ZVwiKVxuICAgQEhvc3RMaXN0ZW5lcihcIndoZWVsXCIpXG4gICBwdWJsaWMgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgfVxuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwidG91Y2hzdGFydFwiKVxuICAgcHVibGljIG9uVG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb3RpcC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdGhpcy5tb2JpbGVCZWhhdmlvciA9PT0gTW9iaWxlQmVoYXZpb3IuUHJlc3NpbmcgPyB0aGlzLnNob3dEZWxheSA6IDBcbiAgICAgICAgICk7XG4gICAgICB9XG4gICB9XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJ0b3VjaGVuZFwiKVxuICAgcHVibGljIG9uVG91Y2hFbmQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Ib3Zlcikge1xuICAgICAgICAgaWYgKHRoaXMubW9iaWxlQmVoYXZpb3IgPT09IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIHZhbGlkYXRlUG9zaXRpb24oKSB7XG4gICAgICBjb25zdCBjb250YWluc1Bvc2l0aW9uID0gW1xuICAgICAgICAgVG9vbHRpcFBvc2l0aW9uLlRvcCxcbiAgICAgICAgIFRvb2x0aXBQb3NpdGlvbi5SaWdodCxcbiAgICAgICAgIFRvb2x0aXBQb3NpdGlvbi5Cb3R0b20sXG4gICAgICAgICBUb29sdGlwUG9zaXRpb24uTGVmdCxcbiAgICAgIF0uaW5jbHVkZXModGhpcy5wb3NpdGlvbik7XG5cbiAgICAgIGlmICghY29udGFpbnNQb3NpdGlvbikge1xuICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvb2x0aXAgJHt0aGlzLnBvc2l0aW9ufSBwb3NpdGlvbiBpcyB1bmV4cGVjdGVkYCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlVG9vdGlwKCkge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmID09PSBudWxsICYmIHRoaXMudG9vbHRpcD8ubGVuZ3RoKSB7XG4gICAgICAgICBjb25zdCBkb21FbGVtID0gdGhpcy5nZXREb21FbGVtZW50KCk7XG4gICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICAgdGhpcy5zZXRUb29sdGlwQ29tcG9uZW50UHJvcGVydGllcygpO1xuICAgICAgICAgdGhpcy5zaG93VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuc2hvd1Rvb2x0aXAuYmluZCh0aGlzKSwgdGhpcy5zaG93RGVsYXkpO1xuXG4gICAgICAgICB0aGlzLnRvb2x0aXBEaXZFbGVtZW50ID0gZG9tRWxlbS5xdWVyeVNlbGVjdG9yKCcudG9vbHRpcCcpO1xuXG4gICAgICAgICBpZiAodGhpcy5kaXNwbGF5VGltZSkge1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodGhpcy5kZXN0cm95LmJpbmQodGhpcyksIHRoaXMuZGlzcGxheVRpbWUpO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGdldERvbUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQ3JpYSB1bSB0b29sdGlwIHBhcmEgbyBpY29uZSBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAqXG4gICAgKiBAcGFyYW0gaWNvbiBPIMOtY29uZSBkbyBpbnB1dCBlbSBmb2N1cy5cbiAgICAqL1xuICAgcHJpdmF0ZSBjcmVhdGVUb290aXBCeUZvY3VzKGljb246IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiA9PT0gbnVsbCAmJiB0aGlzLnRvb2x0aXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZG9tRWxlbSA9IHRoaXMuZ2V0RG9tRWxlbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IGRvbUVsZW0ucXVlcnlTZWxlY3RvcignLnRvb2x0aXAnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGljb24uYXBwZW5kQ2hpbGQodG9vbHRpcCk7XG4gICAgICAgICAgICB0aGlzLnNldFRvb2x0aXBDb21wb25lbnRQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9vbHRpcC5jbGFzc0xpc3QuYWRkKFwidG9vbHRpcC0tdmlzaWJsZVwiKSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgIHByaXZhdGUgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZpc2libGUgPSB0aGlzLnZpc2libGU7XG5cbiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbik7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKSB7XG4gICAgICBjb25zdCBtYXJnaW4gPSAyMDtcbiAgICAgIGNvbnN0IGFuY2hvclNpemUgPSA1O1xuXG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXA7XG4gICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lc2NhcGUgPSB0aGlzLmVzY2FwZTtcblxuICAgICAgICAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20gfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICBjb25zdCB0b29sdGlwSGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgY29uc3QgdG9vbHRpcFdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgY29uc3Qgc2FmZVNwYWNlID0gMTUwO1xuXG4gICAgICAgICBsZXQgcG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgICAgY29uc3QgaW52YWxpZE9wdGlvbnM6IFRvb2x0aXBQb3NpdGlvbltdID0gW107XG5cbiAgICAgICAgIHdoaWxlICghcG9zaXRpb25lZCkge1xuICAgICAgICAgICAgaWYgKGludmFsaWRPcHRpb25zLmluY2x1ZGVzKFRvb2x0aXBQb3NpdGlvbi5Ub3ApXG4gICAgICAgICAgICAgICAmJiBpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uQm90dG9tKVxuICAgICAgICAgICAgICAgJiYgaW52YWxpZE9wdGlvbnMuaW5jbHVkZXMoVG9vbHRpcFBvc2l0aW9uLkxlZnQpXG4gICAgICAgICAgICAgICAmJiBpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uUmlnaHQpKSB7XG4gICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNwYWNlIHRvIHNob3cgdG9vbHRpcFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5Ub3A6IHtcbiAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uVG9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5MZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcFNoaWZ0ID0gdG9wO1xuXG4gICAgICAgICAgICAgICAgICBpZiAodG9wU2hpZnQgPD0gdG9vbHRpcEhlaWdodCArIHNhZmVTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Cb3R0b207XG4gICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT3B0aW9ucy5wdXNoKFRvb2x0aXBQb3NpdGlvbi5Ub3ApO1xuICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHRvb2x0aXBXaWR0aCAvIDIgKyBsZWZ0KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQodG9wIC0gbWFyZ2luIC0gYW5jaG9yU2l6ZSk7XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uQm90dG9tOiB7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uQm90dG9tKSkge1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5MZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdHRvbVNoaWZ0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgLSBib3R0b207XG5cbiAgICAgICAgICAgICAgICAgIGlmIChib3R0b21TaGlmdCA8PSB0b29sdGlwSGVpZ2h0ICsgc2FmZVNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLlRvcDtcbiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRPcHRpb25zLnB1c2goVG9vbHRpcFBvc2l0aW9uLkJvdHRvbSk7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQodG9vbHRpcFdpZHRoIC8gMiArIGxlZnQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gTWF0aC5yb3VuZChib3R0b20gKyBtYXJnaW4pO1xuICAgICAgICAgICAgICAgICAgcG9zaXRpb25lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLkxlZnQ6IHtcbiAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uTGVmdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRTaGlmdCA9IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChsZWZ0U2hpZnQgPD0gdG9vbHRpcFdpZHRoICsgc2FmZVNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLlJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaChUb29sdGlwUG9zaXRpb24uTGVmdCk7XG4gICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQobGVmdCAtIG1hcmdpbik7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCArIHRvb2x0aXBIZWlnaHQgLyAyIC0gYW5jaG9yU2l6ZSk7XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uUmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcyhUb29sdGlwUG9zaXRpb24uUmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLlRvcDtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCByaWdodFNoaWZ0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCAtIHJpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICBpZiAocmlnaHRTaGlmdCA8PSB0b29sdGlwV2lkdGggKyBzYWZlU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uTGVmdDtcbiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRPcHRpb25zLnB1c2goVG9vbHRpcFBvc2l0aW9uLlJpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gTWF0aC5yb3VuZChyaWdodCArIG1hcmdpbik7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCArIHRvb2x0aXBIZWlnaHQgLyAyIC0gYW5jaG9yU2l6ZSk7XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsKSB7XG4gICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpO1xuICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgICB0aGlzLnRvb2x0aXBEaXZFbGVtZW50ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuYm91bmRPbldpbmRvd01vdXNlTW92ZUZ1bmN0aW9uKTtcbiAgIH1cbn1cbiJdfQ==
|