@colijnit/transaction 256.1.38 → 256.1.40
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/colijnit-transaction.umd.js +482 -248
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/delivery-planning/delivery-planning.component.js +8 -4
- package/esm2015/lib/component/delivery-planning/service/delivery-planning.service.js +15 -40
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-popup/delivery-planning-overview-popup.component.js +53 -53
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.js +48 -12
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile-settings-popup/delivery-planning-overview-tile-settings-popup.component.js +96 -136
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.js +82 -60
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-selection/delivery-planning-selection.component.js +36 -21
- package/esm2015/lib/component/delivery-planning-main/delivery-planning-main.component.js +8 -2
- package/esm2015/lib/component/transaction-cash-register-dialog/transaction-cash-register-dialog.component.js +31 -16
- package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +49 -35
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +6 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.js +24 -1
- package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +7 -2
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +103 -89
- package/esm2015/lib/enum/transaction-cfg-name.enum.js +3 -1
- package/esm2015/lib/service/transaction-connector-adapter.service.js +13 -1
- package/esm2015/lib/service/transaction-connector.service.js +6 -1
- package/esm2015/lib/service/transaction.service.js +6 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +523 -415
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/delivery-planning/delivery-planning.component.d.ts +3 -0
- package/lib/component/delivery-planning/service/delivery-planning.service.d.ts +18 -20
- package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-popup/delivery-planning-overview-popup.component.d.ts +2 -2
- package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.d.ts +9 -4
- package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile-settings-popup/delivery-planning-overview-tile-settings-popup.component.d.ts +12 -16
- package/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.d.ts +27 -25
- package/lib/component/delivery-planning-main/component/delivery-planning-selection/delivery-planning-selection.component.d.ts +11 -6
- package/lib/component/delivery-planning-main/delivery-planning-main.component.d.ts +3 -1
- package/lib/component/transaction-cash-register-dialog/transaction-cash-register-dialog.component.d.ts +18 -3
- package/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.d.ts +5 -2
- package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +8 -1
- package/lib/component/transaction-search/service/transaction-search.service.d.ts +3 -2
- package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +8 -6
- package/lib/enum/transaction-cfg-name.enum.d.ts +3 -1
- package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
- package/lib/service/transaction-connector.service.d.ts +1 -0
- package/lib/service/transaction.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -4,9 +4,13 @@ import { DeliveryPlanningService } from '../../../../../delivery-planning/servic
|
|
|
4
4
|
import { Icon } from '../../../../../../enum/icon.enum';
|
|
5
5
|
import { IconCacheService } from '../../../../../../service/icon-cache.service';
|
|
6
6
|
import { DeliveryPlanningTileModes } from '../../../../../../enum/delivery-planning-tile-modes.enum';
|
|
7
|
+
import { TransactionService } from '../../../../../../service/transaction.service';
|
|
8
|
+
import { OrderLinesPlannedRequest } from '@colijnit/transactionapi/build/model/order-lines-planned-request.bo';
|
|
9
|
+
import { PlanningFilterObject } from '@colijnit/transactionapi/build/model/planning-filter-object.bo';
|
|
7
10
|
export class DeliveryPlanningOverviewTileComponent {
|
|
8
|
-
constructor(_deliveryPlanningService, _changeDetector, iconCacheService) {
|
|
11
|
+
constructor(_deliveryPlanningService, _transaction, _changeDetector, iconCacheService) {
|
|
9
12
|
this._deliveryPlanningService = _deliveryPlanningService;
|
|
13
|
+
this._transaction = _transaction;
|
|
10
14
|
this._changeDetector = _changeDetector;
|
|
11
15
|
this.iconCacheService = iconCacheService;
|
|
12
16
|
this.icons = Icon;
|
|
@@ -21,6 +25,7 @@ export class DeliveryPlanningOverviewTileComponent {
|
|
|
21
25
|
this.getTransportOrdersEvent = new EventEmitter();
|
|
22
26
|
this.timeChangeEvent = new EventEmitter();
|
|
23
27
|
this.openSettingsDialogEvent = new EventEmitter();
|
|
28
|
+
this.availabilityChecked = new EventEmitter();
|
|
24
29
|
this.calendarPlanEvent = new EventEmitter();
|
|
25
30
|
this.moveEvent = new EventEmitter();
|
|
26
31
|
}
|
|
@@ -49,6 +54,9 @@ export class DeliveryPlanningOverviewTileComponent {
|
|
|
49
54
|
this._changeDetector.markForCheck();
|
|
50
55
|
this._changeDetector.detectChanges();
|
|
51
56
|
}));
|
|
57
|
+
this._subs.push(this._deliveryPlanningService.availabilityCheckEvent.subscribe((transId) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
yield this.handleAvailabilityChecked(transId);
|
|
59
|
+
})));
|
|
52
60
|
});
|
|
53
61
|
}
|
|
54
62
|
ngOnDestroy() {
|
|
@@ -80,16 +88,6 @@ export class DeliveryPlanningOverviewTileComponent {
|
|
|
80
88
|
handleDeleteOrderLineClick(data) {
|
|
81
89
|
this.deleteOrderLineEvent.emit(data);
|
|
82
90
|
}
|
|
83
|
-
handleSettingsSave() {
|
|
84
|
-
}
|
|
85
|
-
onCustomDragStart(event, obj) {
|
|
86
|
-
const currentHour = obj['startTime'] + ':00'; // Assuming start hour is used
|
|
87
|
-
event.dataTransfer.setData('text', JSON.stringify({ obj, currentHour }));
|
|
88
|
-
}
|
|
89
|
-
onExpandableDragStart(event, obj, onDragStartCustom) {
|
|
90
|
-
onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
|
|
91
|
-
event.dataTransfer.setData('text', JSON.stringify({ obj }));
|
|
92
|
-
}
|
|
93
91
|
orderForObject(transId) {
|
|
94
92
|
return this.transportDay.plannedOrders.find(order => order.transId === transId);
|
|
95
93
|
}
|
|
@@ -115,6 +113,42 @@ export class DeliveryPlanningOverviewTileComponent {
|
|
|
115
113
|
}
|
|
116
114
|
});
|
|
117
115
|
}
|
|
116
|
+
handleAvailabilityChecked(transId) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
let planOrder = yield this._transaction.getPlanOrder(transId);
|
|
119
|
+
if (!planOrder.partDelivery) {
|
|
120
|
+
this._deliveryPlanningService.deliveryMethods.find(method => parseInt(method.code) === planOrder.deliveryMethod) ? this.availabilityChecked.emit({
|
|
121
|
+
transportDay: this.transportDay,
|
|
122
|
+
available: true
|
|
123
|
+
}) : this.availabilityChecked.emit({ transportDay: this.transportDay, available: false });
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
let available = true;
|
|
127
|
+
yield this.getOrderLinesPlanned(planOrder);
|
|
128
|
+
planOrder.lines.forEach((line) => {
|
|
129
|
+
if (!this.transportDay.deliveryMethods.find(method => method === line.deliveryMethod)) {
|
|
130
|
+
available = false;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
this.availabilityChecked.emit({ transportDay: this.transportDay, available: available });
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
getOrderLinesPlanned(planOrder) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
let request = new OrderLinesPlannedRequest();
|
|
140
|
+
let filterObj = new PlanningFilterObject();
|
|
141
|
+
request.planned = true;
|
|
142
|
+
request.planningId = this._deliveryPlanningService.currentPlanning.planningId;
|
|
143
|
+
request.transId = planOrder.transId;
|
|
144
|
+
request.plannedLineId = planOrder.plannedLineId;
|
|
145
|
+
filterObj.onlyCurrentWeek = true;
|
|
146
|
+
filterObj.beginCurrentWeek = new Date();
|
|
147
|
+
filterObj.checkOrderLines = 1;
|
|
148
|
+
request.filterObject = filterObj;
|
|
149
|
+
planOrder.lines.push(...yield this._transaction.getOrderLinesPlanned(request));
|
|
150
|
+
});
|
|
151
|
+
}
|
|
118
152
|
}
|
|
119
153
|
DeliveryPlanningOverviewTileComponent.decorators = [
|
|
120
154
|
{ type: Component, args: [{
|
|
@@ -211,6 +245,7 @@ DeliveryPlanningOverviewTileComponent.decorators = [
|
|
|
211
245
|
];
|
|
212
246
|
DeliveryPlanningOverviewTileComponent.ctorParameters = () => [
|
|
213
247
|
{ type: DeliveryPlanningService },
|
|
248
|
+
{ type: TransactionService },
|
|
214
249
|
{ type: ChangeDetectorRef },
|
|
215
250
|
{ type: IconCacheService }
|
|
216
251
|
];
|
|
@@ -224,9 +259,10 @@ DeliveryPlanningOverviewTileComponent.propDecorators = {
|
|
|
224
259
|
getTransportOrdersEvent: [{ type: Output }],
|
|
225
260
|
timeChangeEvent: [{ type: Output }],
|
|
226
261
|
openSettingsDialogEvent: [{ type: Output }],
|
|
262
|
+
availabilityChecked: [{ type: Output }],
|
|
227
263
|
calendarPlanEvent: [{ type: Output }],
|
|
228
264
|
moveEvent: [{ type: Output }],
|
|
229
265
|
hourSchedulingComp: [{ type: ViewChild, args: ['hourSchedulingComponent',] }],
|
|
230
266
|
showClass: [{ type: HostBinding, args: ['class.co-delivery-planning-overview-tile',] }]
|
|
231
267
|
};
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0SixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFnR25HLE1BQU0sT0FBTyxxQ0FBcUM7SUFnRWhELFlBQ1Usd0JBQWlELEVBQ2pELGVBQWtDLEVBQ25DLGdCQUFrQztRQUZqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEUzQixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUMxQixjQUFTLEdBQXFDLHlCQUF5QixDQUFDO1FBRWpGLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTdCLFVBQUssR0FBbUIsRUFBRSxDQUFD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U0FBQyx5QkFBeUI7d0JBU25DLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvJztcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay1kYXkuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7SG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50fSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aWxlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCIgKGNsaWNrKT1cImV4cGFuZGVkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCIhZXhwYW5kZWRcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNhcmV0RG93blNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJleHBhbmRlZFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FyZXRVcFNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwidHJhbnNwb3J0RGF5Py50cmFuc3BvcnQucmVnaXN0cmF0aW9uTnVtYmVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnVjay1oZWFkZXItdGlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNtYWxsXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc0RpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5TbGlkZXJzVXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtd3JhcHBlciByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5vcmRlckFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21heFZvbHVtZV09XCJ0cmFuc3BvcnREYXk/Lm1heE9yZGVyQW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFRpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lVG90YWxdPVwidHJhbnNwb3J0RGF5Py5tYXhNaW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctdGlsZS1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1zaG9ydC1saW5lLXdyYXBwZXJcIiAqbmdJZj1cIiFleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXNob3J0LWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWxlLWNvbnRlbnQtd3JhcHBlciBjb2x1bW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctbGluZXMtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5Ob3JtYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lIGNsYXNzPVwibm9ybWFsLW1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRPcmRlckV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQWN0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsb3JkZXIudHJhbnNJZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZSAjaG91clNjaGVkdWxpbmdDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyc0xvYWRlZCAmJiB0aWxlTW9kZSA9PT0gdGlsZU1vZGVzLkNhbGVuZGFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NoZWR1bGVdPVwidHJhbnNwb3J0RGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRUaW1lUHJvcF09XCInc3RhcnRUaW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZFRpbWVQcm9wXT1cIidlbmRUaW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdHNQcm9wXT1cIidwbGFubmVkT3JkZXJzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoaWxkUHJvcF09XCIndHJhbnNwb3J0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImN1c3RvbUV4cGFuZGFibGVUZW1wbGF0ZVNlcGFyYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRQcm9wXT1cIid0cmFuc0lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2VFdmVudCk9XCJoYW5kbGVUaW1lQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV3T2JqZWN0UGxhbkV2ZW50KT1cImhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50KT1cImhhbmRsZU1vdmVCZXR3ZWVuQ2FsZW5kYXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21FeHBhbmRhYmxlVGVtcGxhdGVTZXBhcmF0ZSBsZXQtb25EcmFnU3RhcnRDdXN0b209XCJvbkRyYWdTdGFydEN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LW9uU2VsZWN0QmxvY2s9XCJvblNlbGVjdEJsb2NrXCIgbGV0LW9uUmVzaXplU3RhcnQ9XCJvblJlc2l6ZVN0YXJ0XCIgbGV0LW9iamVjdHM9XCJvYmplY3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlIFtvYmplY3RzXT1cIm9iamVjdHNcIiBbb25TZWxlY3RCbG9ja109XCJvblNlbGVjdEJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uUmVzaXplU3RhcnRdPVwib25SZXNpemVTdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvbkRyYWdTdGFydEN1c3RvbV09XCJvbkRyYWdTdGFydEN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3RUZW1wbGF0ZV09XCJvYmplY3RUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29iamVjdFRlbXBsYXRlIGxldC1vYmo9XCJvYmplY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdE9yZGVyRXZlbnQpPVwiaGFuZGxlRWRpdE9yZGVyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlckZvck9iamVjdChvYmouaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyByZWFkb25seSB0aWxlTW9kZXM6IHR5cGVvZiBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzID0gRGVsaXZlcnlQbGFubmluZ1RpbGVNb2RlcztcclxuXHJcbiAgcHVibGljIG9yZGVyc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGV4cGFuZGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVPcmRlckV2ZW50OiBFdmVudEVtaXR0ZXI8W1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5XT4gPSBuZXcgRXZlbnRFbWl0dGVyPFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheV0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVPcmRlckxpbmVFdmVudDogRXZlbnRFbWl0dGVyPHsgb3JkZXI6IFBsYW5PcmRlciwgbGluZTogUGxhbk9yZGVyTGluZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZWRpdE9yZGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBnZXRUcmFuc3BvcnRPcmRlcnNFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHRpbWVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FsZW5kYXJQbGFuRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb3ZlRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGhvdXI6IHN0cmluZywgc2NoZWR1bGVkT2JqZWN0OiBPYmplY3QgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGhvdXI6IHN0cmluZztcclxuICAgIHNjaGVkdWxlZE9iamVjdDogT2JqZWN0XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaG91clNjaGVkdWxpbmdDb21wb25lbnQnKVxyXG4gIHB1YmxpYyBob3VyU2NoZWR1bGluZ0NvbXA6IEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgcHVibGljIGdldCB0aWxlTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZScpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kZWxpdmVyeVBsYW5uaW5nU2VydmljZTogRGVsaXZlcnlQbGFubmluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbXBsb3llZVZpZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZW1wbG95ZWVWaWV3O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy50cmFuc3BvcnREYXkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0VHJhbnNwb3J0T3JkZXJzKHRoaXMudHJhbnNwb3J0RGF5KTtcclxuICAgICAgdGhpcy5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldFRyYW5zcG9ydE9yZGVyc0V2ZW50LmVtaXQodGhpcy50cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5lbXBsb3llZVZpZXcpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZENoYW5nZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnJlUmVuZGVySG91clNjaGVkdWxpbmcuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgdGhpcy5ob3VyU2NoZWR1bGluZ0NvbXA/LnJlbmRlck9iamVjdHMoKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uRGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnU3RhcnQoZHJhZ0V2ZW50OiBEcmFnRXZlbnQsIHRyYW5zSWQ6IG51bWJlcikge1xyXG4gICAgZHJhZ0V2ZW50LmRhdGFUcmFuc2ZlciEuc2V0RGF0YSgndGV4dCcsIEpTT04uc3RyaW5naWZ5KHRyYW5zSWQpKTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQgPSB0cmFuc0lkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZGVkQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0VHJhbnNwb3J0T3JkZXJzKHRoaXMudHJhbnNwb3J0RGF5KS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc3BvcnREYXkgPSByZXN1bHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlbGV0ZU9yZGVyQ2xpY2sob3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy5kZWxldGVPcmRlckV2ZW50LmVtaXQoW29yZGVyLCB0aGlzLnRyYW5zcG9ydERheV0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKGRhdGE6IHsgb3JkZXI6IFBsYW5PcmRlciwgbGluZTogUGxhbk9yZGVyTGluZSB9KSB7XHJcbiAgICB0aGlzLmRlbGV0ZU9yZGVyTGluZUV2ZW50LmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2V0dGluZ3NTYXZlKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkN1c3RvbURyYWdTdGFydChldmVudDogRHJhZ0V2ZW50LCBvYmo6IFBsYW5PcmRlcikge1xyXG4gICAgY29uc3QgY3VycmVudEhvdXIgPSBvYmpbJ3N0YXJ0VGltZSddICsgJzowMCc7IC8vIEFzc3VtaW5nIHN0YXJ0IGhvdXIgaXMgdXNlZFxyXG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyIS5zZXREYXRhKCd0ZXh0JywgSlNPTi5zdHJpbmdpZnkoe29iaiwgY3VycmVudEhvdXJ9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIG9uRHJhZ1N0YXJ0Q3VzdG9tPy5jYWxsKG9iaik7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoJ3RleHQnLCBKU09OLnN0cmluZ2lmeSh7b2JqfSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9yZGVyRm9yT2JqZWN0KHRyYW5zSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSB0cmFuc0lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2coKSB7XHJcbiAgICB0aGlzLm9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50LmVtaXQodGhpcy50cmFuc3BvcnREYXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRpbWVDaGFuZ2VFdmVudChvYmo6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvYmopO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KGRhdGE6IHsgY3VycmVudEhvdXI6IHN0cmluZywgZGF0YTogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuY2FsZW5kYXJQbGFuRXZlbnQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFZGl0T3JkZXJFdmVudChwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy5lZGl0T3JkZXJFdmVudC5lbWl0KHBsYW5PcmRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlTW92ZUJldHdlZW5DYWxlbmRhcnMobW92ZURhdGE6IHsgaG91cjogc3RyaW5nLCBkYXRhOiBPYmplY3QgfSkge1xyXG4gICAgaWYgKG1vdmVEYXRhICYmIG1vdmVEYXRhLmRhdGFbJ29iaiddWydpZCddICYmIG1vdmVEYXRhLmRhdGFbJ29iaiddWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLm1vdmVFdmVudC5lbWl0KHtcclxuICAgICAgICBob3VyOiBtb3ZlRGF0YS5ob3VyLFxyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdDogbW92ZURhdGE/LmRhdGFcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0SixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFJbkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDN0csT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUE2RnBHLE1BQU0sT0FBTyxxQ0FBcUM7SUFtRWhELFlBQ1Usd0JBQWlELEVBQ2pELFlBQWdDLEVBQ2hDLGVBQWtDLEVBQ25DLGdCQUFrQztRQUhqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELGlCQUFZLEdBQVosWUFBWSxD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QUFHLENBQUMsQ0FBQztZQUM5QixPQUFPLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7S0FBQTs7O1lBN1JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0NBQW9DO2dCQUM5QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0ZUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFyR08sdUJBQXVCO1lBT3ZCLGtCQUFrQjtZQVZsQixpQkFBaUI7WUFLakIsZ0JBQWdCOzs7dUJBNEdyQixLQUFLOzJCQUdMLEtBQUs7NEJBR0wsTUFBTTsrQkFHTixNQUFNO21DQUdOLE1BQU07NkJBTU4sTUFBTTtzQ0FHTixNQUFNOzhCQUdOLE1BQU07c0NBR04sTUFBTTtrQ0FHTixNQUFNO2dDQUdOLE1BQU07d0JBTU4sTUFBTTtpQ0FNTixTQUFTLFNBQUMseUJBQXlCO3dCQVNuQyxXQUFXLFNBQUMsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVsaXZlcnktcGxhbm5pbmcvc2VydmljZS9kZWxpdmVyeS1wbGFubmluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXN9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdGlsZS1tb2Rlcy5lbnVtJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7UGxhbk9yZGVyTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXBsYW5uZWQtcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aWxlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCIgKGNsaWNrKT1cImV4cGFuZGVkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCIhZXhwYW5kZWRcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNhcmV0RG93blNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJleHBhbmRlZFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FyZXRVcFNvbGlkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwidHJhbnNwb3J0RGF5Py50cmFuc3BvcnQucmVnaXN0cmF0aW9uTnVtYmVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnVjay1oZWFkZXItdGlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNtYWxsXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc0RpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5TbGlkZXJzVXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtd3JhcHBlciByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5vcmRlckFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21heFZvbHVtZV09XCJ0cmFuc3BvcnREYXk/Lm1heE9yZGVyQW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFRpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lVG90YWxdPVwidHJhbnNwb3J0RGF5Py5tYXhNaW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tZGVsaXZlcnktcGxhbm5pbmctdGlsZS1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1zaG9ydC1saW5lLXdyYXBwZXJcIiAqbmdJZj1cIiFleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXNob3J0LWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVPcmRlckV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWxlLWNvbnRlbnQtd3JhcHBlciBjb2x1bW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctbGluZXMtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5Ob3JtYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1saW5lIGNsYXNzPVwibm9ybWFsLW1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9yZGVyIG9mIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRPcmRlckV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQWN0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsb3JkZXIudHJhbnNJZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZSAjaG91clNjaGVkdWxpbmdDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyc0xvYWRlZCAmJiB0aWxlTW9kZSA9PT0gdGlsZU1vZGVzLkNhbGVuZGFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NoZWR1bGVdPVwidHJhbnNwb3J0RGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRUaW1lUHJvcF09XCInc3RhcnRUaW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZFRpbWVQcm9wXT1cIidlbmRUaW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdHNQcm9wXT1cIidwbGFubmVkT3JkZXJzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoaWxkUHJvcF09XCIndHJhbnNwb3J0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImN1c3RvbUV4cGFuZGFibGVUZW1wbGF0ZVNlcGFyYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRQcm9wXT1cIid0cmFuc0lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2VFdmVudCk9XCJoYW5kbGVUaW1lQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV3T2JqZWN0UGxhbkV2ZW50KT1cImhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50KT1cImhhbmRsZU1vdmVCZXR3ZWVuQ2FsZW5kYXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21FeHBhbmRhYmxlVGVtcGxhdGVTZXBhcmF0ZSBsZXQtb25EcmFnU3RhcnRDdXN0b209XCJvbkRyYWdTdGFydEN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LW9uU2VsZWN0QmxvY2s9XCJvblNlbGVjdEJsb2NrXCIgbGV0LW9uUmVzaXplU3RhcnQ9XCJvblJlc2l6ZVN0YXJ0XCIgbGV0LW9iamVjdHM9XCJvYmplY3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlIFtvYmplY3RzXT1cIm9iamVjdHNcIiBbb25TZWxlY3RCbG9ja109XCJvblNlbGVjdEJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uUmVzaXplU3RhcnRdPVwib25SZXNpemVTdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvbkRyYWdTdGFydEN1c3RvbV09XCJvbkRyYWdTdGFydEN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3RUZW1wbGF0ZV09XCJvYmplY3RUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29iamVjdFRlbXBsYXRlIGxldC1vYmo9XCJvYmplY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZU9yZGVyTGluZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdE9yZGVyRXZlbnQpPVwiaGFuZGxlRWRpdE9yZGVyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlckZvck9iamVjdChvYmouaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtbGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyByZWFkb25seSB0aWxlTW9kZXM6IHR5cGVvZiBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzID0gRGVsaXZlcnlQbGFubmluZ1RpbGVNb2RlcztcclxuXHJcbiAgcHVibGljIG9yZGVyc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGV4cGFuZGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVPcmRlckV2ZW50OiBFdmVudEVtaXR0ZXI8W1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5XT4gPSBuZXcgRXZlbnRFbWl0dGVyPFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheV0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVPcmRlckxpbmVFdmVudDogRXZlbnRFbWl0dGVyPHsgb3JkZXI6IFBsYW5PcmRlciwgbGluZTogUGxhbk9yZGVyTGluZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZWRpdE9yZGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFuT3JkZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBnZXRUcmFuc3BvcnRPcmRlcnNFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHRpbWVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYXZhaWxhYmlsaXR5Q2hlY2tlZDogRXZlbnRFbWl0dGVyPHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjYWxlbmRhclBsYW5FdmVudDogRXZlbnRFbWl0dGVyPHsgY3VycmVudEhvdXI6IHN0cmluZywgZGF0YTogc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBjdXJyZW50SG91cjogc3RyaW5nLFxyXG4gICAgZGF0YTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vdmVFdmVudDogRXZlbnRFbWl0dGVyPHsgaG91cjogc3RyaW5nLCBzY2hlZHVsZWRPYmplY3Q6IE9iamVjdCB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgaG91cjogc3RyaW5nO1xyXG4gICAgc2NoZWR1bGVkT2JqZWN0OiBPYmplY3RcclxuICB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdob3VyU2NoZWR1bGluZ0NvbXBvbmVudCcpXHJcbiAgcHVibGljIGhvdXJTY2hlZHVsaW5nQ29tcDogSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgZ2V0IHRpbGVNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUaWxlTW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbXBsb3llZVZpZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZW1wbG95ZWVWaWV3O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy50cmFuc3BvcnREYXkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0VHJhbnNwb3J0T3JkZXJzKHRoaXMudHJhbnNwb3J0RGF5KTtcclxuICAgICAgdGhpcy5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldFRyYW5zcG9ydE9yZGVyc0V2ZW50LmVtaXQodGhpcy50cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW1wbG95ZWVWaWV3KSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZVJlbmRlckhvdXJTY2hlZHVsaW5nLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIHRoaXMuaG91clNjaGVkdWxpbmdDb21wPy5yZW5kZXJPYmplY3RzKCk7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmF2YWlsYWJpbGl0eUNoZWNrRXZlbnQuc3Vic2NyaWJlKGFzeW5jICh0cmFuc0lkOiBudW1iZXIpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKHRyYW5zSWQpO1xyXG4gICAgfSkpO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25EZXN0cm95KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdTdGFydChkcmFnRXZlbnQ6IERyYWdFdmVudCwgdHJhbnNJZDogbnVtYmVyKSB7XHJcbiAgICBkcmFnRXZlbnQuZGF0YVRyYW5zZmVyIS5zZXREYXRhKCd0ZXh0JywgSlNPTi5zdHJpbmdpZnkodHJhbnNJZCkpO1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCA9IHRyYW5zSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kZWRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnModGhpcy50cmFuc3BvcnREYXkpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zcG9ydERheSA9IHJlc3VsdDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlT3JkZXJDbGljayhvcmRlcjogUGxhbk9yZGVyKSB7XHJcbiAgICB0aGlzLmRlbGV0ZU9yZGVyRXZlbnQuZW1pdChbb3JkZXIsIHRoaXMudHJhbnNwb3J0RGF5XSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlT3JkZXJMaW5lQ2xpY2soZGF0YTogeyBvcmRlcjogUGxhbk9yZGVyLCBsaW5lOiBQbGFuT3JkZXJMaW5lIH0pIHtcclxuICAgIHRoaXMuZGVsZXRlT3JkZXJMaW5lRXZlbnQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcmRlckZvck9iamVjdCh0cmFuc0lkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gdHJhbnNJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblNldHRpbmdzRGlhbG9nKCkge1xyXG4gICAgdGhpcy5vcGVuU2V0dGluZ3NEaWFsb2dFdmVudC5lbWl0KHRoaXMudHJhbnNwb3J0RGF5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUaW1lQ2hhbmdlRXZlbnQob2JqOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYWxlbmRhclBsYW5FdmVudChkYXRhOiB7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9KSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyUGxhbkV2ZW50LmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRWRpdE9yZGVyRXZlbnQocGxhbk9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMuZWRpdE9yZGVyRXZlbnQuZW1pdChwbGFuT3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVCZXR3ZWVuQ2FsZW5kYXJzKG1vdmVEYXRhOiB7IGhvdXI6IHN0cmluZywgZGF0YTogT2JqZWN0IH0pIHtcclxuICAgIGlmIChtb3ZlRGF0YSAmJiBtb3ZlRGF0YS5kYXRhWydvYmonXVsnaWQnXSAmJiBtb3ZlRGF0YS5kYXRhWydvYmonXVsnaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5tb3ZlRXZlbnQuZW1pdCh7XHJcbiAgICAgICAgaG91cjogbW92ZURhdGEuaG91cixcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Q6IG1vdmVEYXRhPy5kYXRhXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKHRyYW5zSWQ6IG51bWJlcikge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0UGxhbk9yZGVyKHRyYW5zSWQpO1xyXG4gICAgaWYgKCFwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKG1ldGhvZCA9PiBwYXJzZUludChtZXRob2QuY29kZSkgPT09IHBsYW5PcmRlci5kZWxpdmVyeU1ldGhvZCkgPyB0aGlzLmF2YWlsYWJpbGl0eUNoZWNrZWQuZW1pdCh7XHJcbiAgICAgICAgdHJhbnNwb3J0RGF5OiB0aGlzLnRyYW5zcG9ydERheSxcclxuICAgICAgICBhdmFpbGFibGU6IHRydWVcclxuICAgICAgfSkgOiB0aGlzLmF2YWlsYWJpbGl0eUNoZWNrZWQuZW1pdCh7dHJhbnNwb3J0RGF5OiB0aGlzLnRyYW5zcG9ydERheSwgYXZhaWxhYmxlOiBmYWxzZX0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGF2YWlsYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuICAgICAgcGxhbk9yZGVyLmxpbmVzLmZvckVhY2goKGxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5maW5kKG1ldGhvZCA9PiBtZXRob2QgPT09IGxpbmUuZGVsaXZlcnlNZXRob2QpKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eUNoZWNrZWQuZW1pdCh7dHJhbnNwb3J0RGF5OiB0aGlzLnRyYW5zcG9ydERheSwgYXZhaWxhYmxlOiBhdmFpbGFibGV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBwbGFuT3JkZXIudHJhbnNJZDtcclxuICAgIHJlcXVlc3QucGxhbm5lZExpbmVJZCA9IHBsYW5PcmRlci5wbGFubmVkTGluZUlkO1xyXG4gICAgZmlsdGVyT2JqLm9ubHlDdXJyZW50V2VlayA9IHRydWU7XHJcbiAgICBmaWx0ZXJPYmouYmVnaW5DdXJyZW50V2VlayA9IG5ldyBEYXRlKCk7XHJcbiAgICBmaWx0ZXJPYmouY2hlY2tPcmRlckxpbmVzID0gMTtcclxuICAgIHJlcXVlc3QuZmlsdGVyT2JqZWN0ID0gZmlsdGVyT2JqO1xyXG4gICAgcGxhbk9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { TransactionConnectorService } from "../../../../../../service/transaction-connector.service";
|
|
7
|
-
import { OrderLinesPlannedRequest } from "@colijnit/transactionapi/build/model/order-lines-planned-request.bo";
|
|
8
|
-
import { PlanningFilterObject } from "@colijnit/transactionapi/build/model/planning-filter-object.bo";
|
|
1
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { DeliveryPlanningService } from '../../../../../delivery-planning/service/delivery-planning.service';
|
|
3
|
+
import { Icon } from '../../../../../../enum/icon.enum';
|
|
4
|
+
import { IconCacheService } from '../../../../../../service/icon-cache.service';
|
|
5
|
+
import { TransactionConnectorService } from '../../../../../../service/transaction-connector.service';
|
|
9
6
|
export class DeliveryPlanningOverviewTileSettingsPopupComponent {
|
|
10
7
|
constructor(_deliveryPlanningService, iconCacheService, _transaction) {
|
|
11
8
|
this._deliveryPlanningService = _deliveryPlanningService;
|
|
@@ -36,11 +33,6 @@ export class DeliveryPlanningOverviewTileSettingsPopupComponent {
|
|
|
36
33
|
showClass() {
|
|
37
34
|
return true;
|
|
38
35
|
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this._subs.push(this._deliveryPlanningService.availabilityCheckEvent.subscribe((transId) => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
yield this.handleAvailabilityChecked(transId);
|
|
42
|
-
})));
|
|
43
|
-
}
|
|
44
36
|
ngOnDestroy() {
|
|
45
37
|
this._subs.forEach(sub => {
|
|
46
38
|
sub.unsubscribe();
|
|
@@ -91,7 +83,7 @@ export class DeliveryPlanningOverviewTileSettingsPopupComponent {
|
|
|
91
83
|
handleDistrictsChange(event) {
|
|
92
84
|
event.forEach((district) => {
|
|
93
85
|
if (!this.transportDay.districts.find(dayDistrict => dayDistrict === district.districtId)) {
|
|
94
|
-
this.transportDay.
|
|
86
|
+
this.transportDay.districts.push(district.districtId);
|
|
95
87
|
}
|
|
96
88
|
});
|
|
97
89
|
if (!this.settingsChanged) {
|
|
@@ -103,143 +95,111 @@ export class DeliveryPlanningOverviewTileSettingsPopupComponent {
|
|
|
103
95
|
}
|
|
104
96
|
handleCommitClick() {
|
|
105
97
|
this.onSaveAction.emit(this.settingsChanged);
|
|
106
|
-
|
|
107
|
-
handleAvailabilityChecked(transId) {
|
|
108
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
let planOrder = yield this._transaction.getPlanOrder(transId);
|
|
110
|
-
if (!planOrder.partDelivery) {
|
|
111
|
-
this.deliveryMethods.find(method => parseInt(method.code) === planOrder.deliveryMethod) ? this.availabilityChecked.emit({ transportDay: this.transportDay, available: true }) : this.availabilityChecked.emit({ transportDay: this.transportDay, available: false });
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
let available = true;
|
|
115
|
-
yield this.getOrderLinesPlanned(planOrder);
|
|
116
|
-
planOrder.lines.forEach((line) => {
|
|
117
|
-
if (!this.deliveryMethods.find(method => method.code === line.deliveryMethod)) {
|
|
118
|
-
available = false;
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
this.availabilityChecked.emit({ transportDay: this.transportDay, available: available });
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
getOrderLinesPlanned(planOrder) {
|
|
126
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
-
let request = new OrderLinesPlannedRequest();
|
|
128
|
-
let filterObj = new PlanningFilterObject();
|
|
129
|
-
request.planned = true;
|
|
130
|
-
request.planningId = this._deliveryPlanningService.currentPlanning.planningId;
|
|
131
|
-
request.transId = planOrder.transId;
|
|
132
|
-
request.plannedLineId = planOrder.plannedLineId;
|
|
133
|
-
filterObj.onlyCurrentWeek = true;
|
|
134
|
-
filterObj.beginCurrentWeek = new Date();
|
|
135
|
-
filterObj.checkOrderLines = 1;
|
|
136
|
-
request.filterObject = filterObj;
|
|
137
|
-
planOrder.lines.push(...yield this._transaction.getOrderLinesPlanned(request));
|
|
138
|
-
});
|
|
98
|
+
this.closeEvent.emit();
|
|
139
99
|
}
|
|
140
100
|
}
|
|
141
101
|
DeliveryPlanningOverviewTileSettingsPopupComponent.decorators = [
|
|
142
102
|
{ type: Component, args: [{
|
|
143
|
-
selector:
|
|
103
|
+
selector: 'co-delivery-planning-overview-tile-settings-popup',
|
|
144
104
|
template: `
|
|
145
|
-
|
|
146
|
-
|
|
105
|
+
<co-dialog [showCloseIcon]="true" (closeClick)="closePopup()" [headerTemplate]="headerTemplate"
|
|
106
|
+
[footerTemplate]="footerTemplate">
|
|
147
107
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
108
|
+
<div class="body-wrapper">
|
|
109
|
+
<div class="rules-wrapper">
|
|
110
|
+
<div class="row available">
|
|
111
|
+
<co-input-checkbox [(model)]="transportDay.availableOnDate"></co-input-checkbox>
|
|
112
|
+
<span [textContent]="'AVAILABLE' | localize"></span></div>
|
|
153
113
|
|
|
154
|
-
|
|
114
|
+
<div class="row available">
|
|
155
115
|
|
|
156
|
-
|
|
116
|
+
</div>
|
|
157
117
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
118
|
+
<div class="row">
|
|
119
|
+
<div class="column">
|
|
120
|
+
<co-list-of-values class="list" [collection]="districts"
|
|
121
|
+
[model]="districtsForTransportDay(transportDay)"
|
|
122
|
+
(modelChange)="handleDistrictsChange($event)"
|
|
123
|
+
[displayField]="'description'"
|
|
124
|
+
[label]="'DISTRICTS' | localize"
|
|
125
|
+
[multiselect]="true"
|
|
126
|
+
[searchDisabled]="false"
|
|
127
|
+
[searchPlaceholder]="'Zoeken...'"
|
|
168
128
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
129
|
+
></co-list-of-values>
|
|
130
|
+
<co-list-of-values class="list" [collection]="deliveryMethods"
|
|
131
|
+
[model]="deliveryMethodsForTransportDay(transportDay)"
|
|
132
|
+
(modelChange)="handleDeliveryMethodChange($event)"
|
|
133
|
+
[displayField]="'description'"
|
|
134
|
+
[label]="'DELIVERY_METHODS' | localize"
|
|
135
|
+
[multiselect]="true"
|
|
136
|
+
[searchDisabled]="false"
|
|
137
|
+
[searchPlaceholder]="'Zoeken...'"
|
|
138
|
+
></co-list-of-values>
|
|
139
|
+
</div>
|
|
180
140
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
141
|
+
<div class="column">
|
|
142
|
+
<co-list-of-values class="list" [collection]="skills"
|
|
143
|
+
[model]="skillsForTransportDay(transportDay)"
|
|
144
|
+
(modelChange)="handleSkillsChange($event)"
|
|
145
|
+
[displayField]="'description'"
|
|
146
|
+
[label]="'SKILLS' | localize"
|
|
147
|
+
[multiselect]="true"
|
|
148
|
+
[searchDisabled]="false"
|
|
149
|
+
[searchPlaceholder]="'Zoeken...'"
|
|
150
|
+
></co-list-of-values>
|
|
151
|
+
<co-list-of-values class="list" [collection]="employees"
|
|
152
|
+
[model]="transportDay.employees"
|
|
153
|
+
(modelChange)="handleEmployeeChange($event)"
|
|
154
|
+
[displayField]="'familyName'"
|
|
155
|
+
[label]="'EMPLOYEES' | localize"
|
|
156
|
+
[multiselect]="true"
|
|
157
|
+
[searchDisabled]="false"
|
|
158
|
+
[searchPlaceholder]="'Zoeken...'"
|
|
159
|
+
></co-list-of-values>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
202
162
|
|
|
203
|
-
|
|
163
|
+
</div>
|
|
204
164
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
165
|
+
<div class="rules-wrapper">
|
|
166
|
+
<co-list-of-values class="list" [collection]="userGroups"
|
|
167
|
+
[displayField]="'description'"
|
|
168
|
+
[label]="'USER_GROUPS' | localize"
|
|
169
|
+
[multiselect]="true"
|
|
170
|
+
[searchDisabled]="false"
|
|
171
|
+
[searchPlaceholder]="'Zoeken...'"
|
|
172
|
+
></co-list-of-values>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</co-dialog>
|
|
216
176
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
177
|
+
<ng-template #headerTemplate>
|
|
178
|
+
<div class="dialog-header-wrapper">
|
|
179
|
+
<div class="row">
|
|
180
|
+
<co-icon class="small" [iconData]="iconCacheService.getIcon(icons.SlidersUpRegular)"></co-icon>
|
|
181
|
+
<span class="bold" [textContent]="'PLANNING_RULES' | localize"></span>
|
|
182
|
+
</div>
|
|
223
183
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
184
|
+
<div class="row">
|
|
185
|
+
<span class="footer-header-title bold" [textContent]="transportDay?.transport?.registrationNumber"></span>
|
|
186
|
+
<div class="icon">
|
|
187
|
+
<co-icon class=""
|
|
188
|
+
[iconData]="iconCacheService.getIcon(icons.TruckContainerDuo)"></co-icon>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
229
191
|
</div>
|
|
230
|
-
|
|
231
|
-
</div>
|
|
232
|
-
</ng-template>
|
|
192
|
+
</ng-template>
|
|
233
193
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
194
|
+
<ng-template #footerTemplate>
|
|
195
|
+
<div class="co-dialog-footer-button-wrapper">
|
|
196
|
+
<co-button class="save-button"
|
|
197
|
+
(click)="handleCommitClick()"
|
|
198
|
+
[iconData]="iconCacheService.getIcon(icons.CheckDuotone)"></co-button>
|
|
199
|
+
<co-button class="close-button"
|
|
200
|
+
(click)="closePopup()" [iconData]="iconCacheService.getIcon(icons.Crossskinny)"></co-button>
|
|
201
|
+
</div>
|
|
202
|
+
</ng-template>
|
|
243
203
|
|
|
244
204
|
`,
|
|
245
205
|
encapsulation: ViewEncapsulation.None
|
|
@@ -255,6 +215,6 @@ DeliveryPlanningOverviewTileSettingsPopupComponent.propDecorators = {
|
|
|
255
215
|
closeEvent: [{ type: Output }],
|
|
256
216
|
onSaveAction: [{ type: Output }],
|
|
257
217
|
availabilityChecked: [{ type: Output }],
|
|
258
|
-
showClass: [{ type: HostBinding, args: [
|
|
218
|
+
showClass: [{ type: HostBinding, args: ['class.co-delivery-planning-overview-tile-settings-popup',] }]
|
|
259
219
|
};
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBT3hILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUU5RSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUdwRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQThHcEcsTUFBTSxPQUFPLGtEQUFrRDtJQThDN0QsWUFBb0Isd0JBQWlELEVBQVMsZ0JBQWtDLEVBQVUsWUFBeUM7UUFBL0ksNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBNkI7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LFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7S0FBQTs7O1lBL1FGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbURBQW1EO2dCQUM3RCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvR1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXJITyx1QkFBdUI7WUFFdkIsZ0JBQWdCO1lBRWhCLDJCQUEyQjs7OzJCQXlIaEMsS0FBSzt5QkFJTCxNQUFNOzJCQUdOLE1BQU07a0NBSU4sTUFBTTt3QkF1Qk4sV0FBVyxTQUFDLHlEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ib1wiO1xyXG5pbXBvcnQge0Rpc3RyaWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Rpc3RyaWN0LmJvXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XHJcbmltcG9ydCB7U2tpbGx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2tpbGwuYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtVc2VyR3JvdXB9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdXNlci1ncm91cC5ib1wiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGVsaXZlcnktcGxhbm5pbmcvc2VydmljZS9kZWxpdmVyeS1wbGFubmluZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmcuYm9cIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kaWFsb2cgW3Nob3dDbG9zZUljb25dPVwidHJ1ZVwiIChjbG9zZUNsaWNrKT1cImNsb3NlUG9wdXAoKVwiIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJvZHktd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJydWxlcy13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGF2YWlsYWJsZVwiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggWyhtb2RlbCldPVwidHJhbnNwb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInQVZBSUxBQkxFJyB8IGxvY2FsaXplXCI+PC9zcGFuPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYXZhaWxhYmxlXCI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzIGNsYXNzPVwibGlzdFwiIFtjb2xsZWN0aW9uXT1cImRpc3RyaWN0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJkaXN0cmljdHNGb3JUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVEaXN0cmljdHNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRElTVFJJQ1RTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1pvZWtlbi4uLidcIlxyXG5cclxuICAgICAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgY2xhc3M9XCJsaXN0XCIgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImRlbGl2ZXJ5TWV0aG9kc0ZvclRyYW5zcG9ydERheSh0cmFuc3BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0RFTElWRVJZX01FVEhPRFMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInWm9la2VuLi4uJ1wiXHJcbiAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBjbGFzcz1cImxpc3RcIiBbY29sbGVjdGlvbl09XCJza2lsbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwic2tpbGxzRm9yVHJhbnNwb3J0RGF5KHRyYW5zcG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2tpbGxzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NLSUxMUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaERpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrZW4uLi4nXCJcclxuICAgICAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgY2xhc3M9XCJsaXN0XCIgW2NvbGxlY3Rpb25dPVwiZW1wbG95ZWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInRyYW5zcG9ydERheS5lbXBsb3llZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRW1wbG95ZWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2ZhbWlseU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidFTVBMT1lFRVMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInWm9la2VuLi4uJ1wiXHJcbiAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzIGNsYXNzPVwibGlzdFwiIFtjb2xsZWN0aW9uXT1cInVzZXJHcm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVU0VSX0dST1VQUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrZW4uLi4nXCJcclxuICAgICAgICAgID48L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY28tZGlhbG9nPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNtYWxsXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5TbGlkZXJzVXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9sZFwiIFt0ZXh0Q29udGVudF09XCInUExBTk5JTkdfUlVMRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9vdGVyLWhlYWRlci10aXRsZSBib2xkXCIgW3RleHRDb250ZW50XT1cInRyYW5zcG9ydERheT8udHJhbnNwb3J0Py5yZWdpc3RyYXRpb25OdW1iZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWZvb3Rlci1idXR0b24td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJzYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ29tbWl0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcHVwKClcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZVNldHRpbmdzUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyBzZXR0aW5nc0NoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25TYXZlQWN0aW9uOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYXZhaWxhYmlsaXR5Q2hlY2tlZDogRXZlbnRFbWl0dGVyPHt0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFufT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFufT4oKTtcclxuXHJcbiAgcHVibGljIGdldCBkaXN0cmljdHMoKTogRGlzdHJpY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGlzdHJpY3RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkZWxpdmVyeU1ldGhvZHMoKTogRGVsaXZlcnlNZXRob2RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsaXZlcnlNZXRob2RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbXBsb3llZXMoKTogUmVsYXRpb25MaXN0T2JqZWN0W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmVtcGxveWVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2tpbGxzKCk6IFNraWxsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnNraWxscztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdXNlckdyb3VwcygpOiBVc2VyR3JvdXBbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudXNlckdyb3VwcztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUtc2V0dGluZ3MtcG9wdXBcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZWxpdmVyeVBsYW5uaW5nU2VydmljZTogRGVsaXZlcnlQbGFubmluZ1NlcnZpY2UsIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLCBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5hdmFpbGFiaWxpdHlDaGVja0V2ZW50LnN1YnNjcmliZSggYXN5bmModHJhbnNJZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCh0cmFuc0lkKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKCBzdWIgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBwdWJsaWMgZGlzdHJpY3RzRm9yVHJhbnNwb3J0RGF5KHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogRGlzdHJpY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXN0cmljdHM/LmZpbHRlcigoZGlzdHJpY3Q6IERpc3RyaWN0KSA9PlxyXG4gICAgICB0cmFuc3BvcnREYXkuZGlzdHJpY3RzLmluY2x1ZGVzKGRpc3RyaWN0Py5kaXN0cmljdElkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZHNGb3JUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBEZWxpdmVyeU1ldGhvZFtdIHtcclxuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5TWV0aG9kcz8uZmlsdGVyKChkZWxpdmVyeU1ldGhvZDogRGVsaXZlcnlNZXRob2QpID0+XHJcbiAgICAgIHRyYW5zcG9ydERheS5kZWxpdmVyeU1ldGhvZHMuaW5jbHVkZXMoZGVsaXZlcnlNZXRob2Q/LmNvZGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBza2lsbHNGb3JUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBTa2lsbFtdIHtcclxuICAgIHJldHVybiB0aGlzLnNraWxscz8uZmlsdGVyKChza2lsbDogU2tpbGwpID0+XHJcbiAgICAgIHRyYW5zcG9ydERheS5za2lsbHMuaW5jbHVkZXMoc2tpbGw/LnNraWxsSWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVtcGxveWVlQ2hhbmdlKGV2ZW50OiBSZWxhdGlvbkxpc3RPYmplY3RbXSkge1xyXG4gICAgZXZlbnQuZm9yRWFjaCggcmVsYXRpb24gPT4ge1xyXG4gICAgICBpZighdGhpcy50cmFuc3BvcnREYXkuZW1wbG95ZWVzLmZpbmQoIGVtcGxveWVlID0+IGVtcGxveWVlID09PSByZWxhdGlvbikpIHtcclxuICAgICAgICB0aGlzLnRyYW5zcG9ydERheS5lbXBsb3llZXMucHVzaCggcmVsYXRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmKCF0aGlzLnNldHRpbmdzQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2tpbGxzQ2hhbmdlKGV2ZW50OiBTa2lsbFtdKSB7XHJcbiAgICBldmVudC5mb3JFYWNoKCAoc2tpbGw6IFNraWxsKSA9PiB7XHJcbiAgICAgIGlmKCF0aGlzLnRyYW5zcG9ydERheS5za2lsbHMuZmluZCggZGF5U2tpbGwgPT4gZGF5U2tpbGwgPT09IHNraWxsLnNraWxsSWQpKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc3BvcnREYXkuc2tpbGxzLnB1c2goc2tpbGwuc2tpbGxJZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYoIXRoaXMuc2V0dGluZ3NDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxpdmVyeU1ldGhvZENoYW5nZShldmVudDogRGVsaXZlcnlNZXRob2RbXSkge1xyXG4gICAgZXZlbnQuZm9yRWFjaCggKG1ldGhvZDogRGVsaXZlcnlNZXRob2QpID0+IHtcclxuICAgICAgaWYoIXRoaXMudHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5maW5kKCBkZWxpdmVyeU1ldGhvZCA9PiBkZWxpdmVyeU1ldGhvZCA9PT0gbWV0aG9kLmNvZGUpKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLnB1c2gobWV0aG9kLmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmKCF0aGlzLnNldHRpbmdzQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGlzdHJpY3RzQ2hhbmdlKGV2ZW50OiBEaXN0cmljdFtdKSB7XHJcbiAgICBldmVudC5mb3JFYWNoKCAoZGlzdHJpY3Q6IERpc3RyaWN0KSA9PiB7XHJcbiAgICAgIGlmKCF0aGlzLnRyYW5zcG9ydERheS5kaXN0cmljdHMuZmluZCggZGF5RGlzdHJpY3QgPT4gZGF5RGlzdHJpY3QgPT09IGRpc3RyaWN0LmRpc3RyaWN0SWQpKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLnB1c2goZGlzdHJpY3QuZGlzdHJpY3RJZC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZighdGhpcy5zZXR0aW5nc0NoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDb21taXRDbGljaygpIHtcclxuICAgIHRoaXMub25TYXZlQWN0aW9uLmVtaXQodGhpcy5zZXR0aW5nc0NoYW5nZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUF2YWlsYWJpbGl0eUNoZWNrZWQodHJhbnNJZDogbnVtYmVyKSB7XHJcbiAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRQbGFuT3JkZXIodHJhbnNJZCk7XHJcbiAgICBpZighcGxhbk9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKCBtZXRob2QgPT4gcGFyc2VJbnQobWV0aG9kLmNvZGUpID09PSBwbGFuT3JkZXIuZGVsaXZlcnlNZXRob2QpID8gdGhpcy5hdmFpbGFiaWxpdHlDaGVja2VkLmVtaXQoe3RyYW5zcG9ydERheTogdGhpcy50cmFuc3BvcnREYXksIGF2YWlsYWJsZTogdHJ1ZX0pIDogdGhpcy5hdmFpbGFiaWxpdHlDaGVja2VkLmVtaXQoe3RyYW5zcG9ydERheTogdGhpcy50cmFuc3BvcnREYXksIGF2YWlsYWJsZTogZmFsc2V9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIHBsYW5PcmRlci5saW5lcy5mb3JFYWNoKCAobGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgIGlmKCF0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKCBtZXRob2QgPT4gbWV0aG9kLmNvZGUgPT09IGxpbmUuZGVsaXZlcnlNZXRob2QpKSB7XHJcbiAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eUNoZWNrZWQuZW1pdCh7dHJhbnNwb3J0RGF5OiB0aGlzLnRyYW5zcG9ydERheSwgYXZhaWxhYmxlOiBhdmFpbGFibGV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIGxldCByZXF1ZXN0OiBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QgPSBuZXcgT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KCk7XHJcbiAgICBsZXQgZmlsdGVyT2JqOiBQbGFubmluZ0ZpbHRlck9iamVjdCA9IG5ldyBQbGFubmluZ0ZpbHRlck9iamVjdCgpO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkID0gdHJ1ZTtcclxuICAgIHJlcXVlc3QucGxhbm5pbmdJZCA9IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRQbGFubmluZy5wbGFubmluZ0lkO1xyXG4gICAgcmVxdWVzdC50cmFuc0lkID0gcGxhbk9yZGVyLnRyYW5zSWQ7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWRMaW5lSWQgPSBwbGFuT3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIHBsYW5PcmRlci5saW5lcy5wdXNoKC4uLmF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldE9yZGVyTGluZXNQbGFubmVkKHJlcXVlc3QpKTtcclxuICB9XHJcbn1cclxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU9oSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFFOUUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0seURBQXlELENBQUM7QUEyR3BHLE1BQU0sT0FBTyxrREFBa0Q7SUE0QzdELFlBQW9CLHdCQUFpRCxFQUFTLGdCQUFrQyxFQUFVLFlBQXlDO1FBQS9JLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQTZCO1FBMUNuSixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUNuQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQU01QixlQUFV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QjtRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUFuT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtREFBbUQ7Z0JBQzdELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9HVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBOUdPLHVCQUF1QjtZQUV2QixnQkFBZ0I7WUFFaEIsMkJBQTJCOzs7MkJBa0hoQyxLQUFLO3lCQUdMLE1BQU07MkJBR04sTUFBTTtrQ0FHTixNQUFNO3dCQXVCTixXQUFXLFNBQUMseURBQXlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ibyc7XHJcbmltcG9ydCB7RGlzdHJpY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kaXN0cmljdC5ibyc7XHJcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm8nO1xyXG5pbXBvcnQge1NraWxsfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2tpbGwuYm8nO1xyXG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtVc2VyR3JvdXB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC91c2VyLWdyb3VwLmJvJztcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVsaXZlcnktcGxhbm5pbmcvc2VydmljZS9kZWxpdmVyeS1wbGFubmluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGNvLWRpYWxvZyBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCIgKGNsb3NlQ2xpY2spPVwiY2xvc2VQb3B1cCgpXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhdmFpbGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbKG1vZGVsKV09XCJ0cmFuc3BvcnREYXkuYXZhaWxhYmxlT25EYXRlXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInQVZBSUxBQkxFJyB8IGxvY2FsaXplXCI+PC9zcGFuPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhdmFpbGFibGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBjbGFzcz1cImxpc3RcIiBbY29sbGVjdGlvbl09XCJkaXN0cmljdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZGlzdHJpY3RzRm9yVHJhbnNwb3J0RGF5KHRyYW5zcG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRGlzdHJpY3RzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0RJU1RSSUNUUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaERpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrZW4uLi4nXCJcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzIGNsYXNzPVwibGlzdFwiIFtjb2xsZWN0aW9uXT1cImRlbGl2ZXJ5TWV0aG9kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJkZWxpdmVyeU1ldGhvZHNGb3JUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVEZWxpdmVyeU1ldGhvZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGaWVsZF09XCInZGVzY3JpcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidERUxJVkVSWV9NRVRIT0RTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1pvZWtlbi4uLidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBjbGFzcz1cImxpc3RcIiBbY29sbGVjdGlvbl09XCJza2lsbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwic2tpbGxzRm9yVHJhbnNwb3J0RGF5KHRyYW5zcG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2tpbGxzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NLSUxMUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaERpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrZW4uLi4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgY2xhc3M9XCJsaXN0XCIgW2NvbGxlY3Rpb25dPVwiZW1wbG95ZWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInRyYW5zcG9ydERheS5lbXBsb3llZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRW1wbG95ZWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2ZhbWlseU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidFTVBMT1lFRVMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInWm9la2VuLi4uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgY2xhc3M9XCJsaXN0XCIgW2NvbGxlY3Rpb25dPVwidXNlckdyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVU0VSX0dST1VQUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrZW4uLi4nXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jby1kaWFsb2c+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJzbWFsbFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuU2xpZGVyc1VwUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9sZFwiIFt0ZXh0Q29udGVudF09XCInUExBTk5JTkdfUlVMRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb290ZXItaGVhZGVyLXRpdGxlIGJvbGRcIiBbdGV4dENvbnRlbnRdPVwidHJhbnNwb3J0RGF5Py50cmFuc3BvcnQ/LnJlZ2lzdHJhdGlvbk51bWJlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDb21taXRDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEdW90b25lKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3Jvc3Nza2lubnkpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlU2V0dGluZ3NQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyBzZXR0aW5nc0NoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvblNhdmVBY3Rpb246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGF2YWlsYWJpbGl0eUNoZWNrZWQ6IEV2ZW50RW1pdHRlcjx7IHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBhdmFpbGFibGU6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9PigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGRpc3RyaWN0cygpOiBEaXN0cmljdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kaXN0cmljdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRlbGl2ZXJ5TWV0aG9kcygpOiBEZWxpdmVyeU1ldGhvZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kZWxpdmVyeU1ldGhvZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlcygpOiBSZWxhdGlvbkxpc3RPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZW1wbG95ZWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBza2lsbHMoKTogU2tpbGxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2Uuc2tpbGxzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1c2VyR3JvdXBzKCk6IFVzZXJHcm91cFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS51c2VyR3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZWxpdmVyeVBsYW5uaW5nU2VydmljZTogRGVsaXZlcnlQbGFubmluZ1NlcnZpY2UsIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLCBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3RyaWN0c0ZvclRyYW5zcG9ydERheSh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IERpc3RyaWN0W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzdHJpY3RzPy5maWx0ZXIoKGRpc3RyaWN0OiBEaXN0cmljdCkgPT5cclxuICAgICAgdHJhbnNwb3J0RGF5LmRpc3RyaWN0cy5pbmNsdWRlcyhkaXN0cmljdD8uZGlzdHJpY3RJZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RzRm9yVHJhbnNwb3J0RGF5KHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogRGVsaXZlcnlNZXRob2RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxpdmVyeU1ldGhvZHM/LmZpbHRlcigoZGVsaXZlcnlNZXRob2Q6IERlbGl2ZXJ5TWV0aG9kKSA9PlxyXG4gICAgICB0cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLmluY2x1ZGVzKGRlbGl2ZXJ5TWV0aG9kPy5jb2RlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBza2lsbHNGb3JUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBTa2lsbFtdIHtcclxuICAgIHJldHVybiB0aGlzLnNraWxscz8uZmlsdGVyKChza2lsbDogU2tpbGwpID0+XHJcbiAgICAgIHRyYW5zcG9ydERheS5za2lsbHMuaW5jbHVkZXMoc2tpbGw/LnNraWxsSWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVtcGxveWVlQ2hhbmdlKGV2ZW50OiBSZWxhdGlvbkxpc3RPYmplY3RbXSkge1xyXG4gICAgZXZlbnQuZm9yRWFjaChyZWxhdGlvbiA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50cmFuc3BvcnREYXkuZW1wbG95ZWVzLmZpbmQoZW1wbG95ZWUgPT4gZW1wbG95ZWUgPT09IHJlbGF0aW9uKSkge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0RGF5LmVtcGxveWVlcy5wdXNoKHJlbGF0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3NDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTa2lsbHNDaGFuZ2UoZXZlbnQ6IFNraWxsW10pIHtcclxuICAgIGV2ZW50LmZvckVhY2goKHNraWxsOiBTa2lsbCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudHJhbnNwb3J0RGF5LnNraWxscy5maW5kKGRheVNraWxsID0+IGRheVNraWxsID09PSBza2lsbC5za2lsbElkKSkge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0RGF5LnNraWxscy5wdXNoKHNraWxsLnNraWxsSWQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5zZXR0aW5nc0NoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKGV2ZW50OiBEZWxpdmVyeU1ldGhvZFtdKSB7XHJcbiAgICBldmVudC5mb3JFYWNoKChtZXRob2Q6IERlbGl2ZXJ5TWV0aG9kKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50cmFuc3BvcnREYXkuZGVsaXZlcnlNZXRob2RzLmZpbmQoZGVsaXZlcnlNZXRob2QgPT4gZGVsaXZlcnlNZXRob2QgPT09IG1ldGhvZC5jb2RlKSkge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0RGF5LmRlbGl2ZXJ5TWV0aG9kcy5wdXNoKG1ldGhvZC5jb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3NDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEaXN0cmljdHNDaGFuZ2UoZXZlbnQ6IERpc3RyaWN0W10pIHtcclxuICAgIGV2ZW50LmZvckVhY2goKGRpc3RyaWN0OiBEaXN0cmljdCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudHJhbnNwb3J0RGF5LmRpc3RyaWN0cy5maW5kKGRheURpc3RyaWN0ID0+IGRheURpc3RyaWN0ID09PSBkaXN0cmljdC5kaXN0cmljdElkKSkge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0RGF5LmRpc3RyaWN0cy5wdXNoKGRpc3RyaWN0LmRpc3RyaWN0SWQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5zZXR0aW5nc0NoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlUG9wdXAoKSB7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbW1pdENsaWNrKCkge1xyXG4gICAgdGhpcy5vblNhdmVBY3Rpb24uZW1pdCh0aGlzLnNldHRpbmdzQ2hhbmdlZCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|