@colijnit/transaction 255.1.45 → 255.1.47

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.
Files changed (63) hide show
  1. package/bundles/colijnit-transaction.umd.js +595 -240
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/avatar/avatar.component.js +8 -3
  5. package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +10 -1
  6. package/esm2015/lib/component/checkout/checkout.module.js +6 -2
  7. package/esm2015/lib/component/delivery-planning/service/delivery-planning.service.js +99 -33
  8. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-popup/delivery-planning-overview-popup.component.js +39 -25
  9. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-overview-short-line/delivery-planning-overview-short-line.component.js +4 -4
  10. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-overview-tile-line/delivery-planning-overview-tile-line.component.js +29 -11
  11. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-tile-status/delivery-planning-tile-status.component.js +67 -16
  12. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.js +39 -17
  13. package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.js +56 -30
  14. package/esm2015/lib/component/delivery-planning-main/delivery-planning-main.component.js +59 -46
  15. package/esm2015/lib/component/transaction-card/transaction-card-planning/transaction-card-planning.component.js +18 -3
  16. package/esm2015/lib/component/transaction-card/transaction-card-purchase-confirmation/transaction-card-purchase-confirmation.component.js +101 -96
  17. package/esm2015/lib/component/transaction-cash-register-dialog/transaction-cash-register-dialog.component.js +4 -4
  18. package/esm2015/lib/component/transaction-header/transaction-header/transaction-header.component.js +13 -11
  19. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +2 -3
  20. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-order.component.js +7 -2
  21. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +3 -8
  22. package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +10 -4
  23. package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-service-order/transaction-lines-side-panel-service-order.component.js +6 -4
  24. package/esm2015/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-service-order/transaction-lines-side-panel-service-order.module.js +4 -3
  25. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.component.js +5 -2
  26. package/esm2015/lib/component/transaction-service-overview/components/transaction-service-message.component.js +3 -2
  27. package/esm2015/lib/component/transaction-service-overview/transaction-service-overview.component.js +29 -20
  28. package/esm2015/lib/component/transaction-service-overview/transaction-service-overview.module.js +4 -3
  29. package/esm2015/lib/enum/checkout-cfg-name.enum.js +3 -1
  30. package/esm2015/lib/enum/delivery-planning-update-actions.enum.js +8 -0
  31. package/esm2015/lib/enum/transaction-cfg-name.enum.js +12 -1
  32. package/esm2015/lib/service/transaction-connector-adapter.service.js +12 -1
  33. package/esm2015/lib/service/transaction-connector.service.js +6 -1
  34. package/esm2015/lib/service/transaction-payment.service.js +3 -3
  35. package/esm2015/lib/transaction-version.js +3 -3
  36. package/fesm2015/colijnit-transaction.js +622 -322
  37. package/fesm2015/colijnit-transaction.js.map +1 -1
  38. package/lib/component/delivery-planning/service/delivery-planning.service.d.ts +11 -7
  39. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-popup/delivery-planning-overview-popup.component.d.ts +10 -7
  40. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-overview-short-line/delivery-planning-overview-short-line.component.d.ts +1 -1
  41. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-overview-tile-line/delivery-planning-overview-tile-line.component.d.ts +9 -2
  42. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-overview-tile-line/style/_layout.scss +6 -0
  43. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-tile-status/delivery-planning-tile-status.component.d.ts +18 -7
  44. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/component/delivery-planning-tile-status/style/_layout.scss +12 -0
  45. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.d.ts +20 -5
  46. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/style/_layout.scss +2 -2
  47. package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/style/_material-definition.scss +1 -1
  48. package/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.d.ts +23 -10
  49. package/lib/component/delivery-planning-main/delivery-planning-main.component.d.ts +14 -7
  50. package/lib/component/transaction-card/transaction-card/style/_layout.scss +14 -1
  51. package/lib/component/transaction-card/transaction-card-planning/transaction-card-planning.component.d.ts +2 -0
  52. package/lib/component/transaction-header/transaction-header/style/_layout.scss +4 -0
  53. package/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.d.ts +3 -2
  54. package/lib/component/transaction-lines-side-panel/transaction-lines-side-panel-service-order/transaction-lines-side-panel-service-order.component.d.ts +2 -0
  55. package/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.component.d.ts +1 -0
  56. package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +1 -1
  57. package/lib/component/transaction-service-overview/style/_layout.scss +14 -6
  58. package/lib/enum/checkout-cfg-name.enum.d.ts +2 -0
  59. package/lib/enum/delivery-planning-update-actions.enum.d.ts +6 -0
  60. package/lib/enum/transaction-cfg-name.enum.d.ts +12 -1
  61. package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
  62. package/lib/service/transaction-connector.service.d.ts +1 -0
  63. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Injectable, QueryList } from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
3
  import { TransactionConnectorService } from "../../../service/transaction-connector.service";
4
4
  import { DeliveryPlanningCalendarModes } from "../../../enum/delivery-planning-calendar-modes.enum";
5
5
  import { CalendarView } from '@colijnit/sharedcomponents';
@@ -18,12 +18,12 @@ export class DeliveryPlanningService {
18
18
  this._transaction = _transaction;
19
19
  this._dragging = false;
20
20
  this._planTransportWeek = [];
21
+ this._planTransportWeekArr = [];
21
22
  this._deliveryMethods = [];
22
23
  this._districts = [];
23
24
  this._skills = [];
24
25
  this._employees = [];
25
26
  this._userGroups = [];
26
- this._tilesQueryList = new QueryList();
27
27
  this.currentCalendarMode = DeliveryPlanningCalendarModes.Week;
28
28
  this.currentTileMode = DeliveryPlanningTileModes.Normal;
29
29
  this.datePlanningMode = CalendarView.WeekView;
@@ -31,6 +31,7 @@ export class DeliveryPlanningService {
31
31
  this.currentPlanningMode = DeliveryPlanningModes.Transaction;
32
32
  this.currentStartDate = new Date();
33
33
  this.availabilityCheckEvent = new Subject();
34
+ this.reRenderHourScheduling = new Subject();
34
35
  }
35
36
  get dragging() {
36
37
  return this._dragging;
@@ -38,6 +39,9 @@ export class DeliveryPlanningService {
38
39
  get planTransportWeek() {
39
40
  return this._planTransportWeek;
40
41
  }
42
+ get planTransportWeekArr() {
43
+ return this._planTransportWeekArr;
44
+ }
41
45
  get deliveryMethods() {
42
46
  return this._deliveryMethods;
43
47
  }
@@ -53,9 +57,6 @@ export class DeliveryPlanningService {
53
57
  get userGroups() {
54
58
  return this._userGroups;
55
59
  }
56
- get queryList() {
57
- return this._tilesQueryList;
58
- }
59
60
  set dragging(value) {
60
61
  if (!this._dragging && value) {
61
62
  this.availabilityCheckEvent.next(this.currentTransId);
@@ -65,6 +66,9 @@ export class DeliveryPlanningService {
65
66
  set planTransportWeek(value) {
66
67
  this._planTransportWeek = value;
67
68
  }
69
+ set planTransportWeekArr(value) {
70
+ this._planTransportWeekArr = value;
71
+ }
68
72
  set deliveryMethods(methods) {
69
73
  this._deliveryMethods = methods;
70
74
  }
@@ -87,14 +91,16 @@ export class DeliveryPlanningService {
87
91
  }
88
92
  getTransportOrders(planningTransportWeekDay) {
89
93
  return __awaiter(this, void 0, void 0, function* () {
90
- let request = new GetTransportOrdersRequest();
91
- request.transportId = planningTransportWeekDay.transport.transportId;
92
- request.date = planningTransportWeekDay.date;
93
- request.planningId = this.currentPlanning.planningId;
94
- const orderResponse = yield this._transaction.getTransportOrders(request);
95
- if (orderResponse) {
96
- planningTransportWeekDay.plannedOrders = orderResponse;
97
- planningTransportWeekDay.ordersLoaded = true;
94
+ if (planningTransportWeekDay.transport) {
95
+ let request = new GetTransportOrdersRequest();
96
+ request.transportId = planningTransportWeekDay.transport.transportId;
97
+ request.date = planningTransportWeekDay.date;
98
+ request.planningId = this.currentPlanning.planningId;
99
+ const orderResponse = yield this._transaction.getTransportOrders(request);
100
+ if (orderResponse && orderResponse.length > 0) {
101
+ planningTransportWeekDay.plannedOrders = orderResponse;
102
+ planningTransportWeekDay.ordersLoaded = true;
103
+ }
98
104
  }
99
105
  return planningTransportWeekDay;
100
106
  });
@@ -114,32 +120,92 @@ export class DeliveryPlanningService {
114
120
  return request;
115
121
  }
116
122
  }
117
- addHours(date, hours) {
118
- const hoursToAdd = hours * 60 * 60 * 1000;
119
- date.setTime(date.getTime() + hoursToAdd);
120
- return date;
121
- }
122
- queryListTile(transportId) {
123
- let newTile;
124
- this._tilesQueryList.forEach(tile => {
125
- if (tile.transportDay.transport.transportId === transportId) {
126
- newTile = tile;
127
- }
128
- });
129
- return newTile;
130
- }
131
123
  getPlanningTransportWeek() {
132
124
  return __awaiter(this, void 0, void 0, function* () {
133
- let weekArrays = [];
134
125
  this._transaction.getPlanTransportWeek(this.currentStartDate, this.currentPlanning.planningId).then((result) => {
135
126
  if (result.length > 0) {
136
- result.forEach((team) => {
137
- weekArrays.push(Object.keys(team).sort().map(key => team[key]));
138
- });
127
+ this._planTransportWeek = result;
128
+ this._planTransportWeekArr = this.convertPlanningTransportWeekToArray(this._planTransportWeek);
129
+ }
130
+ });
131
+ });
132
+ }
133
+ updatePlanningTransportValues() {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ // Get new planning transport week data from the backend
136
+ let newPlanningTransportWeek = yield this._transaction.getPlanTransportWeek(this.currentStartDate, this.currentPlanning.planningId);
137
+ // Convert the new planning transport week data to a nested array
138
+ let newPlanningNestedArr = this.convertPlanningTransportWeekToArray(newPlanningTransportWeek);
139
+ // Update the old nested array (this._planTransportWeekArr) with new values
140
+ this._planTransportWeekArr.forEach((oldWeekDays, weekIndex) => {
141
+ const newWeekDays = newPlanningNestedArr[weekIndex];
142
+ // Compare each day's data in the old and new nested arrays
143
+ newWeekDays.forEach((newDay, dayIndex) => __awaiter(this, void 0, void 0, function* () {
144
+ const oldDay = oldWeekDays[dayIndex];
145
+ // Check for changes and update only changed properties
146
+ yield this._updateChangedProperties(oldDay, newDay);
147
+ }));
148
+ });
149
+ });
150
+ }
151
+ // Function to update only the changed properties
152
+ _updateChangedProperties(oldDay, newDay) {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ // List of properties to compare
155
+ const propertiesToCompare = [
156
+ 'minutes',
157
+ 'maxMinutes',
158
+ 'maxFactor',
159
+ 'orderAmount',
160
+ 'load',
161
+ 'maxOrderAmount',
162
+ 'factor',
163
+ ];
164
+ const transportPropertiesToCompare = [
165
+ 'plannedOrders'
166
+ ];
167
+ propertiesToCompare.forEach(property => {
168
+ // Compare and update only if there's a change
169
+ if (JSON.stringify(oldDay[property]) !== JSON.stringify(newDay[property])) {
170
+ oldDay[property] = newDay[property];
171
+ }
172
+ });
173
+ transportPropertiesToCompare.forEach(property => {
174
+ if (oldDay.transport && newDay.transport) {
175
+ if (JSON.stringify(oldDay.transport[property] !== JSON.stringify(newDay.transport[property]))) {
176
+ oldDay.transport[property] = newDay === null || newDay === void 0 ? void 0 : newDay.transport[property];
177
+ }
178
+ }
179
+ });
180
+ yield this.getTransportOrders(oldDay);
181
+ });
182
+ }
183
+ convertPlanningTransportWeekToArray(planningTransportWeek) {
184
+ let weekArrays = [];
185
+ if (planningTransportWeek.length > 0) {
186
+ planningTransportWeek.forEach((team) => {
187
+ weekArrays.push(Object.keys(team).sort().map(key => team[key]));
188
+ });
189
+ }
190
+ return weekArrays;
191
+ }
192
+ convertToPlanTransportWeek(nestedArray) {
193
+ let planTransportWeeks = [];
194
+ nestedArray.forEach((weekDays) => {
195
+ let planTransportWeek = {}; // Create an empty object to hold the week's days
196
+ // Start from "day1" and assign the PlanningTransportWeekDay objects (excluding the transportId)
197
+ weekDays.forEach((day, dayIndex) => {
198
+ if (dayIndex === 7) {
199
+ planTransportWeek['transportId'] = weekDays[dayIndex];
200
+ }
201
+ else {
202
+ planTransportWeek[`day${dayIndex + 1}`] = day; // "day1", "day2", etc.
139
203
  }
140
204
  });
141
- return weekArrays;
205
+ // Push the object into the final array
206
+ planTransportWeeks.push(planTransportWeek);
142
207
  });
208
+ return planTransportWeeks;
143
209
  }
144
210
  totalAssemblyTime(planOrder) {
145
211
  var _a;
@@ -163,4 +229,4 @@ DeliveryPlanningService.decorators = [
163
229
  DeliveryPlanningService.ctorParameters = () => [
164
230
  { type: TransactionConnectorService }
165
231
  ];
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVwRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUUvRyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVqRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQVNwRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUUxRixPQUFPLEVBQWtCLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBSzlDLE1BQU0sT0FBTyx1QkFBdUI7SUFpR2xDLFlBQ1UsWUFBeUM7UUFBekMsaUJBQVksR0FBWixZQUFZLENBQTZCO1FBakczQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHVCQUFrQixHQUE0QixFQUFFLENBQUM7UUFDakQscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUN4QyxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBQzVCLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUF5QixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO1FBRTlCLG9CQUFlLEdBQXFELElBQUksU0FBUyxFQUFFLENBQUM7UUFJckYsd0JBQW1CLEdBQWtDLDZCQUE2QixDQUFDLElBQUksQ0FBQztRQUN4RixvQkFBZSxHQUE4Qix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7UUFDOUUscUJBQWdCLEdBQWlCLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDdkQsYUFBUSxHQUE4Qix5QkFBeUIsQ0FBQyxVQUFVLENBQUM7UUFDM0Usd0JBQW1CLEdBQTBCLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztRQUUvRSxxQkFBZ0IsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBS3BDLDJCQUFzQixHQUFtQixJQUFJLE9BQU8sRUFBVSxDQUFDO0lBNEVuRSxDQUFDO0lBekVKLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBS0QsSUFBVyxRQUFRLENBQUMsS0FBSztRQUN2QixJQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxpQkFBaUIsQ0FBRSxLQUFLO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsZUFBZSxDQUFDLE9BQXlCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLFNBQXNCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFNBQVMsQ0FBQyxTQUErQjtRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxNQUFNLENBQUUsTUFBZTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBR0QsSUFBVyxVQUFVLENBQUUsTUFBbUI7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQWFZLHFCQUFxQjs7WUFDaEMsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUFDLHdCQUFrRDs7WUFDaEYsSUFBSSxPQUFPLEdBQThCLElBQUkseUJBQXlCLEVBQUUsQ0FBQTtZQUN4RSxPQUFPLENBQUMsV0FBVyxHQUFHLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDckUsT0FBTyxDQUFDLElBQUksR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7WUFDN0MsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUNyRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUUsSUFBRyxhQUFhLEVBQUU7Z0JBQ2hCLHdCQUF3QixDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7Z0JBQ3ZELHdCQUF3QixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7YUFDOUM7WUFFRCxPQUFPLHdCQUF3QixDQUFDO1FBQ2xDLENBQUM7S0FBQTtJQUdNLDRCQUE0QixDQUFDLEtBQWdCO1FBQ2xELElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixJQUFJLE9BQU8sR0FBNkIsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZFLElBQUksU0FBUyxHQUF5QixJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDakUsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDdkIsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUNyRCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDaEMsT0FBTyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFVLEVBQUUsS0FBYTtRQUN2QyxNQUFNLFVBQVUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW1CO1FBQ3RDLElBQUksT0FBOEMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7Z0JBQzNELE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVZLHdCQUF3Qjs7WUFDbkMsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBK0IsRUFBRSxFQUFFO2dCQUN0SSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNyQixNQUFNLENBQUMsT0FBTyxDQUFFLENBQUMsSUFBMkIsRUFBRSxFQUFFO3dCQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEUsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7S0FBQTtJQUVNLGlCQUFpQixDQUFDLFNBQW9COztRQUMzQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksS0FBSyxHQUFXLENBQUMsQ0FBQztZQUN0QixNQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLElBQW1CLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRTtvQkFDcEIsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQzs7OztZQXJMRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTNCTywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdDYWxlbmRhck1vZGVzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1jYWxlbmRhci1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSBcIi4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdmlldy1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7UGxhbm5pbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmcuYm9cIjtcclxuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW1cIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvXCI7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtdHJhbnNwb3J0LW9yZGVycy1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLmJvXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ01vZGVzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ib1wiO1xyXG5pbXBvcnQge0Rpc3RyaWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Rpc3RyaWN0LmJvXCI7XHJcbmltcG9ydCB7U2tpbGx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2tpbGwuYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtVc2VyR3JvdXB9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdXNlci1ncm91cC5ib1wiO1xyXG5pbXBvcnQge1xyXG4gIERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnRcclxufSBmcm9tIFwiLi4vLi4vZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2RyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcGxhblRyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdID0gW107XHJcbiAgcHJpdmF0ZSBfZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZGlzdHJpY3RzOiBEaXN0cmljdFtdID0gW107XHJcbiAgcHJpdmF0ZSBfc2tpbGxzOiBTa2lsbFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZW1wbG95ZWVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3VzZXJHcm91cHM6IFVzZXJHcm91cFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3RpbGVzUXVlcnlMaXN0OiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0KCk7XHJcblxyXG5cclxuXHJcbiAgcHVibGljIGN1cnJlbnRDYWxlbmRhck1vZGU6IERlbGl2ZXJ5UGxhbm5pbmdDYWxlbmRhck1vZGVzID0gRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMuV2VlaztcclxuICBwdWJsaWMgY3VycmVudFRpbGVNb2RlOiBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzID0gRGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlcy5Ob3JtYWw7XHJcbiAgcHVibGljIGRhdGVQbGFubmluZ01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuICBwdWJsaWMgdmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzLkZ1bGxzY3JlZW47XHJcbiAgcHVibGljIGN1cnJlbnRQbGFubmluZ01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdNb2Rlcy5UcmFuc2FjdGlvbjtcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nOiBQbGFubmluZztcclxuICBwdWJsaWMgY3VycmVudFN0YXJ0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgcHVibGljIGN1cnJlbnRUcmFuc0lkOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBsaW5lc1BsYW5PcmRlcjogUGxhbk9yZGVyO1xyXG5cclxuICBwdWJsaWMgYXZhaWxhYmlsaXR5Q2hlY2tFdmVudDpTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0IGRyYWdnaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwbGFuVHJhbnNwb3J0V2VlaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVsaXZlcnlNZXRob2RzKCk6IERlbGl2ZXJ5TWV0aG9kW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5TWV0aG9kcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzdHJpY3RzKCk6IERpc3RyaWN0W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3RyaWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZW1wbG95ZWVzKCk6IFJlbGF0aW9uTGlzdE9iamVjdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9lbXBsb3llZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNraWxscygpOiBTa2lsbFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9za2lsbHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHVzZXJHcm91cHMoKTogVXNlckdyb3VwW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJHcm91cHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHF1ZXJ5TGlzdCgpOiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbGVzUXVlcnlMaXN0O1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcHVibGljIHNldCBkcmFnZ2luZyh2YWx1ZSkge1xyXG4gICAgaWYoIXRoaXMuX2RyYWdnaW5nICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Q2hlY2tFdmVudC5uZXh0KHRoaXMuY3VycmVudFRyYW5zSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZHJhZ2dpbmcgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgcGxhblRyYW5zcG9ydFdlZWsoIHZhbHVlKSB7XHJcbiAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlayA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkZWxpdmVyeU1ldGhvZHMobWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlNZXRob2RzID0gbWV0aG9kcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZGlzdHJpY3RzKGRpc3RyaWN0czogIERpc3RyaWN0W10pIHtcclxuICAgIHRoaXMuX2Rpc3RyaWN0cyA9IGRpc3RyaWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZW1wbG95ZWVzKGVtcGxveWVlczogUmVsYXRpb25MaXN0T2JqZWN0W10pIHtcclxuICAgIHRoaXMuX2VtcGxveWVlcyA9IGVtcGxveWVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2tpbGxzKCBza2lsbHM6IFNraWxsW10pIHtcclxuICAgIHRoaXMuX3NraWxscyA9IHNraWxscztcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc2V0IHVzZXJHcm91cHMoIGdyb3VwczogVXNlckdyb3VwW10pIHtcclxuICAgIHRoaXMuX3VzZXJHcm91cHMgPSBncm91cHM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcblxyXG4gICkge31cclxuXHJcblxyXG5cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldE9yZGVyU2VxdWVuY2VWYWx1ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldFNlcXVlbmNlVmFsdWUoU2VxdWVuY2VOYW1lLlBsYW5MaW5lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMocGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheT4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QgPSBuZXcgR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCgpXHJcbiAgICByZXF1ZXN0LnRyYW5zcG9ydElkID0gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LnRyYW5zcG9ydC50cmFuc3BvcnRJZDtcclxuICAgIHJlcXVlc3QuZGF0ZSA9IHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS5kYXRlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIGNvbnN0IG9yZGVyUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICBpZihvcmRlclJlc3BvbnNlKSB7XHJcbiAgICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzID0gb3JkZXJSZXNwb25zZTtcclxuICAgICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5Lm9yZGVyc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgbWFrZU9yZGVyTGluZXNQbGFubmVkUmVxdWVzdChvcmRlcjogUGxhbk9yZGVyKTogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0IHtcclxuICAgIGlmKHRoaXMuY3VycmVudFBsYW5uaW5nKSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QgPSBuZXcgT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KCk7XHJcbiAgICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICAgIHJlcXVlc3QucGxhbm5lZCA9IHRydWU7XHJcbiAgICAgIHJlcXVlc3QucGxhbm5pbmdJZCA9IHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICAgIHJlcXVlc3QudHJhbnNJZCA9IG9yZGVyLnRyYW5zSWQ7XHJcbiAgICAgIHJlcXVlc3QucGxhbm5lZExpbmVJZCA9IG9yZGVyLnBsYW5uZWRMaW5lSWQ7XHJcbiAgICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgICBmaWx0ZXJPYmouYmVnaW5DdXJyZW50V2VlayA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGZpbHRlck9iai5jaGVja09yZGVyTGluZXMgPSAxO1xyXG4gICAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSG91cnMoZGF0ZTogRGF0ZSwgaG91cnM6IG51bWJlcikge1xyXG4gICAgY29uc3QgaG91cnNUb0FkZCA9IGhvdXJzICogNjAgKiA2MCAqIDEwMDA7XHJcbiAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyBob3Vyc1RvQWRkKTtcclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHF1ZXJ5TGlzdFRpbGUodHJhbnNwb3J0SWQ6IG51bWJlcik6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQge1xyXG4gICAgbGV0IG5ld1RpbGU6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ7XHJcbiAgICB0aGlzLl90aWxlc1F1ZXJ5TGlzdC5mb3JFYWNoKHRpbGUgPT4ge1xyXG4gICAgICBpZih0aWxlLnRyYW5zcG9ydERheS50cmFuc3BvcnQudHJhbnNwb3J0SWQgPT09IHRyYW5zcG9ydElkKSB7XHJcbiAgICAgICBuZXdUaWxlID0gdGlsZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3VGlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmluZ1RyYW5zcG9ydFdlZWsoKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgbGV0IHdlZWtBcnJheXM6IGFueVtdID0gW107XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5nZXRQbGFuVHJhbnNwb3J0V2Vlayh0aGlzLmN1cnJlbnRTdGFydERhdGUsIHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQpLnRoZW4oKHJlc3VsdDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10pID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzdWx0LmZvckVhY2goICh0ZWFtOiBQbGFubmluZ1RyYW5zcG9ydFdlZWspID0+IHtcclxuICAgICAgICAgIHdlZWtBcnJheXMucHVzaChPYmplY3Qua2V5cyh0ZWFtKS5zb3J0KCkubWFwKGtleSA9PiB0ZWFtW2tleV0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b3RhbEFzc2VtYmx5VGltZShwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgaWYgKHBsYW5PcmRlcikge1xyXG4gICAgICBsZXQgdG90YWw6IG51bWJlciA9IDA7XHJcbiAgICAgIHBsYW5PcmRlcj8ubGluZXM/LmZvckVhY2goKGxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICBpZiAobGluZS5taW51dGVzID4gMCkge1xyXG4gICAgICAgICAgdG90YWwgKz0gbGluZS5taW51dGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0b3RhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRixPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFFMUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBRXBGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBRS9HLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWpGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFFQUFxRSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBTXBHLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUs3QixNQUFNLE9BQU8sdUJBQXVCO0lBbUdsQyxZQUNVLFlBQXlDO1FBQXpDLGlCQUFZLEdBQVosWUFBWSxDQUE2QjtRQW5HM0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQix1QkFBa0IsR0FBNEIsRUFBRSxDQUFDO1FBQ2pELDBCQUFxQixHQUFpQyxFQUFFLENB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QXVDO1lBQ3ZDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBMEMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRU0saUJBQWlCLENBQUMsU0FBb0I7O1FBQzNDLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFDO1lBQ3RCLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLEtBQUssMENBQUUsT0FBTyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO29CQUNwQixLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDOzs7O1lBaFFGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBeEJPLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdDYWxlbmRhck1vZGVzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1jYWxlbmRhci1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSBcIi4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdmlldy1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7UGxhbm5pbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmcuYm9cIjtcclxuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW1cIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvXCI7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtdHJhbnNwb3J0LW9yZGVycy1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLmJvXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ01vZGVzfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ib1wiO1xyXG5pbXBvcnQge0Rpc3RyaWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Rpc3RyaWN0LmJvXCI7XHJcbmltcG9ydCB7U2tpbGx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2tpbGwuYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtVc2VyR3JvdXB9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdXNlci1ncm91cC5ib1wiO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXN9IGZyb20gXCIuLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtbW9kZXMuZW51bVwiO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2RyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcGxhblRyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdID0gW107XHJcbiAgcHJpdmF0ZSBfcGxhblRyYW5zcG9ydFdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZGlzdHJpY3RzOiBEaXN0cmljdFtdID0gW107XHJcbiAgcHJpdmF0ZSBfc2tpbGxzOiBTa2lsbFtdID0gW107XHJcbiAgcHJpdmF0ZSBfZW1wbG95ZWVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3VzZXJHcm91cHM6IFVzZXJHcm91cFtdID0gW107XHJcblxyXG5cclxuICBwdWJsaWMgY3VycmVudENhbGVuZGFyTW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG4gIHB1YmxpYyBjdXJyZW50VGlsZU1vZGU6IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzLk5vcm1hbDtcclxuICBwdWJsaWMgZGF0ZVBsYW5uaW5nTW9kZTogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWtWaWV3O1xyXG4gIHB1YmxpYyB2aWV3TW9kZTogRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nTW9kZTogRGVsaXZlcnlQbGFubmluZ01vZGVzID0gRGVsaXZlcnlQbGFubmluZ01vZGVzLlRyYW5zYWN0aW9uO1xyXG4gIHB1YmxpYyBjdXJyZW50UGxhbm5pbmc6IFBsYW5uaW5nO1xyXG4gIHB1YmxpYyBjdXJyZW50U3RhcnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICBwdWJsaWMgcGxhbk9yZGVyRGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgY3VycmVudFRyYW5zSWQ6IG51bWJlcjtcclxuICBwdWJsaWMgZGVsZXRpbmdPcmRlcjogUGxhbk9yZGVyO1xyXG4gIHB1YmxpYyBsaW5lc1BsYW5PcmRlcjogUGxhbk9yZGVyO1xyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHlDaGVja0V2ZW50OlN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwdWJsaWMgcmVSZW5kZXJIb3VyU2NoZWR1bGluZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0IGRyYWdnaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwbGFuVHJhbnNwb3J0V2VlaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGxhblRyYW5zcG9ydFdlZWtBcnIoKTpQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0FycjtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0IGRlbGl2ZXJ5TWV0aG9kcygpOiBEZWxpdmVyeU1ldGhvZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeU1ldGhvZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc3RyaWN0cygpOiBEaXN0cmljdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXN0cmljdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlcygpOiBSZWxhdGlvbkxpc3RPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1wbG95ZWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBza2lsbHMoKTogU2tpbGxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2tpbGxzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1c2VyR3JvdXBzKCk6IFVzZXJHcm91cFtdIHtcclxuICAgIHJldHVybiB0aGlzLl91c2VyR3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkcmFnZ2luZyh2YWx1ZSkge1xyXG4gICAgaWYoIXRoaXMuX2RyYWdnaW5nICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Q2hlY2tFdmVudC5uZXh0KHRoaXMuY3VycmVudFRyYW5zSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZHJhZ2dpbmcgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgcGxhblRyYW5zcG9ydFdlZWsoIHZhbHVlKSB7XHJcbiAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2VlayA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBwbGFuVHJhbnNwb3J0V2Vla0FyciggdmFsdWU6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pIHtcclxuICAgIHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrQXJyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGRlbGl2ZXJ5TWV0aG9kcyhtZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSB7XHJcbiAgICB0aGlzLl9kZWxpdmVyeU1ldGhvZHMgPSBtZXRob2RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkaXN0cmljdHMoZGlzdHJpY3RzOiAgRGlzdHJpY3RbXSkge1xyXG4gICAgdGhpcy5fZGlzdHJpY3RzID0gZGlzdHJpY3RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBlbXBsb3llZXMoZW1wbG95ZWVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fZW1wbG95ZWVzID0gZW1wbG95ZWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBza2lsbHMoIHNraWxsczogU2tpbGxbXSkge1xyXG4gICAgdGhpcy5fc2tpbGxzID0gc2tpbGxzO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzZXQgdXNlckdyb3VwcyggZ3JvdXBzOiBVc2VyR3JvdXBbXSkge1xyXG4gICAgdGhpcy5fdXNlckdyb3VwcyA9IGdyb3VwcztcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuXHJcbiAgKSB7fVxyXG5cclxuXHJcblxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJTZXF1ZW5jZVZhbHVlKCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0U2VxdWVuY2VWYWx1ZShTZXF1ZW5jZU5hbWUuUGxhbkxpbmUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFRyYW5zcG9ydE9yZGVycyhwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5PiB7XHJcbiAgICBpZihwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkudHJhbnNwb3J0KSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0ID0gbmV3IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QoKVxyXG4gICAgICByZXF1ZXN0LnRyYW5zcG9ydElkID0gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LnRyYW5zcG9ydC50cmFuc3BvcnRJZDtcclxuICAgICAgcmVxdWVzdC5kYXRlID0gcGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LmRhdGU7XHJcbiAgICAgIHJlcXVlc3QucGxhbm5pbmdJZCA9IHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICAgIGNvbnN0IG9yZGVyUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICAgIGlmIChvcmRlclJlc3BvbnNlICYmIG9yZGVyUmVzcG9uc2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzID0gb3JkZXJSZXNwb25zZTtcclxuICAgICAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkub3JkZXJzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG1ha2VPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3Qob3JkZXI6IFBsYW5PcmRlcik6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCB7XHJcbiAgICBpZih0aGlzLmN1cnJlbnRQbGFubmluZykge1xyXG4gICAgICBsZXQgcmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0ID0gbmV3IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCgpO1xyXG4gICAgICBsZXQgZmlsdGVyT2JqOiBQbGFubmluZ0ZpbHRlck9iamVjdCA9IG5ldyBQbGFubmluZ0ZpbHRlck9iamVjdCgpO1xyXG4gICAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLmN1cnJlbnRQbGFubmluZy5wbGFubmluZ0lkO1xyXG4gICAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgICByZXF1ZXN0LnBsYW5uZWRMaW5lSWQgPSBvcmRlci5wbGFubmVkTGluZUlkO1xyXG4gICAgICBmaWx0ZXJPYmoub25seUN1cnJlbnRXZWVrID0gdHJ1ZTtcclxuICAgICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBmaWx0ZXJPYmouY2hlY2tPcmRlckxpbmVzID0gMTtcclxuICAgICAgcmVxdWVzdC5maWx0ZXJPYmplY3QgPSBmaWx0ZXJPYmo7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBsYW5uaW5nVHJhbnNwb3J0V2VlaygpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5nZXRQbGFuVHJhbnNwb3J0V2Vlayh0aGlzLmN1cnJlbnRTdGFydERhdGUsIHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQpLnRoZW4oKHJlc3VsdDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10pID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fcGxhblRyYW5zcG9ydFdlZWsgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5fcGxhblRyYW5zcG9ydFdlZWtBcnIgPSB0aGlzLmNvbnZlcnRQbGFubmluZ1RyYW5zcG9ydFdlZWtUb0FycmF5KHRoaXMuX3BsYW5UcmFuc3BvcnRXZWVrKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRWYWx1ZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBHZXQgbmV3IHBsYW5uaW5nIHRyYW5zcG9ydCB3ZWVrIGRhdGEgZnJvbSB0aGUgYmFja2VuZFxyXG4gICAgbGV0IG5ld1BsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrW10gPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRQbGFuVHJhbnNwb3J0V2Vlayh0aGlzLmN1cnJlbnRTdGFydERhdGUsIHRoaXMuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgdGhlIG5ldyBwbGFubmluZyB0cmFuc3BvcnQgd2VlayBkYXRhIHRvIGEgbmVzdGVkIGFycmF5XHJcbiAgICBsZXQgbmV3UGxhbm5pbmdOZXN0ZWRBcnIgPSB0aGlzLmNvbnZlcnRQbGFubmluZ1RyYW5zcG9ydFdlZWtUb0FycmF5KG5ld1BsYW5uaW5nVHJhbnNwb3J0V2Vlayk7XHJcblxyXG4gICAgLy8gVXBkYXRlIHRoZSBvbGQgbmVzdGVkIGFycmF5ICh0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0Fycikgd2l0aCBuZXcgdmFsdWVzXHJcbiAgICB0aGlzLl9wbGFuVHJhbnNwb3J0V2Vla0Fyci5mb3JFYWNoKChvbGRXZWVrRGF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHdlZWtJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dlZWtEYXlzID0gbmV3UGxhbm5pbmdOZXN0ZWRBcnJbd2Vla0luZGV4XTtcclxuXHJcbiAgICAgIC8vIENvbXBhcmUgZWFjaCBkYXkncyBkYXRhIGluIHRoZSBvbGQgYW5kIG5ldyBuZXN0ZWQgYXJyYXlzXHJcbiAgICAgIG5ld1dlZWtEYXlzLmZvckVhY2goIGFzeW5jIChuZXdEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgZGF5SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9sZERheSA9IG9sZFdlZWtEYXlzW2RheUluZGV4XTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMgYW5kIHVwZGF0ZSBvbmx5IGNoYW5nZWQgcHJvcGVydGllc1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3VwZGF0ZUNoYW5nZWRQcm9wZXJ0aWVzKG9sZERheSwgbmV3RGF5KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4vLyBGdW5jdGlvbiB0byB1cGRhdGUgb25seSB0aGUgY2hhbmdlZCBwcm9wZXJ0aWVzXHJcbiAgcHJpdmF0ZSBhc3luYyBfdXBkYXRlQ2hhbmdlZFByb3BlcnRpZXMob2xkRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIG5ld0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBMaXN0IG9mIHByb3BlcnRpZXMgdG8gY29tcGFyZVxyXG4gICAgY29uc3QgcHJvcGVydGllc1RvQ29tcGFyZSA9IFtcclxuICAgICAgJ21pbnV0ZXMnLFxyXG4gICAgICAnbWF4TWludXRlcycsXHJcbiAgICAgICdtYXhGYWN0b3InLFxyXG4gICAgICAnb3JkZXJBbW91bnQnLFxyXG4gICAgICAnbG9hZCcsXHJcbiAgICAgICdtYXhPcmRlckFtb3VudCcsXHJcbiAgICAgICdmYWN0b3InLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCB0cmFuc3BvcnRQcm9wZXJ0aWVzVG9Db21wYXJlOiBzdHJpbmdbXSA9IFtcclxuICAgICAgJ3BsYW5uZWRPcmRlcnMnXHJcbiAgICBdO1xyXG5cclxuICAgIHByb3BlcnRpZXNUb0NvbXBhcmUuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgIC8vIENvbXBhcmUgYW5kIHVwZGF0ZSBvbmx5IGlmIHRoZXJlJ3MgYSBjaGFuZ2VcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG9sZERheVtwcm9wZXJ0eV0pICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXlbcHJvcGVydHldKSkge1xyXG4gICAgICAgIG9sZERheVtwcm9wZXJ0eV0gPSBuZXdEYXlbcHJvcGVydHldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0cmFuc3BvcnRQcm9wZXJ0aWVzVG9Db21wYXJlLmZvckVhY2goIHByb3BlcnR5ID0+IHtcclxuICAgICAgaWYob2xkRGF5LnRyYW5zcG9ydCAmJiBuZXdEYXkudHJhbnNwb3J0KSB7XHJcbiAgICAgIGlmKEpTT04uc3RyaW5naWZ5KG9sZERheS50cmFuc3BvcnRbcHJvcGVydHldICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXkudHJhbnNwb3J0W3Byb3BlcnR5XSkpKSB7XHJcbiAgICAgICAgICBvbGREYXkudHJhbnNwb3J0W3Byb3BlcnR5XSA9IG5ld0RheT8udHJhbnNwb3J0W3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKG9sZERheSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFBsYW5uaW5nVHJhbnNwb3J0V2Vla1RvQXJyYXkocGxhbm5pbmdUcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtbXSkge1xyXG4gICAgbGV0IHdlZWtBcnJheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10gPSBbXTtcclxuICAgIGlmIChwbGFubmluZ1RyYW5zcG9ydFdlZWsubGVuZ3RoID4gMCkge1xyXG4gICAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWsuZm9yRWFjaCggKHRlYW06IFBsYW5uaW5nVHJhbnNwb3J0V2VlaykgPT4ge1xyXG4gICAgICAgIHdlZWtBcnJheXMucHVzaChPYmplY3Qua2V5cyh0ZWFtKS5zb3J0KCkubWFwKGtleSA9PiB0ZWFtW2tleV0pKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2Vla0FycmF5cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0VG9QbGFuVHJhbnNwb3J0V2VlayhuZXN0ZWRBcnJheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdIHtcclxuICAgIGxldCBwbGFuVHJhbnNwb3J0V2Vla3M6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdID0gW107XHJcblxyXG4gICAgbmVzdGVkQXJyYXkuZm9yRWFjaCgod2Vla0RheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSA9PiB7XHJcbiAgICAgIGxldCBwbGFuVHJhbnNwb3J0V2VlazogYW55ID0ge307IC8vIENyZWF0ZSBhbiBlbXB0eSBvYmplY3QgdG8gaG9sZCB0aGUgd2VlaydzIGRheXNcclxuXHJcblxyXG4gICAgICAvLyBTdGFydCBmcm9tIFwiZGF5MVwiIGFuZCBhc3NpZ24gdGhlIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSBvYmplY3RzIChleGNsdWRpbmcgdGhlIHRyYW5zcG9ydElkKVxyXG4gICAgICB3ZWVrRGF5cy5mb3JFYWNoKChkYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgZGF5SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmKGRheUluZGV4ID09PSA3KSB7XHJcbiAgICAgICAgICBwbGFuVHJhbnNwb3J0V2Vla1sndHJhbnNwb3J0SWQnXSA9IHdlZWtEYXlzW2RheUluZGV4XTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGxhblRyYW5zcG9ydFdlZWtbYGRheSR7ZGF5SW5kZXggKyAxfWBdID0gZGF5OyAgLy8gXCJkYXkxXCIsIFwiZGF5MlwiLCBldGMuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFB1c2ggdGhlIG9iamVjdCBpbnRvIHRoZSBmaW5hbCBhcnJheVxyXG4gICAgICBwbGFuVHJhbnNwb3J0V2Vla3MucHVzaChwbGFuVHJhbnNwb3J0V2VlayBhcyBQbGFubmluZ1RyYW5zcG9ydFdlZWspO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBsYW5UcmFuc3BvcnRXZWVrcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b3RhbEFzc2VtYmx5VGltZShwbGFuT3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgaWYgKHBsYW5PcmRlcikge1xyXG4gICAgICBsZXQgdG90YWw6IG51bWJlciA9IDA7XHJcbiAgICAgIHBsYW5PcmRlcj8ubGluZXM/LmZvckVhY2goKGxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICBpZiAobGluZS5taW51dGVzID4gMCkge1xyXG4gICAgICAgICAgdG90YWwgKz0gbGluZS5taW51dGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0b3RhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, HostBinding, Output, ViewEncapsulation } from "@angular/core";
1
+ import { Component, EventEmitter, HostBinding, Output, ViewChild, ViewEncapsulation } from "@angular/core";
2
2
  import { IconCacheService } from "../../../../../../service/icon-cache.service";
3
3
  import { Icon } from "../../../../../../enum/icon.enum";
4
4
  import { PlanOrder } from "@colijnit/transactionapi/build/model/plan-order.bo";
@@ -43,50 +43,62 @@ export class DeliveryPlanningOverviewPopupComponent {
43
43
  this.onSucceededPlanAction.emit([this.planOrder, this.transportDay, this.week]);
44
44
  }
45
45
  startTimeForOrder() {
46
- return this.planOrder.startTime;
46
+ var _a, _b;
47
+ return (_b = (_a = this.planOrder) === null || _a === void 0 ? void 0 : _a.startTime) === null || _b === void 0 ? void 0 : _b.toLocaleString();
47
48
  }
48
49
  endTimeForOrder() {
49
- return this.planOrder.endTime;
50
+ var _a, _b;
51
+ return (_b = (_a = this.planOrder) === null || _a === void 0 ? void 0 : _a.endTime) === null || _b === void 0 ? void 0 : _b.toLocaleString();
50
52
  }
51
- handleStartTimeChange(timeString) {
52
- let originalPlanOrderDate = new Date(this.planOrder.startTime);
53
- let date = new Date(originalPlanOrderDate.getFullYear(), originalPlanOrderDate.getMonth(), originalPlanOrderDate.getDay(), parseInt(timeString[0]), 0);
54
- if (!isNaN(date.getTime())) {
55
- this.planOrder.startTime = date;
53
+ handleStartTimeChange() {
54
+ if (this.startTimeCompRef.model) {
55
+ this.planOrder.startTime = this.handleDateChange(this.startTimeCompRef.model);
56
56
  }
57
57
  }
58
- handleEndTimeChange(timeString) {
59
- let originalPlanOrderDate = new Date(this.planOrder.startTime);
60
- let date = new Date(originalPlanOrderDate.getFullYear(), originalPlanOrderDate.getMonth(), originalPlanOrderDate.getDay(), parseInt(timeString[0]), 0);
61
- if (!isNaN(date.getTime())) {
62
- this.planOrder.endTime = date;
58
+ handleEndTimeChange() {
59
+ if (this.endTimeCompRef.model) {
60
+ this.planOrder.endTime = this.handleDateChange(this.endTimeCompRef.model);
63
61
  }
64
62
  }
65
63
  handleInitialTimePlanning(transportWeekDay) {
66
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
64
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
67
65
  if (!((_a = this.planOrder) === null || _a === void 0 ? void 0 : _a.startTime) && ((_b = transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders) === null || _b === void 0 ? void 0 : _b.length) === 0) {
68
66
  this.planOrder.startTime = new Date(transportWeekDay.date);
69
67
  (_d = (_c = this.planOrder) === null || _c === void 0 ? void 0 : _c.startTime) === null || _d === void 0 ? void 0 : _d.setHours(8);
70
68
  (_f = (_e = this.planOrder) === null || _e === void 0 ? void 0 : _e.startTime) === null || _f === void 0 ? void 0 : _f.setMinutes(0);
71
69
  (_h = (_g = this.planOrder) === null || _g === void 0 ? void 0 : _g.startTime) === null || _h === void 0 ? void 0 : _h.setSeconds(0);
72
70
  }
73
- if (!((_j = this.planOrder) === null || _j === void 0 ? void 0 : _j.endTime) && (transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders.length) === 0) {
74
- this.planOrder.endTime = new Date((_k = this.planOrder) === null || _k === void 0 ? void 0 : _k.startTime);
75
- this.planOrder.endTime.setHours(((_m = (_l = this.planOrder) === null || _l === void 0 ? void 0 : _l.endTime) === null || _m === void 0 ? void 0 : _m.getHours()) + (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) > 0 ? (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) / 60) : 1));
71
+ if (!((_j = this.planOrder) === null || _j === void 0 ? void 0 : _j.endTime) && ((_k = transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders) === null || _k === void 0 ? void 0 : _k.length) === 0) {
72
+ this.planOrder.endTime = new Date((_l = this.planOrder) === null || _l === void 0 ? void 0 : _l.startTime);
73
+ this.planOrder.endTime.setHours(((_o = (_m = this.planOrder) === null || _m === void 0 ? void 0 : _m.endTime) === null || _o === void 0 ? void 0 : _o.getHours()) + (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) > 0 ? (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) / 60) : 1));
76
74
  this.planOrder.startTime.setMinutes(0);
77
75
  this.planOrder.startTime.setSeconds(0);
78
76
  }
79
- if ((transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders.length) > 0) {
77
+ if (((_p = transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders) === null || _p === void 0 ? void 0 : _p.length) > 0) {
80
78
  this.planOrder.startTime = new Date(transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.date);
81
- this.planOrder.startTime.setHours((_p = (_o = transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders[transportWeekDay.plannedOrders.length - 1]) === null || _o === void 0 ? void 0 : _o.endTime) === null || _p === void 0 ? void 0 : _p.getHours());
79
+ this.planOrder.startTime.setHours((_r = (_q = transportWeekDay === null || transportWeekDay === void 0 ? void 0 : transportWeekDay.plannedOrders[transportWeekDay.plannedOrders.length - 1]) === null || _q === void 0 ? void 0 : _q.endTime) === null || _r === void 0 ? void 0 : _r.getHours());
82
80
  this.planOrder.startTime.setMinutes(0);
83
81
  this.planOrder.startTime.setSeconds(0);
84
82
  this.planOrder.endTime = new Date(this.planOrder.startTime);
85
- this.planOrder.endTime.setHours(((_r = (_q = this.planOrder) === null || _q === void 0 ? void 0 : _q.endTime) === null || _r === void 0 ? void 0 : _r.getHours()) + (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) > 0 ? (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) / 60) : 1));
83
+ this.planOrder.endTime.setHours(((_t = (_s = this.planOrder) === null || _s === void 0 ? void 0 : _s.endTime) === null || _t === void 0 ? void 0 : _t.getHours()) + (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) > 0 ? (this.deliveryPlanningService.totalAssemblyTime(this.planOrder) / 60) : 1));
86
84
  this.planOrder.startTime.setMinutes(0);
87
85
  this.planOrder.startTime.setSeconds(0);
88
86
  }
89
87
  }
88
+ handleDateChange(text) {
89
+ let splitText;
90
+ splitText = text.split(":");
91
+ if (splitText) {
92
+ let date = new Date(this.transportDay.date);
93
+ date.setHours(parseInt(splitText[0]));
94
+ date.setMinutes(parseInt(splitText[1]));
95
+ date.setSeconds(0);
96
+ return date;
97
+ }
98
+ else {
99
+ return undefined;
100
+ }
101
+ }
90
102
  }
91
103
  DeliveryPlanningOverviewPopupComponent.decorators = [
92
104
  { type: Component, args: [{
@@ -122,10 +134,10 @@ DeliveryPlanningOverviewPopupComponent.decorators = [
122
134
  </div>
123
135
 
124
136
  <div class="popup-row">
125
- <co-input-text [model]="startTimeForOrder() | date: 'HH:mm'"
126
- [placeholder]="'STARTTIME' | localize" (modelChange)="handleStartTimeChange($event)"></co-input-text>
127
- <co-input-text [model]="endTimeForOrder() | date: 'HH:mm'"
128
- [placeholder]="'STOPTIME' | localize" (modelChange)="handleEndTimeChange($event)"></co-input-text>
137
+ <co-input-text #startTime [model]="startTimeForOrder() | date: 'hh:mm'"
138
+ [placeholder]="'STARTTIME' | localize" (blur)="handleStartTimeChange()"></co-input-text>
139
+ <co-input-text #endTime [model]="endTimeForOrder() | date: 'hh:mm'"
140
+ [placeholder]="'STOPTIME' | localize" (blur)="handleEndTimeChange()"></co-input-text>
129
141
  </div>
130
142
 
131
143
 
@@ -161,6 +173,8 @@ DeliveryPlanningOverviewPopupComponent.ctorParameters = () => [
161
173
  DeliveryPlanningOverviewPopupComponent.propDecorators = {
162
174
  closeEvent: [{ type: Output }],
163
175
  onSucceededPlanAction: [{ type: Output }],
176
+ startTimeCompRef: [{ type: ViewChild, args: ['startTime',] }],
177
+ endTimeCompRef: [{ type: ViewChild, args: ['endTime',] }],
164
178
  showClass: [{ type: HostBinding, args: ["class.co-delivery-planning-overview-popup",] }]
165
179
  };
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwL2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQXFCLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBSTdFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBa0UzRyxNQUFNLE9BQU8sc0NBQXNDO0lBaUNqRCxZQUFtQixnQkFBa0MsRUFBVSxZQUFnQyxFQUFTLHVCQUFnRDtRQUFySSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQVMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQTlCakosVUFBSyxHQUFnQixJQUFJLENBQUM7UUFFMUIsY0FBUyxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7UUFpQnZDLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7WUExS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBEVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBeEVPLGdCQUFnQjtZQU1oQixrQkFBa0I7WUFDbEIsdUJBQXVCOzs7eUJBdUY1QixNQUFNO29DQUdOLE1BQU07d0JBSU4sV0FBVyxTQUFDLDJDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ib1wiO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay1kYXkuYm9cIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWt9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWsuYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXBcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZyBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCIgKGNsb3NlQ2xpY2spPVwiY2xvc2VQb3B1cCgpXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb290ZXItaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInRyYW5zcG9ydERheT8udHJhbnNwb3J0Py5yZWdpc3RyYXRpb25OdW1iZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzXHJcbiAgICAgICAgICBbY3VycmVudFZvbHVtZV09XCJ0cmFuc3BvcnREYXk/Lm9yZGVyQW1vdW50XCJcclxuICAgICAgICAgIFttYXhWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5tYXhPcmRlckFtb3VudFwiXHJcbiAgICAgICAgICBbY3VycmVudFRpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1pbnV0ZXNcIlxyXG4gICAgICAgICAgW3RpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1heE1pbnV0ZXNcIj5cclxuICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImgxXCIgW3RleHRDb250ZW50XT1cIidUSU1FX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1yb3dcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCJpbXBhY3RUaW1lKClcIiBbcGxhY2Vob2xkZXJdPVwiJ0lNUEFDVF9USU1FJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cImRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnRvdGFsQXNzZW1ibHlUaW1lKHBsYW5PcmRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBU1NFTUJMWV9USU1FJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtcm93XCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbbW9kZWxdPVwic3RhcnRUaW1lRm9yT3JkZXIoKSB8IGRhdGU6ICdISDptbSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTVEFSVFRJTUUnIHwgbG9jYWxpemVcIiAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU3RhcnRUaW1lQ2hhbmdlKCRldmVudClcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbbW9kZWxdPVwiZW5kVGltZUZvck9yZGVyKCkgfCBkYXRlOiAnSEg6bW0nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU1RPUFRJTUUnIHwgbG9jYWxpemVcIiAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFyay13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ1BMQU5fUkVNQVJLUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0YXJlYSBbKG1vZGVsKV09XCJwbGFuT3JkZXIucmVtYXJrc1wiPjwvY28taW5wdXQtdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNvbW1pdENsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcHVwKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX3RyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTtcclxuXHJcbiAgcHVibGljIGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIHB1YmxpYyBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IG5ldyBQbGFuT3JkZXIoKTtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICBwdWJsaWMgc2V0IHRyYW5zcG9ydERheSggdHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICB0aGlzLmhhbmRsZUluaXRpYWxUaW1lUGxhbm5pbmcodHJhbnNwb3J0V2Vla0RheSk7XHJcbiAgICB0aGlzLl90cmFuc3BvcnRXZWVrRGF5ID0gdHJhbnNwb3J0V2Vla0RheTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IHRyYW5zcG9ydERheSgpOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydFdlZWtEYXk7XHJcbiAgfTtcclxuXHJcblxyXG5cclxuICBwdWJsaWMgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25TdWNjZWVkZWRQbGFuQWN0aW9uOiBFdmVudEVtaXR0ZXI8W1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBQbGFubmluZ1RyYW5zcG9ydFdlZWtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8W1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBQbGFubmluZ1RyYW5zcG9ydFdlZWtdPigpO1xyXG5cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXBcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSwgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VydmljZSwgcHVibGljIGRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSkge1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy53ZWVrID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5wbGFuT3JkZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRyYW5zcG9ydERheSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW1wYWN0VGltZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnBsYW5PcmRlci5pbXBhY3RUaW1lID8gdGhpcy5wbGFuT3JkZXIuaW1wYWN0VGltZSA6IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29tbWl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLm9uU3VjY2VlZGVkUGxhbkFjdGlvbi5lbWl0KFt0aGlzLnBsYW5PcmRlciwgdGhpcy50cmFuc3BvcnREYXksIHRoaXMud2Vla10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0VGltZUZvck9yZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmRUaW1lRm9yT3JkZXIoKSB7XHJcbiAgIHJldHVybiB0aGlzLnBsYW5PcmRlci5lbmRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVN0YXJ0VGltZUNoYW5nZSh0aW1lU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIGxldCBvcmlnaW5hbFBsYW5PcmRlckRhdGUgPSBuZXcgRGF0ZSh0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUpO1xyXG4gICAgbGV0IGRhdGU6IERhdGUgPSBuZXcgRGF0ZShvcmlnaW5hbFBsYW5PcmRlckRhdGUuZ2V0RnVsbFllYXIoKSwgb3JpZ2luYWxQbGFuT3JkZXJEYXRlLmdldE1vbnRoKCksIG9yaWdpbmFsUGxhbk9yZGVyRGF0ZS5nZXREYXkoKSwgcGFyc2VJbnQodGltZVN0cmluZ1swXSksIDApO1xyXG4gICAgaWYoIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUgPSBkYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFbmRUaW1lQ2hhbmdlKHRpbWVTdHJpbmc6IHN0cmluZykge1xyXG4gICAgbGV0IG9yaWdpbmFsUGxhbk9yZGVyRGF0ZSA9IG5ldyBEYXRlKHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSk7XHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKG9yaWdpbmFsUGxhbk9yZGVyRGF0ZS5nZXRGdWxsWWVhcigpLCBvcmlnaW5hbFBsYW5PcmRlckRhdGUuZ2V0TW9udGgoKSwgb3JpZ2luYWxQbGFuT3JkZXJEYXRlLmdldERheSgpLCBwYXJzZUludCh0aW1lU3RyaW5nWzBdKSwgMCk7XHJcbiAgICBpZighaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLmVuZFRpbWUgPSBkYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbml0aWFsVGltZVBsYW5uaW5nKHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgaWYoIXRoaXMucGxhbk9yZGVyPy5zdGFydFRpbWUgJiYgdHJhbnNwb3J0V2Vla0RheT8ucGxhbm5lZE9yZGVycz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSA9IG5ldyBEYXRlKHRyYW5zcG9ydFdlZWtEYXkuZGF0ZSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyPy5zdGFydFRpbWU/LnNldEhvdXJzKDgpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlcj8uc3RhcnRUaW1lPy5zZXRNaW51dGVzKDApO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlcj8uc3RhcnRUaW1lPy5zZXRTZWNvbmRzKDApO1xyXG4gICAgfVxyXG4gICAgaWYoIXRoaXMucGxhbk9yZGVyPy5lbmRUaW1lICYmIHRyYW5zcG9ydFdlZWtEYXk/LnBsYW5uZWRPcmRlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLmVuZFRpbWUgPSBuZXcgRGF0ZSh0aGlzLnBsYW5PcmRlcj8uc3RhcnRUaW1lKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuZW5kVGltZS5zZXRIb3Vycyh0aGlzLnBsYW5PcmRlcj8uZW5kVGltZT8uZ2V0SG91cnMoKSArICh0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnRvdGFsQXNzZW1ibHlUaW1lKHRoaXMucGxhbk9yZGVyKSA+IDAgPyAodGhpcy5kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZSh0aGlzLnBsYW5PcmRlcikgLyA2MCkgOiAxKSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZS5zZXRNaW51dGVzKDApO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgIH1cclxuICAgIGlmKHRyYW5zcG9ydFdlZWtEYXk/LnBsYW5uZWRPcmRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUgPSBuZXcgRGF0ZSh0cmFuc3BvcnRXZWVrRGF5Py5kYXRlKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lLnNldEhvdXJzKHRyYW5zcG9ydFdlZWtEYXk/LnBsYW5uZWRPcmRlcnNbdHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzLmxlbmd0aCAtIDFdPy5lbmRUaW1lPy5nZXRIb3VycygpKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lLnNldE1pbnV0ZXMoMCk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZS5zZXRTZWNvbmRzKDApO1xyXG5cclxuICAgICAgdGhpcy5wbGFuT3JkZXIuZW5kVGltZSA9IG5ldyBEYXRlKHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLmVuZFRpbWUuc2V0SG91cnModGhpcy5wbGFuT3JkZXI/LmVuZFRpbWU/LmdldEhvdXJzKCkgKyAodGhpcy5kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZSh0aGlzLnBsYW5PcmRlcikgPiAwID8gKHRoaXMuZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudG90YWxBc3NlbWJseVRpbWUodGhpcy5wbGFuT3JkZXIpIC8gNjApIDogMSkpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lLnNldFNlY29uZHMoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwL2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBR1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUk3RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQW9FM0csTUFBTSxPQUFPLHNDQUFzQztJQXVDakQsWUFBbUIsZ0JBQWtDLEVBQVUsWUFBZ0MsRUFBUyx1QkFBZ0Q7UUFBckkscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFwQ2pKLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBaUJ2QyxlQUFVLEdBQXVCLElBQUksWUFB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LElBQUcsU0FBUyxFQUFFO1lBQ1osSUFBSSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7OztZQTFMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFDQUFxQztnQkFDL0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUExRU8sZ0JBQWdCO1lBTWhCLGtCQUFrQjtZQUNsQix1QkFBdUI7Ozt5QkF5RjVCLE1BQU07b0NBR04sTUFBTTsrQkFJTixTQUFTLFNBQUMsV0FBVzs2QkFHckIsU0FBUyxTQUFDLFNBQVM7d0JBR25CLFdBQVcsU0FBQywyQ0FBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ib1wiO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay1kYXkuYm9cIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWt9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWsuYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge0lucHV0VGV4dENvbXBvbmVudH0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtQbGFubmluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy5ib1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXBcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZyBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCIgKGNsb3NlQ2xpY2spPVwiY2xvc2VQb3B1cCgpXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb290ZXItaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInRyYW5zcG9ydERheT8udHJhbnNwb3J0Py5yZWdpc3RyYXRpb25OdW1iZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJ1Y2tDb250YWluZXJEdW8pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzXHJcbiAgICAgICAgICBbY3VycmVudFZvbHVtZV09XCJ0cmFuc3BvcnREYXk/Lm9yZGVyQW1vdW50XCJcclxuICAgICAgICAgIFttYXhWb2x1bWVdPVwidHJhbnNwb3J0RGF5Py5tYXhPcmRlckFtb3VudFwiXHJcbiAgICAgICAgICBbY3VycmVudFRpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1pbnV0ZXNcIlxyXG4gICAgICAgICAgW3RpbWVUb3RhbF09XCJ0cmFuc3BvcnREYXk/Lm1heE1pbnV0ZXNcIj5cclxuICAgICAgICA8L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLXRpbGUtc3RhdHVzPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImgxXCIgW3RleHRDb250ZW50XT1cIidUSU1FX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1yb3dcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCJpbXBhY3RUaW1lKClcIiBbcGxhY2Vob2xkZXJdPVwiJ0lNUEFDVF9USU1FJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cImRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnRvdGFsQXNzZW1ibHlUaW1lKHBsYW5PcmRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBU1NFTUJMWV9USU1FJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtcm93XCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCAjc3RhcnRUaW1lIFttb2RlbF09XCJzdGFydFRpbWVGb3JPcmRlcigpIHwgZGF0ZTogJ2hoOm1tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NUQVJUVElNRScgfCBsb2NhbGl6ZVwiIChibHVyKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgpXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHQgI2VuZFRpbWUgW21vZGVsXT1cImVuZFRpbWVGb3JPcmRlcigpIHwgZGF0ZTogJ2hoOm1tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NUT1BUSU1FJyB8IGxvY2FsaXplXCIgKGJsdXIpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgpXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFyay13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ1BMQU5fUkVNQVJLUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0YXJlYSBbKG1vZGVsKV09XCJwbGFuT3JkZXIucmVtYXJrc1wiPjwvY28taW5wdXQtdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNvbW1pdENsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcHVwKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX3RyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheTtcclxuXHJcbiAgcHVibGljIGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIHB1YmxpYyBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IG5ldyBQbGFuT3JkZXIoKTtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICBwdWJsaWMgc2V0IHRyYW5zcG9ydERheSggdHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICB0aGlzLmhhbmRsZUluaXRpYWxUaW1lUGxhbm5pbmcodHJhbnNwb3J0V2Vla0RheSk7XHJcbiAgICB0aGlzLl90cmFuc3BvcnRXZWVrRGF5ID0gdHJhbnNwb3J0V2Vla0RheTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IHRyYW5zcG9ydERheSgpOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydFdlZWtEYXk7XHJcbiAgfTtcclxuXHJcblxyXG5cclxuICBwdWJsaWMgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvblN1Y2NlZWRlZFBsYW5BY3Rpb246IEV2ZW50RW1pdHRlcjxbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11dPigpO1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RhcnRUaW1lJylcclxuICBwdWJsaWMgc3RhcnRUaW1lQ29tcFJlZjogSW5wdXRUZXh0Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCdlbmRUaW1lJylcclxuICBwdWJsaWMgZW5kVGltZUNvbXBSZWY6IElucHV0VGV4dENvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXBcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSwgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uU2VydmljZSwgcHVibGljIGRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSkge1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy53ZWVrID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5wbGFuT3JkZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRyYW5zcG9ydERheSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW1wYWN0VGltZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnBsYW5PcmRlci5pbXBhY3RUaW1lID8gdGhpcy5wbGFuT3JkZXIuaW1wYWN0VGltZSA6IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29tbWl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLm9uU3VjY2VlZGVkUGxhbkFjdGlvbi5lbWl0KFt0aGlzLnBsYW5PcmRlciwgdGhpcy50cmFuc3BvcnREYXksIHRoaXMud2Vla10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0VGltZUZvck9yZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGxhbk9yZGVyPy5zdGFydFRpbWU/LnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5kVGltZUZvck9yZGVyKCkge1xyXG4gICByZXR1cm4gdGhpcy5wbGFuT3JkZXI/LmVuZFRpbWU/LnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RhcnRUaW1lQ2hhbmdlKCkge1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVDb21wUmVmLm1vZGVsKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSA9IHRoaXMuaGFuZGxlRGF0ZUNoYW5nZSh0aGlzLnN0YXJ0VGltZUNvbXBSZWYubW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFbmRUaW1lQ2hhbmdlKCkge1xyXG4gICAgaWYodGhpcy5lbmRUaW1lQ29tcFJlZi5tb2RlbCkge1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5lbmRUaW1lID0gdGhpcy5oYW5kbGVEYXRlQ2hhbmdlKHRoaXMuZW5kVGltZUNvbXBSZWYubW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbml0aWFsVGltZVBsYW5uaW5nKHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgaWYoIXRoaXMucGxhbk9yZGVyPy5zdGFydFRpbWUgJiYgdHJhbnNwb3J0V2Vla0RheT8ucGxhbm5lZE9yZGVycz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSA9IG5ldyBEYXRlKHRyYW5zcG9ydFdlZWtEYXkuZGF0ZSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyPy5zdGFydFRpbWU/LnNldEhvdXJzKDgpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlcj8uc3RhcnRUaW1lPy5zZXRNaW51dGVzKDApO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlcj8uc3RhcnRUaW1lPy5zZXRTZWNvbmRzKDApO1xyXG4gICAgfVxyXG4gICAgaWYoIXRoaXMucGxhbk9yZGVyPy5lbmRUaW1lICYmIHRyYW5zcG9ydFdlZWtEYXk/LnBsYW5uZWRPcmRlcnM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5lbmRUaW1lID0gbmV3IERhdGUodGhpcy5wbGFuT3JkZXI/LnN0YXJ0VGltZSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLmVuZFRpbWUuc2V0SG91cnModGhpcy5wbGFuT3JkZXI/LmVuZFRpbWU/LmdldEhvdXJzKCkgKyAodGhpcy5kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZSh0aGlzLnBsYW5PcmRlcikgPiAwID8gKHRoaXMuZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudG90YWxBc3NlbWJseVRpbWUodGhpcy5wbGFuT3JkZXIpIC8gNjApIDogMSkpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lLnNldFNlY29uZHMoMCk7XHJcbiAgICB9XHJcbiAgICBpZih0cmFuc3BvcnRXZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZSA9IG5ldyBEYXRlKHRyYW5zcG9ydFdlZWtEYXk/LmRhdGUpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0SG91cnModHJhbnNwb3J0V2Vla0RheT8ucGxhbm5lZE9yZGVyc1t0cmFuc3BvcnRXZWVrRGF5LnBsYW5uZWRPcmRlcnMubGVuZ3RoIC0gMV0/LmVuZFRpbWU/LmdldEhvdXJzKCkpO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lLnNldFNlY29uZHMoMCk7XHJcblxyXG4gICAgICB0aGlzLnBsYW5PcmRlci5lbmRUaW1lID0gbmV3IERhdGUodGhpcy5wbGFuT3JkZXIuc3RhcnRUaW1lKTtcclxuICAgICAgdGhpcy5wbGFuT3JkZXIuZW5kVGltZS5zZXRIb3Vycyh0aGlzLnBsYW5PcmRlcj8uZW5kVGltZT8uZ2V0SG91cnMoKSArICh0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnRvdGFsQXNzZW1ibHlUaW1lKHRoaXMucGxhbk9yZGVyKSA+IDAgPyAodGhpcy5kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZSh0aGlzLnBsYW5PcmRlcikgLyA2MCkgOiAxKSk7XHJcbiAgICAgIHRoaXMucGxhbk9yZGVyLnN0YXJ0VGltZS5zZXRNaW51dGVzKDApO1xyXG4gICAgICB0aGlzLnBsYW5PcmRlci5zdGFydFRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlQ2hhbmdlKHRleHQ6IHN0cmluZyk6IERhdGUge1xyXG4gICAgbGV0IHNwbGl0VGV4dDogc3RyaW5nW107XHJcbiAgICBzcGxpdFRleHQgPSB0ZXh0LnNwbGl0KFwiOlwiKTtcclxuICAgIGlmKHNwbGl0VGV4dCkge1xyXG4gICAgICBsZXQgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMudHJhbnNwb3J0RGF5LmRhdGUpO1xyXG4gICAgICBkYXRlLnNldEhvdXJzKHBhcnNlSW50KHNwbGl0VGV4dFswXSkpO1xyXG4gICAgICBkYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQoc3BsaXRUZXh0WzFdKSk7XHJcbiAgICAgIGRhdGUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuIl19
@@ -9,13 +9,13 @@ export class DeliveryPlanningOverviewShortLineComponent {
9
9
  this.showNoteDialog = false;
10
10
  this.expanded = false;
11
11
  this.order = new PlanOrder();
12
- this.deleteLineEvent = new EventEmitter();
12
+ this.deleteOrderEvent = new EventEmitter();
13
13
  }
14
14
  showClass() {
15
15
  return true;
16
16
  }
17
17
  handleDeleteLineClick(order) {
18
- this.deleteLineEvent.emit(order);
18
+ this.deleteOrderEvent.emit(order);
19
19
  }
20
20
  }
21
21
  DeliveryPlanningOverviewShortLineComponent.decorators = [
@@ -36,7 +36,7 @@ DeliveryPlanningOverviewShortLineComponent.ctorParameters = () => [
36
36
  ];
37
37
  DeliveryPlanningOverviewShortLineComponent.propDecorators = {
38
38
  order: [{ type: Input }],
39
- deleteLineEvent: [{ type: Output }],
39
+ deleteOrderEvent: [{ type: Output }],
40
40
  showClass: [{ type: HostBinding, args: ["class.co-delivery-planning-overview-short-line",] }]
41
41
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNwRixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFNUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBYTdFLE1BQU0sT0FBTywwQ0FBMEM7SUFnQnJELFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZnJDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQ25DLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsVUFBSyxHQUFhLElBQUksU0FBUyxFQUFFLENBQUM7UUFHbEMsb0JBQWUsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQVFoRixDQUFDO0lBTE0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtNLHFCQUFxQixDQUFDLEtBQWdCO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQWhDRixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDBDQUEwQztnQkFDcEQsUUFBUSxFQUFFOzs7Ozs7S0FNVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBZk8sZ0JBQWdCOzs7b0JBcUJyQixLQUFLOzhCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLGdEQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXNob3J0LWxpbmVcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1saW5lLXNob3J0LXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctbGluZS1zaG9ydFwiPlxyXG4gICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIm9yZGVyLnNob3J0QWRkcmVzc1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3U2hvcnRMaW5lQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgc2hvd05vdGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3JkZXI6UGxhbk9yZGVyID0gbmV3IFBsYW5PcmRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVsZXRlTGluZUV2ZW50OiBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGxhbk9yZGVyPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lQ2xpY2sob3JkZXI6IFBsYW5PcmRlcikge1xyXG4gICAgdGhpcy5kZWxldGVMaW5lRXZlbnQuZW1pdChvcmRlcik7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1tYWluL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZS9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1zaG9ydC1saW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNwRixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFNUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBYTdFLE1BQU0sT0FBTywwQ0FBMEM7SUFnQnJELFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZnJDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQ25DLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsVUFBSyxHQUFhLElBQUksU0FBUyxFQUFFLENBQUM7UUFHbEMscUJBQWdCLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7SUFRakYsQ0FBQztJQUxNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLTSxxQkFBcUIsQ0FBQyxLQUFnQjtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQWhDRixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDBDQUEwQztnQkFDcEQsUUFBUSxFQUFFOzs7Ozs7S0FNVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBZk8sZ0JBQWdCOzs7b0JBcUJyQixLQUFLOytCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLGdEQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXNob3J0LWxpbmVcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1saW5lLXNob3J0LXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctbGluZS1zaG9ydFwiPlxyXG4gICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIm9yZGVyLnNob3J0QWRkcmVzc1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3U2hvcnRMaW5lQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBwdWJsaWMgc2hvd05vdGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3JkZXI6UGxhbk9yZGVyID0gbmV3IFBsYW5PcmRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVsZXRlT3JkZXJFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5PcmRlcj4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctc2hvcnQtbGluZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlTGluZUNsaWNrKG9yZGVyOiBQbGFuT3JkZXIpIHtcclxuICAgIHRoaXMuZGVsZXRlT3JkZXJFdmVudC5lbWl0KG9yZGVyKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==