taxtank-core 0.11.0 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/bundles/taxtank-core.umd.js +2760 -2780
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/collection.js +4 -1
  4. package/esm2015/lib/collections/depreciation.collection.js +24 -10
  5. package/esm2015/lib/collections/transaction.collection.js +28 -1
  6. package/esm2015/lib/collections/vehicle-logbook.collection.js +88 -0
  7. package/esm2015/lib/collections/vehicle.collection.js +9 -0
  8. package/esm2015/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.js +3 -1
  9. package/esm2015/lib/db/Enums/chart-accounts-list.enum.js +4 -3
  10. package/esm2015/lib/db/Models/client-income-types.js +1 -1
  11. package/esm2015/lib/db/Models/vehicle-claim.js +1 -1
  12. package/esm2015/lib/db/Models/vehicle.js +1 -1
  13. package/esm2015/lib/forms/client/client-income-types.form.js +3 -3
  14. package/esm2015/lib/forms/index.js +3 -1
  15. package/esm2015/lib/forms/vehicle/vehicle-claim.form.js +114 -0
  16. package/esm2015/lib/forms/vehicle/vehicle.form.js +20 -0
  17. package/esm2015/lib/interfaces/event-listener.interface.js +1 -1
  18. package/esm2015/lib/interfaces/expense.interface.js +2 -0
  19. package/esm2015/lib/interfaces/tank.interface.js +1 -1
  20. package/esm2015/lib/models/chart-accounts/chart-accounts-value.js +4 -0
  21. package/esm2015/lib/models/chart-accounts/chart-accounts.js +34 -1
  22. package/esm2015/lib/models/depreciation/depreciation.js +5 -1
  23. package/esm2015/lib/models/event/app-event-type.enum.js +4 -1
  24. package/esm2015/lib/models/logbook/logbook-period.js +8 -1
  25. package/esm2015/lib/models/logbook/vehicle-claim.js +63 -4
  26. package/esm2015/lib/models/logbook/vehicle-logbook.js +9 -3
  27. package/esm2015/lib/models/logbook/vehicle.js +7 -29
  28. package/esm2015/lib/models/pdf/pdf-settings.js +10 -0
  29. package/esm2015/lib/models/transaction/transaction.js +1 -1
  30. package/esm2015/lib/services/account-setup/account-setup.service.js +8 -23
  31. package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +6 -15
  32. package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +6 -15
  33. package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +6 -15
  34. package/esm2015/lib/services/http/bank/basiq/basiq.service.js +6 -15
  35. package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +1 -1
  36. package/esm2015/lib/services/http/chat/chat.service.js +8 -12
  37. package/esm2015/lib/services/http/chat/message/message.service.js +8 -12
  38. package/esm2015/lib/services/http/chat/message-document/message-document.service.js +1 -1
  39. package/esm2015/lib/services/http/depreciation/depreciation.service.js +6 -23
  40. package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +6 -14
  41. package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +6 -15
  42. package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +6 -15
  43. package/esm2015/lib/services/http/income-source/income-source.service.js +6 -14
  44. package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +6 -15
  45. package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +6 -15
  46. package/esm2015/lib/services/http/loan/loan.service.js +6 -15
  47. package/esm2015/lib/services/http/property/property-document/property-document.service.js +6 -15
  48. package/esm2015/lib/services/http/property/property-share/property-share.service.js +6 -15
  49. package/esm2015/lib/services/http/property/property.service.js +6 -15
  50. package/esm2015/lib/services/http/rest/rest.service.js +31 -4
  51. package/esm2015/lib/services/http/service-notification/service-notification.service.js +8 -12
  52. package/esm2015/lib/services/http/subscription/subscription.service.js +1 -4
  53. package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +15 -16
  54. package/esm2015/lib/services/http/tax-review/tax-review.service.js +6 -15
  55. package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +1 -1
  56. package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +6 -15
  57. package/esm2015/lib/services/http/transaction/transaction.service.js +6 -25
  58. package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +6 -14
  59. package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +6 -14
  60. package/esm2015/lib/services/http/vehicle/messages.enum.js +13 -0
  61. package/esm2015/lib/services/http/vehicle/vehicle-claim.service.js +24 -0
  62. package/esm2015/lib/services/http/vehicle/vehicle-logbook.service.js +59 -0
  63. package/esm2015/lib/services/http/vehicle/vehicle.service.js +49 -213
  64. package/esm2015/lib/services/pdf/pdf.service.js +11 -11
  65. package/esm2015/public-api.js +8 -2
  66. package/fesm2015/taxtank-core.js +2482 -2450
  67. package/fesm2015/taxtank-core.js.map +1 -1
  68. package/lib/collections/collection.d.ts +1 -0
  69. package/lib/collections/depreciation.collection.d.ts +5 -4
  70. package/lib/collections/transaction.collection.d.ts +9 -0
  71. package/lib/collections/vehicle-logbook.collection.d.ts +30 -0
  72. package/lib/collections/vehicle.collection.d.ts +6 -0
  73. package/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.d.ts +3 -1
  74. package/lib/db/Enums/chart-accounts-list.enum.d.ts +4 -3
  75. package/lib/db/Models/client-income-types.d.ts +2 -2
  76. package/lib/db/Models/vehicle-claim.d.ts +2 -0
  77. package/lib/db/Models/vehicle.d.ts +2 -0
  78. package/lib/forms/index.d.ts +2 -0
  79. package/lib/forms/vehicle/vehicle-claim.form.d.ts +43 -0
  80. package/lib/forms/vehicle/vehicle.form.d.ts +11 -0
  81. package/lib/interfaces/event-listener.interface.d.ts +1 -0
  82. package/lib/interfaces/expense.interface.d.ts +12 -0
  83. package/lib/interfaces/tank.interface.d.ts +2 -0
  84. package/lib/models/chart-accounts/chart-accounts-value.d.ts +3 -0
  85. package/lib/models/chart-accounts/chart-accounts.d.ts +18 -0
  86. package/lib/models/depreciation/depreciation.d.ts +6 -2
  87. package/lib/models/event/app-event-type.enum.d.ts +4 -1
  88. package/lib/models/logbook/logbook-period.d.ts +4 -0
  89. package/lib/models/logbook/vehicle-claim.d.ts +20 -3
  90. package/lib/models/logbook/vehicle-logbook.d.ts +8 -2
  91. package/lib/models/logbook/vehicle.d.ts +5 -7
  92. package/lib/models/pdf/pdf-settings.d.ts +9 -0
  93. package/lib/models/transaction/transaction.d.ts +2 -2
  94. package/lib/services/account-setup/account-setup.service.d.ts +3 -7
  95. package/lib/services/http/bank/bank-account/bank-account.service.d.ts +2 -7
  96. package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +2 -7
  97. package/lib/services/http/bank/bank-transaction/bank-transaction.service.d.ts +3 -8
  98. package/lib/services/http/bank/basiq/basiq.service.d.ts +2 -7
  99. package/lib/services/http/chat/chat.service.d.ts +4 -7
  100. package/lib/services/http/chat/message/message.service.d.ts +4 -7
  101. package/lib/services/http/chat/message-document/message-document.service.d.ts +3 -3
  102. package/lib/services/http/depreciation/depreciation.service.d.ts +2 -11
  103. package/lib/services/http/document/document-folder/document-folder.service.d.ts +0 -6
  104. package/lib/services/http/firm/client-movement/client-movement.service.d.ts +2 -7
  105. package/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.d.ts +2 -7
  106. package/lib/services/http/income-source/income-source.service.d.ts +0 -6
  107. package/lib/services/http/income-source/salary-forecast/salary-forecast.service.d.ts +1 -7
  108. package/lib/services/http/income-source/sole-forecast/sole-forecast.service.d.ts +2 -7
  109. package/lib/services/http/loan/loan.service.d.ts +2 -7
  110. package/lib/services/http/property/property-document/property-document.service.d.ts +3 -8
  111. package/lib/services/http/property/property-share/property-share.service.d.ts +2 -7
  112. package/lib/services/http/property/property.service.d.ts +2 -7
  113. package/lib/services/http/rest/rest.service.d.ts +17 -2
  114. package/lib/services/http/service-notification/service-notification.service.d.ts +4 -7
  115. package/lib/services/http/subscription/subscription.service.d.ts +0 -1
  116. package/lib/services/http/tax-review/tax-review-history/tax-review-history.service.d.ts +7 -7
  117. package/lib/services/http/tax-review/tax-review.service.d.ts +1 -7
  118. package/lib/services/http/tax-summary/tax-summary.service.d.ts +2 -1
  119. package/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.d.ts +3 -8
  120. package/lib/services/http/transaction/transaction.service.d.ts +0 -12
  121. package/lib/services/http/user/user-event-setting/user-event-setting.service.d.ts +0 -6
  122. package/lib/services/http/user/user-event-type/user-event-type.service.d.ts +0 -6
  123. package/lib/services/http/vehicle/messages.enum.d.ts +11 -0
  124. package/lib/services/http/vehicle/vehicle-claim.service.d.ts +13 -0
  125. package/lib/services/http/vehicle/vehicle-logbook.service.d.ts +22 -0
  126. package/lib/services/http/vehicle/vehicle.service.d.ts +17 -80
  127. package/lib/services/pdf/pdf.service.d.ts +3 -3
  128. package/package.json +1 -1
  129. package/public-api.d.ts +7 -1
  130. package/esm2015/lib/collections/logbook.collection.js +0 -97
  131. package/lib/collections/logbook.collection.d.ts +0 -19
@@ -1,237 +1,73 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { combineLatest, ReplaySubject } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
- import { ChartAccountsHeadingVehicleListEnum } from '../../../db/Enums/chart-accounts-heading-vehicle-list.enum';
5
- import { ChartAccountsListEnum } from '../../../db/Enums/chart-accounts-list.enum';
6
- import { plainToClass } from 'class-transformer';
7
- import { enumToList } from '../../../functions/enum-to-list';
1
+ import { Injectable } from '@angular/core';
8
2
  import { Vehicle } from '../../../models/logbook/vehicle';
9
- import { VehicleClaim } from '../../../models/logbook/vehicle-claim';
10
- import { VehicleLogbook } from '../../../models/logbook/vehicle-logbook';
3
+ import { RestService } from '../rest/rest.service';
11
4
  import { AppEventTypeEnum } from '../../../models/event/app-event-type.enum';
12
- import { AppEvent } from '../../../models/event/app-event';
13
- import { FinancialYear } from '../../../models/financial-year/financial-year';
14
- import { Depreciation } from '../../../models/depreciation/depreciation';
5
+ import { replace } from '../../../functions/array';
6
+ import cloneDeep from 'lodash/cloneDeep';
7
+ import { MessagesEnum } from './messages.enum';
15
8
  import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/common/http";
17
- import * as i2 from "../transaction/transaction.service";
18
- import * as i3 from "../depreciation/depreciation.service";
19
- import * as i4 from "../chart-accounts/chart-accounts.service";
20
- import * as i5 from "../../event/event-dispatcher.service";
21
9
  /**
22
10
  * Service that allows to work with WorkTank operations
23
- * @TODO separate into multiple services, extend restService
11
+ * @TODO separate vehicles and logbooks to different api
24
12
  */
25
- export class VehicleService {
26
- constructor(http, transactionService, depreciationService, chartAccountsService, eventDispatcherService, environment) {
27
- this.http = http;
28
- this.transactionService = transactionService;
29
- this.depreciationService = depreciationService;
30
- this.chartAccountsService = chartAccountsService;
31
- this.eventDispatcherService = eventDispatcherService;
32
- this.environment = environment;
33
- this.vehiclesSubject = new ReplaySubject(1);
34
- this.vehicleClaimSubject = new ReplaySubject(1);
35
- this.vehicleClaimRateSubject = new ReplaySubject(1);
36
- this.vehicleTaxReturnSubject = new ReplaySubject(1);
37
- this.incomePositionsSubject = new ReplaySubject(1);
13
+ export class VehicleService extends RestService {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.url = 'vehicles';
17
+ this.modelClass = Vehicle;
18
+ this.messageCreated = MessagesEnum.VEHICLE_CREATED;
19
+ this.messageUpdated = MessagesEnum.VEHICLE_UPDATED;
20
+ this.messageDeleted = MessagesEnum.VEHICLE_DELETED;
38
21
  }
39
- getVehicles() {
40
- // @TODO create backend for get logbook
41
- if (!this._vehicles) {
42
- this.http.get(`${this.environment.apiV2}/vehicles`)
43
- .pipe(map((response) => {
44
- return response.map((item) => plainToClass(Vehicle, item));
45
- }))
46
- .subscribe((vehicles) => {
47
- this._vehicles = vehicles;
48
- this.vehiclesSubject.next(vehicles);
49
- });
50
- }
51
- return this.vehiclesSubject.asObservable();
22
+ listenEvents() {
23
+ this.listenLogbookAdded();
24
+ this.listenLogbookUpdated();
25
+ this.listenLogbookDeleted();
52
26
  }
53
27
  /**
54
- * Get vehicles claim amount
28
+ * Add a new logbook items to the vehicle when a new one created
55
29
  */
56
- getVehiclesClaim() {
57
- if (!this._vehicleClaim) {
58
- this.http.get(`${this.environment.apiV2}/vehicle-claims`)
59
- .pipe(map((response) => {
60
- // return Vehicle claim from backend or create new if it not exist
61
- return response.length ? response.map((item) => plainToClass(VehicleClaim, item))[0] : plainToClass(VehicleClaim, {});
62
- }))
63
- .subscribe((vehicleClaim) => {
64
- this._vehicleClaim = vehicleClaim;
65
- this.vehicleClaimSubject.next(vehicleClaim);
66
- });
67
- }
68
- return this.vehicleClaimSubject.asObservable();
30
+ listenLogbookAdded() {
31
+ this.eventDispatcherService.on(AppEventTypeEnum.VEHICLE_LOGBOOK_CREATED)
32
+ .subscribe((result) => {
33
+ const tempCache = cloneDeep(this.cache);
34
+ tempCache.find((vehicle) => vehicle.id === result.vehicleId).logbook.push(result.logbook);
35
+ this.cache = tempCache;
36
+ this.updateCache();
37
+ });
69
38
  }
70
39
  /**
71
- * Add new vehicle claim
72
- * @param claim object which should be added
40
+ * Replace vehicle's logbook with updated instance when logbook item updated
73
41
  */
74
- addVehicleClaim(claim) {
75
- return this.http.post(`${this.environment.apiV2}/vehicle-claims`, claim).pipe(map((response) => {
76
- this._vehicleClaim = plainToClass(VehicleClaim, response);
77
- this.vehicleClaimSubject.next(this._vehicleClaim);
78
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, null));
79
- }));
42
+ listenLogbookUpdated() {
43
+ this.eventDispatcherService.on(AppEventTypeEnum.VEHICLE_LOGBOOK_UPDATED)
44
+ .subscribe((result) => {
45
+ const tempCache = cloneDeep(this.cache);
46
+ replace(tempCache.find((vehicle) => vehicle.id === result.vehicleId).logbook, result.logbook);
47
+ this.cache = tempCache;
48
+ this.updateCache();
49
+ });
80
50
  }
81
51
  /**
82
- * Get vehicles claim rate for current financial year
52
+ * Remove logbook item from vehicle when logbook deleted
83
53
  */
84
- getVehiclesClaimRate() {
85
- if (!this._vehicleClaimRate) {
86
- this.chartAccountsService.getChartAccountsById(ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK)
87
- .pipe(map((response) => {
88
- return response.values.find((chartAccount) => chartAccount.financialYear === new FinancialYear().year).value;
89
- }))
90
- .subscribe((claimRate) => {
91
- this._vehicleClaimRate = claimRate;
92
- this.vehicleClaimRateSubject.next(this._vehicleClaimRate);
93
- });
94
- }
95
- return this.vehicleClaimRateSubject.asObservable();
96
- }
97
- /**
98
- * Get vehicles tax return for vehicle transactions & depreciations
99
- */
100
- getVehiclesTaxReturn() {
101
- if (!this._vehicleTaxReturn) {
102
- combineLatest([
103
- // @Todo refactor to avoid injection of another services
104
- this.transactionService.get(),
105
- this.depreciationService.get(),
106
- this.getVehiclesClaim()
107
- ]).pipe(map(([transactions, depreciations, vehicleClaim]) => {
108
- const chartAccountsHeadingsIds = enumToList(ChartAccountsHeadingVehicleListEnum)
109
- .map((item) => item.value);
110
- // get transactions & depreciations which chart accounts headings are belong to vehicle category
111
- // but except KLMS transaction
112
- const filteredItems = [...transactions, ...depreciations].filter((item) => {
113
- var _a;
114
- return chartAccountsHeadingsIds.includes((_a = item.chartAccounts.heading) === null || _a === void 0 ? void 0 : _a.id) && !item.chartAccounts.isKlmsForWork();
115
- });
116
- // get claim amount sum
117
- return filteredItems.reduce((sum, item) =>
118
- // @Todo remove item.amount negative sign when depreciations will be refactored and will have negative sign
119
- sum + ((item instanceof Depreciation ? item.currentYearForecast.amount : -item.amount) * (vehicleClaim.workUsage / 100)), 0);
120
- }))
121
- .subscribe((taxReturn) => {
122
- this._vehicleTaxReturn = taxReturn;
123
- this.vehicleTaxReturnSubject.next(this._vehicleTaxReturn);
124
- });
125
- }
126
- return this.vehicleTaxReturnSubject.asObservable();
127
- }
128
- /**
129
- * Update vehicle claim
130
- * @param claim which should be updated
131
- *
132
- * @TODO alex refresh depreciation/transaction cache
133
- */
134
- updateVehicleClaim(claim) {
135
- return this.http.put(`${this.environment.apiV2}/vehicle-claims/${claim.id}`, claim).pipe(map((response) => {
136
- const updatedVehicleClaim = plainToClass(VehicleClaim, response);
137
- this._vehicleClaim = updatedVehicleClaim;
138
- this.vehicleClaimSubject.next(this._vehicleClaim);
139
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_UPDATED, null));
140
- return updatedVehicleClaim;
141
- }));
142
- }
143
- /**
144
- * Add new logbook for desired vehicle
145
- * @param logbook which should be added
146
- * @param vehicle for which logbook object should be added
147
- */
148
- addLogbook(logbook, vehicle) {
149
- return this.http.post(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks`, logbook)
150
- .pipe(map((response) => {
151
- this._vehicles.find((v) => v.id === vehicle.id).logbook.push(response);
152
- // we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
153
- // that is why we recreate vehicles array
154
- this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
155
- }));
156
- }
157
- /**
158
- * Update logbook
159
- * @param logbook which should be updated
160
- * @param vehicle for which logbook object should be updated
161
- */
162
- updateLogbook(logbook, vehicle) {
163
- return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`, logbook).pipe(map((response) => {
164
- const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
165
- const editedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
166
- editedVehicle.logbook.splice(editedLogbookIndex, 1, plainToClass(VehicleLogbook, response));
167
- // we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
168
- // that is why we recreate vehicles array
169
- this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
170
- }));
171
- }
172
- /**
173
- * Delete trip
174
- * @param logbook for which trip should be deleted
175
- * @param vehicle for which trip should be deleted
176
- */
177
- deleteTrip(logbook, vehicle) {
178
- return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`)
179
- .pipe(map(() => {
180
- const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
181
- const deletedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
182
- editedVehicle.logbook.splice(deletedLogbookIndex, 1);
183
- // we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
184
- // that is why we recreate vehicles array
185
- this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
186
- }));
187
- }
188
- /**
189
- * Add new vehicle
190
- * @param vehicle which should be added
191
- */
192
- addVehicle(vehicle) {
193
- return this.http.post(`${this.environment.apiV2}/vehicles`, { name: vehicle.name })
194
- .pipe(map((response) => {
195
- this._vehicles.push(plainToClass(Vehicle, response));
196
- this.vehiclesSubject.next(this._vehicles);
197
- }));
198
- }
199
- /**
200
- * Update vehicle
201
- * @param vehicle which should be updated
202
- */
203
- updateVehicle(vehicle) {
204
- return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}`, { name: vehicle.name })
205
- .pipe(map((response) => {
206
- const editedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
207
- this._vehicles.splice(editedVehicleIndex, 1, plainToClass(Vehicle, response));
208
- this.vehiclesSubject.next(this._vehicles);
209
- }));
210
- }
211
- /**
212
- * Delete vehicle
213
- * @param vehicle which should be deleted
214
- */
215
- deleteVehicle(vehicle) {
216
- return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}`)
217
- .pipe(map(() => {
218
- const deletedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
219
- this._vehicles.splice(deletedVehicleIndex, 1);
220
- // we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
221
- // that is why we recreate vehicles array
222
- this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
223
- }));
54
+ listenLogbookDeleted() {
55
+ this.eventDispatcherService.on(AppEventTypeEnum.VEHICLE_LOGBOOK_DELETED)
56
+ .subscribe((result) => {
57
+ const tempCache = cloneDeep(this.cache);
58
+ const vehicle = tempCache.find((vehicle) => vehicle.id === result.vehicleId);
59
+ vehicle.logbook = vehicle.logbook.filter((logbook) => logbook.id !== result.logbook.id);
60
+ this.cache = tempCache;
61
+ this.updateCache();
62
+ });
224
63
  }
225
64
  }
226
- VehicleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VehicleService, deps: [{ token: i1.HttpClient }, { token: i2.TransactionService }, { token: i3.DepreciationService }, { token: i4.ChartAccountsService }, { token: i5.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
65
+ VehicleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VehicleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
227
66
  VehicleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VehicleService, providedIn: 'root' });
228
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VehicleService, decorators: [{
229
68
  type: Injectable,
230
69
  args: [{
231
70
  providedIn: 'root'
232
71
  }]
233
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TransactionService }, { type: i3.DepreciationService }, { type: i4.ChartAccountsService }, { type: i5.EventDispatcherService }, { type: undefined, decorators: [{
234
- type: Inject,
235
- args: ['environment']
236
- }] }]; } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGFBQWEsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7QUFLekU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFhekIsWUFDVSxJQUFnQixFQUNoQixrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLG9CQUEwQyxF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OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE9BQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssYUFBYSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDeEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxNQUFNLG1CQUFtQixHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5Qyx3SEFBd0g7WUFDeEgseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs7NEdBdlBVLGNBQWMsMkxBbUJmLGFBQWE7Z0hBbkJaLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFvQkksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0hlYWRpbmdWZWhpY2xlTGlzdEVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy9jaGFydC1hY2NvdW50cy1oZWFkaW5nLXZlaGljbGUtbGlzdC5lbnVtJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNMaXN0RW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWxpc3QuZW51bSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGVudW1Ub0xpc3QgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvZW51bS10by1saXN0JztcbmltcG9ydCB7IFZlaGljbGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbG9nYm9vay92ZWhpY2xlJztcbmltcG9ydCB7IFZlaGljbGVDbGFpbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUtY2xhaW0nO1xuaW1wb3J0IHsgVmVoaWNsZUxvZ2Jvb2sgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbG9nYm9vay92ZWhpY2xlLWxvZ2Jvb2snO1xuaW1wb3J0IHsgSW5jb21lUG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaW5jb21lLXBvc2l0aW9uL2luY29tZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmluYW5jaWFsLXllYXIvZmluYW5jaWFsLXllYXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RlcHJlY2lhdGlvbi9kZXByZWNpYXRpb24nO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uU2VydmljZSB9IGZyb20gJy4uL2RlcHJlY2lhdGlvbi9kZXByZWNpYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzU2VydmljZSB9IGZyb20gJy4uL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGFsbG93cyB0byB3b3JrIHdpdGggV29ya1Rhbmsgb3BlcmF0aW9uc1xuICogQFRPRE8gc2VwYXJhdGUgaW50byBtdWx0aXBsZSBzZXJ2aWNlcywgZXh0ZW5kIHJlc3RTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZlaGljbGVTZXJ2aWNlIHtcbiAgLy8gQFRPRE8gcmVmYWN0b3IgYW5kIG1heWJlIGJyZWFrIHRvIHNlcGFyYXRlZCBzZXJ2aWNlc1xuICBfdmVoaWNsZXM6IFZlaGljbGVbXTtcbiAgdmVoaWNsZXNTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFZlaGljbGVbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxWZWhpY2xlW10+KDEpO1xuICBfdmVoaWNsZUNsYWltOiBWZWhpY2xlQ2xhaW07XG4gIHZlaGljbGVDbGFpbVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8VmVoaWNsZUNsYWltPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFZlaGljbGVDbGFpbT4oMSk7XG4gIF92ZWhpY2xlQ2xhaW1SYXRlOiBudW1iZXI7XG4gIHZlaGljbGVDbGFpbVJhdGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpO1xuICBfdmVoaWNsZVRheFJldHVybjogbnVtYmVyO1xuICB2ZWhpY2xlVGF4UmV0dXJuU3ViamVjdDogUmVwbGF5U3ViamVjdDxudW1iZXI+ID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcbiAgX2luY29tZVBvc2l0aW9uczogSW5jb21lUG9zaXRpb25bXTtcbiAgaW5jb21lUG9zaXRpb25zU3ViamVjdDogUmVwbGF5U3ViamVjdDxJbmNvbWVQb3NpdGlvbltdPiA9IG5ldyBSZXBsYXlTdWJqZWN0PEluY29tZVBvc2l0aW9uW10+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGVwcmVjaWF0aW9uU2VydmljZTogRGVwcmVjaWF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0QWNjb3VudHNTZXJ2aWNlOiBDaGFydEFjY291bnRzU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gIH1cblxuICBnZXRWZWhpY2xlcygpOiBPYnNlcnZhYmxlPFZlaGljbGVbXT4ge1xuICAgIC8vIEBUT0RPIGNyZWF0ZSBiYWNrZW5kIGZvciBnZXQgbG9nYm9va1xuICAgIGlmICghdGhpcy5fdmVoaWNsZXMpIHtcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXNgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5tYXAoKGl0ZW06IGFueSkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGUsIGl0ZW0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZlaGljbGVzOiBWZWhpY2xlW10pID0+IHtcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlcyA9IHZlaGljbGVzO1xuICAgICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodmVoaWNsZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52ZWhpY2xlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHZlaGljbGVzIGNsYWltIGFtb3VudFxuICAgKi9cbiAgZ2V0VmVoaWNsZXNDbGFpbSgpOiBPYnNlcnZhYmxlPFZlaGljbGVDbGFpbT4ge1xuICAgIGlmICghdGhpcy5fdmVoaWNsZUNsYWltKSB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGUtY2xhaW1zYClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyByZXR1cm4gVmVoaWNsZSBjbGFpbSBmcm9tIGJhY2tlbmQgb3IgY3JlYXRlIG5ldyBpZiBpdCBub3QgZXhpc3RcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5sZW5ndGggPyByZXNwb25zZS5tYXAoKGl0ZW06IGFueSkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGVDbGFpbSwgaXRlbSkpWzBdIDogcGxhaW5Ub0NsYXNzKFZlaGljbGVDbGFpbSwge30pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmVoaWNsZUNsYWltOiBWZWhpY2xlQ2xhaW0pID0+IHtcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW0gPSB2ZWhpY2xlQ2xhaW07XG4gICAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TdWJqZWN0Lm5leHQodmVoaWNsZUNsYWltKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IHZlaGljbGUgY2xhaW1cbiAgICogQHBhcmFtIGNsYWltIG9iamVjdCB3aGljaCBzaG91bGQgYmUgYWRkZWRcbiAgICovXG4gIGFkZFZlaGljbGVDbGFpbShjbGFpbTogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZS1jbGFpbXNgLCBjbGFpbSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoVmVoaWNsZUNsYWltLCByZXNwb25zZSk7XG4gICAgICAgIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVDbGFpbSk7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0NSRUFURUQsIG51bGwpKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdmVoaWNsZXMgY2xhaW0gcmF0ZSBmb3IgY3VycmVudCBmaW5hbmNpYWwgeWVhclxuICAgKi9cbiAgZ2V0VmVoaWNsZXNDbGFpbVJhdGUoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVDbGFpbVJhdGUpIHtcbiAgICAgIHRoaXMuY2hhcnRBY2NvdW50c1NlcnZpY2UuZ2V0Q2hhcnRBY2NvdW50c0J5SWQoQ2hhcnRBY2NvdW50c0xpc3RFbnVtLktMTVNfVFJBVkVMTEVEX0ZPUl9XT1JLKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS52YWx1ZXMuZmluZCgoY2hhcnRBY2NvdW50OiBhbnkpID0+IGNoYXJ0QWNjb3VudC5maW5hbmNpYWxZZWFyID09PSBuZXcgRmluYW5jaWFsWWVhcigpLnllYXIpLnZhbHVlO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2xhaW1SYXRlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW1SYXRlID0gY2xhaW1SYXRlO1xuICAgICAgICAgIHRoaXMudmVoaWNsZUNsYWltUmF0ZVN1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlQ2xhaW1SYXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZUNsYWltUmF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHZlaGljbGVzIHRheCByZXR1cm4gZm9yIHZlaGljbGUgdHJhbnNhY3Rpb25zICYgZGVwcmVjaWF0aW9uc1xuICAgKi9cbiAgZ2V0VmVoaWNsZXNUYXhSZXR1cm4oKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVUYXhSZXR1cm4pIHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAvLyBAVG9kbyByZWZhY3RvciB0byBhdm9pZCBpbmplY3Rpb24gb2YgYW5vdGhlciBzZXJ2aWNlc1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXQoKSxcbiAgICAgICAgdGhpcy5kZXByZWNpYXRpb25TZXJ2aWNlLmdldCgpLFxuICAgICAgICB0aGlzLmdldFZlaGljbGVzQ2xhaW0oKVxuICAgICAgXSkucGlwZShcbiAgICAgICAgICBtYXAoKFt0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnMsIHZlaGljbGVDbGFpbV06IFtUcmFuc2FjdGlvbltdLCBEZXByZWNpYXRpb25bXSwgVmVoaWNsZUNsYWltXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hhcnRBY2NvdW50c0hlYWRpbmdzSWRzOiBudW1iZXJbXSA9IGVudW1Ub0xpc3QoQ2hhcnRBY2NvdW50c0hlYWRpbmdWZWhpY2xlTGlzdEVudW0pXG4gICAgICAgICAgICAgIC5tYXAoKGl0ZW06IHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IG51bWJlciB9KSA9PiBpdGVtLnZhbHVlKTtcbiAgICAgICAgICAgIC8vIGdldCB0cmFuc2FjdGlvbnMgJiBkZXByZWNpYXRpb25zIHdoaWNoIGNoYXJ0IGFjY291bnRzIGhlYWRpbmdzIGFyZSBiZWxvbmcgdG8gdmVoaWNsZSBjYXRlZ29yeVxuICAgICAgICAgICAgLy8gYnV0IGV4Y2VwdCBLTE1TIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zOiBBcnJheTxUcmFuc2FjdGlvbiB8IERlcHJlY2lhdGlvbj4gPSBbLi4udHJhbnNhY3Rpb25zLCAuLi5kZXByZWNpYXRpb25zXS5maWx0ZXIoKGl0ZW06IFRyYW5zYWN0aW9uIHwgRGVwcmVjaWF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjaGFydEFjY291bnRzSGVhZGluZ3NJZHMuaW5jbHVkZXMoaXRlbS5jaGFydEFjY291bnRzLmhlYWRpbmc/LmlkKSAmJiAhaXRlbS5jaGFydEFjY291bnRzLmlzS2xtc0ZvcldvcmsoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBnZXQgY2xhaW0gYW1vdW50IHN1bVxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMucmVkdWNlKChzdW06IG51bWJlciwgaXRlbTogVHJhbnNhY3Rpb24gfCBEZXByZWNpYXRpb24pID0+XG4gICAgICAgICAgICAgIC8vIEBUb2RvIHJlbW92ZSBpdGVtLmFtb3VudCBuZWdhdGl2ZSBzaWduIHdoZW4gZGVwcmVjaWF0aW9ucyB3aWxsIGJlIHJlZmFjdG9yZWQgYW5kIHdpbGwgaGF2ZSBuZWdhdGl2ZSBzaWduXG4gICAgICAgICAgICAgIHN1bSArICgoaXRlbSBpbnN0YW5jZW9mIERlcHJlY2lhdGlvbiA/IGl0ZW0uY3VycmVudFllYXJGb3JlY2FzdC5hbW91bnQgOiAtaXRlbS5hbW91bnQpICogKHZlaGljbGVDbGFpbS53b3JrVXNhZ2UgLyAxMDApKSwgMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodGF4UmV0dXJuOiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy5fdmVoaWNsZVRheFJldHVybiA9IHRheFJldHVybjtcbiAgICAgICAgdGhpcy52ZWhpY2xlVGF4UmV0dXJuU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVUYXhSZXR1cm4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZVRheFJldHVyblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZlaGljbGUgY2xhaW1cbiAgICogQHBhcmFtIGNsYWltIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkXG4gICAqXG4gICAqIEBUT0RPIGFsZXggcmVmcmVzaCBkZXByZWNpYXRpb24vdHJhbnNhY3Rpb24gY2FjaGVcbiAgICovXG4gIHVwZGF0ZVZlaGljbGVDbGFpbShjbGFpbTogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlLWNsYWltcy8ke2NsYWltLmlkfWAsIGNsYWltKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRWZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSA9IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltID0gdXBkYXRlZFZlaGljbGVDbGFpbTtcbiAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZUNsYWltKTtcblxuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9VUERBVEVELCBudWxsKSk7XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRWZWhpY2xlQ2xhaW07XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyBsb2dib29rIGZvciBkZXNpcmVkIHZlaGljbGVcbiAgICogQHBhcmFtIGxvZ2Jvb2sgd2hpY2ggc2hvdWxkIGJlIGFkZGVkXG4gICAqIEBwYXJhbSB2ZWhpY2xlIGZvciB3aGljaCBsb2dib29rIG9iamVjdCBzaG91bGQgYmUgYWRkZWRcbiAgICovXG4gIGFkZExvZ2Jvb2sobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfS9sb2dib29rc2AsIGxvZ2Jvb2spXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMuZmluZCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCkubG9nYm9vay5wdXNoKHJlc3BvbnNlKTtcbiAgICAgICAgICAvLyB3ZSB1cGRhdGUgbmVzdGVkIGxvZ2Jvb2sgb2JqZWN0IGluc2lkZSB2ZWhpY2xlcyBsaXN0LiBTbyBsaXN0IGlzIG5vdCBjaGFuZ2VkIGFuZCBuZXh0IG5vdCBlbWl0IHN1YnNjcmlwdGlvbnMgdXBkYXRlcy5cbiAgICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxuICAgICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZXMubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbG9nYm9va1xuICAgKiBAcGFyYW0gbG9nYm9vayB3aGljaCBzaG91bGQgYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggbG9nYm9vayBvYmplY3Qgc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZUxvZ2Jvb2sobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH0vbG9nYm9va3MvJHtsb2dib29rLmlkfWAsIGxvZ2Jvb2spLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZWRpdGVkVmVoaWNsZTogVmVoaWNsZSA9IHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpO1xuICAgICAgICBjb25zdCBlZGl0ZWRMb2dib29rSW5kZXg6IG51bWJlciA9IGVkaXRlZFZlaGljbGUubG9nYm9vay5maW5kSW5kZXgoKGw6IFZlaGljbGVMb2dib29rKSA9PiBsLmlkID09PSBsb2dib29rLmlkKTtcbiAgICAgICAgZWRpdGVkVmVoaWNsZS5sb2dib29rLnNwbGljZShlZGl0ZWRMb2dib29rSW5kZXgsIDEsIHBsYWluVG9DbGFzcyhWZWhpY2xlTG9nYm9vaywgcmVzcG9uc2UpKTtcbiAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXG4gICAgICAgIC8vIHRoYXQgaXMgd2h5IHdlIHJlY3JlYXRlIHZlaGljbGVzIGFycmF5XG4gICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZXMubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0cmlwXG4gICAqIEBwYXJhbSBsb2dib29rIGZvciB3aGljaCB0cmlwIHNob3VsZCBiZSBkZWxldGVkXG4gICAqIEBwYXJhbSB2ZWhpY2xlIGZvciB3aGljaCB0cmlwIHNob3VsZCBiZSBkZWxldGVkXG4gICAqL1xuICBkZWxldGVUcmlwKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlcy8ke3ZlaGljbGUuaWR9L2xvZ2Jvb2tzLyR7bG9nYm9vay5pZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWRpdGVkVmVoaWNsZTogVmVoaWNsZSA9IHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpO1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZWRMb2dib29rSW5kZXg6IG51bWJlciA9IGVkaXRlZFZlaGljbGUubG9nYm9vay5maW5kSW5kZXgoKGw6IFZlaGljbGVMb2dib29rKSA9PiBsLmlkID09PSBsb2dib29rLmlkKTtcbiAgICAgICAgICBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suc3BsaWNlKGRlbGV0ZWRMb2dib29rSW5kZXgsIDEpO1xuICAgICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxuICAgICAgICAgIC8vIHRoYXQgaXMgd2h5IHdlIHJlY3JlYXRlIHZlaGljbGVzIGFycmF5XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcy5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGUsIGl0ZW0pKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgdmVoaWNsZVxuICAgKiBAcGFyYW0gdmVoaWNsZSB3aGljaCBzaG91bGQgYmUgYWRkZWRcbiAgICovXG4gIGFkZFZlaGljbGUodmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzYCwge25hbWU6IHZlaGljbGUubmFtZX0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMucHVzaChwbGFpblRvQ2xhc3MoVmVoaWNsZSwgcmVzcG9uc2UpKTtcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZlaGljbGVcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZVZlaGljbGUodmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfWAsIHtuYW1lOiB2ZWhpY2xlLm5hbWV9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGVJbmRleDogbnVtYmVyID0gdGhpcy5fdmVoaWNsZXMuZmluZEluZGV4KCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlcy5zcGxpY2UoZWRpdGVkVmVoaWNsZUluZGV4LCAxLCBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgcmVzcG9uc2UpKTtcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHZlaGljbGVcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICovXG4gIGRlbGV0ZVZlaGljbGUodmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVsZXRlZFZlaGljbGVJbmRleDogbnVtYmVyID0gdGhpcy5fdmVoaWNsZXMuZmluZEluZGV4KCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlcy5zcGxpY2UoZGVsZXRlZFZlaGljbGVJbmRleCwgMSk7XG4gICAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXG4gICAgICAgICAgLy8gdGhhdCBpcyB3aHkgd2UgcmVjcmVhdGUgdmVoaWNsZXMgYXJyYXlcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
72
+ }] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRy9DOzs7R0FHRztBQUlILE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBaUM7SUFIckU7O1FBSUUsUUFBRyxHQUFXLFVBQVUsQ0FBQztRQUN6QixlQUFVLEdBQW1CLE9BQU8sQ0FBQztRQUNyQyxtQkFBYyxHQUFXLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFDdEQsbUJBQWMsR0FBVyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBQ3RELG1CQUFjLEdBQVcsWUFBWSxDQUFDLGVBQWUsQ0FBQztLQStDdkQ7SUE3Q0MsWUFBWTtRQUNWLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO2FBQ3JFLFNBQVMsQ0FBQyxDQUFDLE1BQW9ELEVBQUUsRUFBRTtZQUNsRSxNQUFNLFNBQVMsR0FBYyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFnQixFQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1RyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQzthQUNyRSxTQUFTLENBQUMsQ0FBQyxNQUFvRCxFQUFRLEVBQUU7WUFDeEUsTUFBTSxTQUFTLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQWdCLEVBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEgsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7YUFDckUsU0FBUyxDQUFDLENBQUMsTUFBb0QsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sU0FBUyxHQUFjLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsTUFBTSxPQUFPLEdBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQWdCLEVBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUF1QixFQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakgsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBbkRVLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWZWhpY2xlIGFzIFZlaGljbGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZGIvTW9kZWxzL3ZlaGljbGUnO1xuaW1wb3J0IHsgVmVoaWNsZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUnO1xuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVmVoaWNsZUxvZ2Jvb2sgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbG9nYm9vay92ZWhpY2xlLWxvZ2Jvb2snO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IHsgTWVzc2FnZXNFbnVtIH0gZnJvbSAnLi9tZXNzYWdlcy5lbnVtJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBhbGxvd3MgdG8gd29yayB3aXRoIFdvcmtUYW5rIG9wZXJhdGlvbnNcbiAqIEBUT0RPIHNlcGFyYXRlIHZlaGljbGVzIGFuZCBsb2dib29rcyB0byBkaWZmZXJlbnQgYXBpXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZlaGljbGVTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8VmVoaWNsZUJhc2UsIFZlaGljbGU+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICB1cmw6IHN0cmluZyA9ICd2ZWhpY2xlcyc7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBWZWhpY2xlID0gVmVoaWNsZTtcbiAgbWVzc2FnZUNyZWF0ZWQ6IHN0cmluZyA9IE1lc3NhZ2VzRW51bS5WRUhJQ0xFX0NSRUFURUQ7XG4gIG1lc3NhZ2VVcGRhdGVkOiBzdHJpbmcgPSBNZXNzYWdlc0VudW0uVkVISUNMRV9VUERBVEVEO1xuICBtZXNzYWdlRGVsZXRlZDogc3RyaW5nID0gTWVzc2FnZXNFbnVtLlZFSElDTEVfREVMRVRFRDtcblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Mb2dib29rQWRkZWQoKTtcbiAgICB0aGlzLmxpc3RlbkxvZ2Jvb2tVcGRhdGVkKCk7XG4gICAgdGhpcy5saXN0ZW5Mb2dib29rRGVsZXRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBsb2dib29rIGl0ZW1zIHRvIHRoZSB2ZWhpY2xlIHdoZW4gYSBuZXcgb25lIGNyZWF0ZWRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuTG9nYm9va0FkZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfTE9HQk9PS19DUkVBVEVEKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiB7bG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIHZlaGljbGVJZDogbnVtYmVyfSkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IFZlaGljbGVbXSA9IGNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgICAgdGVtcENhY2hlLmZpbmQoKHZlaGljbGU6IFZlaGljbGUpOiBib29sZWFuID0+IHZlaGljbGUuaWQgPT09IHJlc3VsdC52ZWhpY2xlSWQpLmxvZ2Jvb2sucHVzaChyZXN1bHQubG9nYm9vayk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdmVoaWNsZSdzIGxvZ2Jvb2sgd2l0aCB1cGRhdGVkIGluc3RhbmNlIHdoZW4gbG9nYm9vayBpdGVtIHVwZGF0ZWRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuTG9nYm9va1VwZGF0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9MT0dCT09LX1VQREFURUQpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHtsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgdmVoaWNsZUlkOiBudW1iZXJ9KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRlbXBDYWNoZTogVmVoaWNsZVtdID0gY2xvbmVEZWVwKHRoaXMuY2FjaGUpO1xuICAgICAgICByZXBsYWNlKHRlbXBDYWNoZS5maW5kKCh2ZWhpY2xlOiBWZWhpY2xlKTogYm9vbGVhbiA9PiB2ZWhpY2xlLmlkID09PSByZXN1bHQudmVoaWNsZUlkKS5sb2dib29rLCByZXN1bHQubG9nYm9vayk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBsb2dib29rIGl0ZW0gZnJvbSB2ZWhpY2xlIHdoZW4gbG9nYm9vayBkZWxldGVkXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkxvZ2Jvb2tEZWxldGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfTE9HQk9PS19ERUxFVEVEKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiB7bG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIHZlaGljbGVJZDogbnVtYmVyfSkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IFZlaGljbGVbXSA9IGNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgICAgY29uc3QgdmVoaWNsZTogVmVoaWNsZSA9IHRlbXBDYWNoZS5maW5kKCh2ZWhpY2xlOiBWZWhpY2xlKTogYm9vbGVhbiA9PiB2ZWhpY2xlLmlkID09PSByZXN1bHQudmVoaWNsZUlkKTtcbiAgICAgICAgdmVoaWNsZS5sb2dib29rID0gdmVoaWNsZS5sb2dib29rLmZpbHRlcigobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2spOiBib29sZWFuID0+IGxvZ2Jvb2suaWQgIT09IHJlc3VsdC5sb2dib29rLmlkKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IHRlbXBDYWNoZTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -10,21 +10,21 @@ export class PdfService {
10
10
  /**
11
11
  * Export file from provided HTML tables
12
12
  */
13
- exportTables(tables, title, fileName, orientation) {
14
- const document = this.generateFromTables(orientation, tables, title);
15
- document.save(`${fileName}.pdf`);
13
+ exportTables(tables, fileSettings) {
14
+ const document = this.generateFromTables(tables, fileSettings);
15
+ document.save(`${fileSettings.filename}.pdf`);
16
16
  }
17
17
  /**
18
18
  * Export file from provided array-like table data
19
19
  */
20
- exportFromDataTables(dataTables, title, fileName) {
21
- const document = this.generateFromDataTables(title, dataTables);
22
- document.save(`${fileName}.pdf`);
20
+ exportFromDataTables(dataTables, fileSettings) {
21
+ const document = this.generateFromDataTables(dataTables, fileSettings.title);
22
+ document.save(`${fileSettings.filename}.pdf`);
23
23
  }
24
24
  /**
25
25
  * Generate file from array-like table data
26
26
  */
27
- generateFromDataTables(title, dataTables) {
27
+ generateFromDataTables(dataTables, title) {
28
28
  const pdf = new jsPDF();
29
29
  this.setDocumentTitle(pdf, title);
30
30
  this.setDocumentLogo(pdf);
@@ -33,9 +33,9 @@ export class PdfService {
33
33
  });
34
34
  return pdf;
35
35
  }
36
- generateFromTables(orientation, tables, title) {
37
- const pdf = new jsPDF(orientation);
38
- this.setDocumentTitle(pdf, title);
36
+ generateFromTables(tables, fileSettings) {
37
+ const pdf = new jsPDF(fileSettings.orientation);
38
+ this.setDocumentTitle(pdf, fileSettings.title);
39
39
  this.setDocumentLogo(pdf);
40
40
  tables.forEach((table) => {
41
41
  // Add table caption if not provided
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
91
91
  providedIn: 'root'
92
92
  }]
93
93
  }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvcGRmL3BkZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFRekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUFvQyxFQUFFLEtBQWEsRUFBRSxRQUFnQixFQUFFLFdBQStCO1FBQ2pILE1BQU0sUUFBUSxHQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFVBQTZCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO1FBQ2pGLE1BQU0sUUFBUSxHQUFVLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsS0FBYSxFQUFFLFVBQTZCO1FBQ3pFLE1BQU0sR0FBRyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUEwQixFQUFFLEVBQUU7WUFDaEQsU0FBUyxDQUNQLEdBQUcsa0JBQ0QsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksRUFDcEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQy9DLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQStCLEVBQUUsTUFBb0MsRUFBRSxLQUFjO1FBQzlHLE1BQU0sR0FBRyxHQUFVLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFO1lBQ3pDLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7YUFDN0I7WUFFRCxTQUFTLENBQ1AsR0FBRyxrQkFFRCxJQUFJLEVBQUUsS0FBSyxJQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ3JELENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLEdBQVUsRUFBRSxlQUF1QixFQUFFO1FBQzNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDMUYscURBQXFEO1FBQ3JELE1BQU0sYUFBYSxHQUFXLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxlQUFlLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsSCxPQUFPO1lBQ0wsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVk7YUFDeEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDckMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVTthQUN0QztZQUNELE1BQU0sRUFBRSxlQUFlLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTO1lBQ2pGLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQixxQ0FBcUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQTtpQkFDbEM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxHQUFVLEVBQUUsS0FBYztRQUNqRCxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN4RixJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFVO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMvQixHQUFHLENBQUMsUUFBUSxDQUNWLElBQUksRUFDSixLQUFLLEVBQ0wsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUN2RCxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQ3JCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUN2QixDQUFBO0lBQ0gsQ0FBQzs7d0dBM0dVLFVBQVU7NEdBQVYsVUFBVSxjQU5ULE1BQU07NEZBTVAsVUFBVTtrQkFQdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQganNQREYgZnJvbSAnanNwZGYnO1xuaW1wb3J0IGF1dG9UYWJsZSBmcm9tICdqc3BkZi1hdXRvdGFibGUnO1xuaW1wb3J0IHsgUERGX0NPTkZJRyB9IGZyb20gJy4uLy4uL21vZGVscy9wZGYvcGRmLWNvbmZpZyc7XG5pbXBvcnQgeyBFeHBvcnREYXRhVGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXhwb3J0L2V4cG9ydC1kYXRhLXRhYmxlJztcbmltcG9ydCB7IFBkZk9yaWVudGF0aW9uRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9wZGYvcGRmLW9yaWVudGF0aW9uLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIHdvcmsgd2l0aCBQREYgKGdlbmVyYXRlLCBkb3dubG9hZCwgZS50LmMuKVxuICovXG5leHBvcnQgY2xhc3MgUGRmU2VydmljZSB7XG4gIC8qKlxuICAgKiBFeHBvcnQgZmlsZSBmcm9tIHByb3ZpZGVkIEhUTUwgdGFibGVzXG4gICAqL1xuICBleHBvcnRUYWJsZXModGFibGVzOiBOb2RlTGlzdE9mPEhUTUxUYWJsZUVsZW1lbnQ+LCB0aXRsZTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nLCBvcmllbnRhdGlvbjogUGRmT3JpZW50YXRpb25FbnVtKTogdm9pZCB7XG4gICAgY29uc3QgZG9jdW1lbnQ6IGpzUERGID0gdGhpcy5nZW5lcmF0ZUZyb21UYWJsZXMob3JpZW50YXRpb24sIHRhYmxlcywgdGl0bGUpO1xuICAgIGRvY3VtZW50LnNhdmUoYCR7ZmlsZU5hbWV9LnBkZmApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBmaWxlIGZyb20gcHJvdmlkZWQgYXJyYXktbGlrZSB0YWJsZSBkYXRhXG4gICAqL1xuICBleHBvcnRGcm9tRGF0YVRhYmxlcyhkYXRhVGFibGVzOiBFeHBvcnREYXRhVGFibGVbXSwgdGl0bGU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50OiBqc1BERiA9IHRoaXMuZ2VuZXJhdGVGcm9tRGF0YVRhYmxlcyh0aXRsZSwgZGF0YVRhYmxlcyk7XG4gICAgZG9jdW1lbnQuc2F2ZShgJHtmaWxlTmFtZX0ucGRmYCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgZmlsZSBmcm9tIGFycmF5LWxpa2UgdGFibGUgZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZyb21EYXRhVGFibGVzKHRpdGxlOiBzdHJpbmcsIGRhdGFUYWJsZXM6IEV4cG9ydERhdGFUYWJsZVtdKToganNQREYge1xuICAgIGNvbnN0IHBkZjoganNQREYgPSBuZXcganNQREYoKTtcblxuICAgIHRoaXMuc2V0RG9jdW1lbnRUaXRsZShwZGYsIHRpdGxlKTtcbiAgICB0aGlzLnNldERvY3VtZW50TG9nbyhwZGYpO1xuXG4gICAgZGF0YVRhYmxlcy5mb3JFYWNoKChkYXRhVGFibGU6IEV4cG9ydERhdGFUYWJsZSkgPT4ge1xuICAgICAgYXV0b1RhYmxlKFxuICAgICAgICBwZGYsIHtcbiAgICAgICAgICBoZWFkOiBbZGF0YVRhYmxlLmhlYWRlcl0sXG4gICAgICAgICAgYm9keTogZGF0YVRhYmxlLnJvd3MsXG4gICAgICAgICAgZm9vdDogW2RhdGFUYWJsZS5mb290ZXJdLFxuICAgICAgICAgIC4uLnRoaXMuc2V0VGFibGVPcHRpb25zKHBkZiwgZGF0YVRhYmxlLmNhcHRpb24pXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBkZjtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVGcm9tVGFibGVzKG9yaWVudGF0aW9uOiBQZGZPcmllbnRhdGlvbkVudW0sIHRhYmxlczogTm9kZUxpc3RPZjxIVE1MVGFibGVFbGVtZW50PiwgdGl0bGU/OiBzdHJpbmcpOiBqc1BERiB7XG4gICAgY29uc3QgcGRmOiBqc1BERiA9IG5ldyBqc1BERihvcmllbnRhdGlvbik7XG5cbiAgICB0aGlzLnNldERvY3VtZW50VGl0bGUocGRmLCB0aXRsZSk7XG4gICAgdGhpcy5zZXREb2N1bWVudExvZ28ocGRmKTtcblxuICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogSFRNTFRhYmxlRWxlbWVudCkgPT4ge1xuICAgICAgLy8gQWRkIHRhYmxlIGNhcHRpb24gaWYgbm90IHByb3ZpZGVkXG4gICAgICBpZiAoIXRhYmxlLmNhcHRpb24pIHtcbiAgICAgICAgdGFibGUuY3JlYXRlQ2FwdGlvbigpO1xuICAgICAgICB0YWJsZS5jYXB0aW9uLmlubmVyVGV4dCA9ICcnXG4gICAgICB9XG5cbiAgICAgIGF1dG9UYWJsZShcbiAgICAgICAgcGRmLFxuICAgICAgICB7XG4gICAgICAgICAgaHRtbDogdGFibGUsXG4gICAgICAgICAgLi4udGhpcy5zZXRUYWJsZU9wdGlvbnMocGRmLCB0YWJsZS5jYXB0aW9uLmlubmVyVGV4dClcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGRmO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBiYXNpYyBvcHRpb25zIGZvciBQREYgdGFibGVcbiAgICovXG4gIHByaXZhdGUgc2V0VGFibGVPcHRpb25zKHBkZjoganNQREYsIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gJycpOiBvYmplY3Qge1xuICAgIGNvbnN0IGxhc3RUYWJsZUNvb3JkcyA9IHBkZlsnbGFzdEF1dG9UYWJsZSddLmZpbmFsWSB8fCBQREZfQ09ORklHLmNvbnRlbnRDb29yZHMubWFyZ2luVG9wO1xuICAgIC8vIGdldCBjYXB0aW9uIGhlaWdodCBiYXNlZCBvbiBjYXB0aW9uIGNvbnRlbnQgaGVpZ2h0XG4gICAgY29uc3QgY2FwdGlvbkhlaWdodDogbnVtYmVyID0gcGRmLmdldFRleHREaW1lbnNpb25zKHBkZi5zcGxpdFRleHRUb1NpemUodGFibGVDYXB0aW9uLCBwZGYuaW50ZXJuYWwucGFnZVNpemUud2lkdGgpKS5oO1xuICAgIHBkZi50ZXh0KHRhYmxlQ2FwdGlvbiwgUERGX0NPTkZJRy5jb250ZW50Q29vcmRzLm1hcmdpbkxlZnQsIGxhc3RUYWJsZUNvb3JkcyArIFBERl9DT05GSUcuY29udGVudENvb3Jkcy5tYXJnaW5Ub3ApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRTdHlsZXM6IHtcbiAgICAgICAgZmlsbENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JQcmltYXJ5LFxuICAgICAgfSxcbiAgICAgIGZvb3RTdHlsZXM6IHtcbiAgICAgICAgZmlsbENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JXaGl0ZSxcbiAgICAgICAgdGV4dENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JCbGFja1xuICAgICAgfSxcbiAgICAgIHN0YXJ0WTogbGFzdFRhYmxlQ29vcmRzICsgY2FwdGlvbkhlaWdodCArIFBERl9DT05GSUcuY29udGVudFRpdGxlQ29vcmRzLm1hcmdpblRvcCxcbiAgICAgIGRpZFBhcnNlQ2VsbDogKGRhdGEpID0+IHtcbiAgICAgICAgLy8gQWxpZ24gbGFzdCBjb2x1bW4gY29udGVudCB0byByaWdodFxuICAgICAgICBpZiAoZGF0YS50YWJsZS5jb2x1bW5zLmxlbmd0aCA+IDEgJiYgKGRhdGEuY29sdW1uLmluZGV4ID09PSBkYXRhLnRhYmxlLmNvbHVtbnMubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLmhhbGlnbiA9ICdyaWdodCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRUaXRsZShkb2M6IGpzUERGLCB0aXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGRvYy5zZXRGb250U2l6ZShQREZfQ09ORklHLnRleHQuZm9udFNpemUpXG4gICAgICAuc2V0Rm9udChQREZfQ09ORklHLnRleHQuZm9udE5hbWUsIFBERl9DT05GSUcudGV4dC5mb250U3R5bGUsIFBERl9DT05GSUcudGV4dC5mb250V2VpZ2h0KVxuICAgICAgLnRleHQodGl0bGUsIFBERl9DT05GSUcudGV4dC5wb3NpdGlvblgsIFBERl9DT05GSUcudGV4dC5wb3NpdGlvblkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREb2N1bWVudExvZ28oZG9jOiBqc1BERik6IHZvaWQge1xuICAgIGNvbnN0IGxvZ28gPSBuZXcgSW1hZ2UoKTtcbiAgICBsb2dvLnNyYyA9IFBERl9DT05GSUcubG9nby5zcmM7XG4gICAgZG9jLmFkZEltYWdlKFxuICAgICAgbG9nbyxcbiAgICAgICdQTkcnLFxuICAgICAgZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoIC0gUERGX0NPTkZJRy5sb2dvLnBvc2l0aW9uWCxcbiAgICAgIFBERl9DT05GSUcubG9nby5wb3NpdGlvblksXG4gICAgICBQREZfQ09ORklHLmxvZ28ud2lkdGgsXG4gICAgICBQREZfQ09ORklHLmxvZ28uaGVpZ2h0XG4gICAgKVxuICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvcGRmL3BkZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFRekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUFvQyxFQUFFLFlBQXlCO1FBQzFFLE1BQU0sUUFBUSxHQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFVBQTZCLEVBQUUsWUFBeUI7UUFDM0UsTUFBTSxRQUFRLEdBQVUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEYsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQixDQUFDLFVBQTZCLEVBQUUsS0FBYTtRQUN6RSxNQUFNLEdBQUcsR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztR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O1FBQ2pELEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3hGLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQVU7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxRQUFRLENBQ1YsSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQ3ZELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3ZCLENBQUE7SUFDSCxDQUFDOzt3R0EzR1UsVUFBVTs0R0FBVixVQUFVLGNBTlQsTUFBTTs0RkFNUCxVQUFVO2tCQVB0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgYXV0b1RhYmxlIGZyb20gJ2pzcGRmLWF1dG90YWJsZSc7XG5pbXBvcnQgeyBQREZfQ09ORklHIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BkZi9wZGYtY29uZmlnJztcbmltcG9ydCB7IEV4cG9ydERhdGFUYWJsZSB9IGZyb20gJy4uLy4uL21vZGVscy9leHBvcnQvZXhwb3J0LWRhdGEtdGFibGUnO1xuaW1wb3J0IHsgUGRmU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGRmL3BkZi1zZXR0aW5ncyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gd29yayB3aXRoIFBERiAoZ2VuZXJhdGUsIGRvd25sb2FkLCBlLnQuYy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBQZGZTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEV4cG9ydCBmaWxlIGZyb20gcHJvdmlkZWQgSFRNTCB0YWJsZXNcbiAgICovXG4gIGV4cG9ydFRhYmxlcyh0YWJsZXM6IE5vZGVMaXN0T2Y8SFRNTFRhYmxlRWxlbWVudD4sIGZpbGVTZXR0aW5nczogUGRmU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudDoganNQREYgPSB0aGlzLmdlbmVyYXRlRnJvbVRhYmxlcyh0YWJsZXMsIGZpbGVTZXR0aW5ncyk7XG4gICAgZG9jdW1lbnQuc2F2ZShgJHtmaWxlU2V0dGluZ3MuZmlsZW5hbWV9LnBkZmApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBmaWxlIGZyb20gcHJvdmlkZWQgYXJyYXktbGlrZSB0YWJsZSBkYXRhXG4gICAqL1xuICBleHBvcnRGcm9tRGF0YVRhYmxlcyhkYXRhVGFibGVzOiBFeHBvcnREYXRhVGFibGVbXSwgZmlsZVNldHRpbmdzOiBQZGZTZXR0aW5ncyk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50OiBqc1BERiA9IHRoaXMuZ2VuZXJhdGVGcm9tRGF0YVRhYmxlcyhkYXRhVGFibGVzLCBmaWxlU2V0dGluZ3MudGl0bGUpO1xuICAgIGRvY3VtZW50LnNhdmUoYCR7ZmlsZVNldHRpbmdzLmZpbGVuYW1lfS5wZGZgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBmaWxlIGZyb20gYXJyYXktbGlrZSB0YWJsZSBkYXRhXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlRnJvbURhdGFUYWJsZXMoZGF0YVRhYmxlczogRXhwb3J0RGF0YVRhYmxlW10sIHRpdGxlOiBzdHJpbmcpOiBqc1BERiB7XG4gICAgY29uc3QgcGRmOiBqc1BERiA9IG5ldyBqc1BERigpO1xuXG4gICAgdGhpcy5zZXREb2N1bWVudFRpdGxlKHBkZiwgdGl0bGUpO1xuICAgIHRoaXMuc2V0RG9jdW1lbnRMb2dvKHBkZik7XG5cbiAgICBkYXRhVGFibGVzLmZvckVhY2goKGRhdGFUYWJsZTogRXhwb3J0RGF0YVRhYmxlKSA9PiB7XG4gICAgICBhdXRvVGFibGUoXG4gICAgICAgIHBkZiwge1xuICAgICAgICAgIGhlYWQ6IFtkYXRhVGFibGUuaGVhZGVyXSxcbiAgICAgICAgICBib2R5OiBkYXRhVGFibGUucm93cyxcbiAgICAgICAgICBmb290OiBbZGF0YVRhYmxlLmZvb3Rlcl0sXG4gICAgICAgICAgLi4udGhpcy5zZXRUYWJsZU9wdGlvbnMocGRmLCBkYXRhVGFibGUuY2FwdGlvbilcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGRmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZyb21UYWJsZXModGFibGVzOiBOb2RlTGlzdE9mPEhUTUxUYWJsZUVsZW1lbnQ+LCBmaWxlU2V0dGluZ3M6IFBkZlNldHRpbmdzKToganNQREYge1xuICAgIGNvbnN0IHBkZjoganNQREYgPSBuZXcganNQREYoZmlsZVNldHRpbmdzLm9yaWVudGF0aW9uKTtcblxuICAgIHRoaXMuc2V0RG9jdW1lbnRUaXRsZShwZGYsIGZpbGVTZXR0aW5ncy50aXRsZSk7XG4gICAgdGhpcy5zZXREb2N1bWVudExvZ28ocGRmKTtcblxuICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogSFRNTFRhYmxlRWxlbWVudCkgPT4ge1xuICAgICAgLy8gQWRkIHRhYmxlIGNhcHRpb24gaWYgbm90IHByb3ZpZGVkXG4gICAgICBpZiAoIXRhYmxlLmNhcHRpb24pIHtcbiAgICAgICAgdGFibGUuY3JlYXRlQ2FwdGlvbigpO1xuICAgICAgICB0YWJsZS5jYXB0aW9uLmlubmVyVGV4dCA9ICcnXG4gICAgICB9XG5cbiAgICAgIGF1dG9UYWJsZShcbiAgICAgICAgcGRmLFxuICAgICAgICB7XG4gICAgICAgICAgaHRtbDogdGFibGUsXG4gICAgICAgICAgLi4udGhpcy5zZXRUYWJsZU9wdGlvbnMocGRmLCB0YWJsZS5jYXB0aW9uLmlubmVyVGV4dClcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGRmO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBiYXNpYyBvcHRpb25zIGZvciBQREYgdGFibGVcbiAgICovXG4gIHByaXZhdGUgc2V0VGFibGVPcHRpb25zKHBkZjoganNQREYsIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gJycpOiBvYmplY3Qge1xuICAgIGNvbnN0IGxhc3RUYWJsZUNvb3JkcyA9IHBkZlsnbGFzdEF1dG9UYWJsZSddLmZpbmFsWSB8fCBQREZfQ09ORklHLmNvbnRlbnRDb29yZHMubWFyZ2luVG9wO1xuICAgIC8vIGdldCBjYXB0aW9uIGhlaWdodCBiYXNlZCBvbiBjYXB0aW9uIGNvbnRlbnQgaGVpZ2h0XG4gICAgY29uc3QgY2FwdGlvbkhlaWdodDogbnVtYmVyID0gcGRmLmdldFRleHREaW1lbnNpb25zKHBkZi5zcGxpdFRleHRUb1NpemUodGFibGVDYXB0aW9uLCBwZGYuaW50ZXJuYWwucGFnZVNpemUud2lkdGgpKS5oO1xuICAgIHBkZi50ZXh0KHRhYmxlQ2FwdGlvbiwgUERGX0NPTkZJRy5jb250ZW50Q29vcmRzLm1hcmdpbkxlZnQsIGxhc3RUYWJsZUNvb3JkcyArIFBERl9DT05GSUcuY29udGVudENvb3Jkcy5tYXJnaW5Ub3ApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRTdHlsZXM6IHtcbiAgICAgICAgZmlsbENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JQcmltYXJ5LFxuICAgICAgfSxcbiAgICAgIGZvb3RTdHlsZXM6IHtcbiAgICAgICAgZmlsbENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JXaGl0ZSxcbiAgICAgICAgdGV4dENvbG9yOiBQREZfQ09ORklHLnRleHQuY29sb3JCbGFja1xuICAgICAgfSxcbiAgICAgIHN0YXJ0WTogbGFzdFRhYmxlQ29vcmRzICsgY2FwdGlvbkhlaWdodCArIFBERl9DT05GSUcuY29udGVudFRpdGxlQ29vcmRzLm1hcmdpblRvcCxcbiAgICAgIGRpZFBhcnNlQ2VsbDogKGRhdGEpID0+IHtcbiAgICAgICAgLy8gQWxpZ24gbGFzdCBjb2x1bW4gY29udGVudCB0byByaWdodFxuICAgICAgICBpZiAoZGF0YS50YWJsZS5jb2x1bW5zLmxlbmd0aCA+IDEgJiYgKGRhdGEuY29sdW1uLmluZGV4ID09PSBkYXRhLnRhYmxlLmNvbHVtbnMubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLmhhbGlnbiA9ICdyaWdodCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRUaXRsZShkb2M6IGpzUERGLCB0aXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGRvYy5zZXRGb250U2l6ZShQREZfQ09ORklHLnRleHQuZm9udFNpemUpXG4gICAgICAuc2V0Rm9udChQREZfQ09ORklHLnRleHQuZm9udE5hbWUsIFBERl9DT05GSUcudGV4dC5mb250U3R5bGUsIFBERl9DT05GSUcudGV4dC5mb250V2VpZ2h0KVxuICAgICAgLnRleHQodGl0bGUsIFBERl9DT05GSUcudGV4dC5wb3NpdGlvblgsIFBERl9DT05GSUcudGV4dC5wb3NpdGlvblkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREb2N1bWVudExvZ28oZG9jOiBqc1BERik6IHZvaWQge1xuICAgIGNvbnN0IGxvZ28gPSBuZXcgSW1hZ2UoKTtcbiAgICBsb2dvLnNyYyA9IFBERl9DT05GSUcubG9nby5zcmM7XG4gICAgZG9jLmFkZEltYWdlKFxuICAgICAgbG9nbyxcbiAgICAgICdQTkcnLFxuICAgICAgZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoIC0gUERGX0NPTkZJRy5sb2dvLnBvc2l0aW9uWCxcbiAgICAgIFBERl9DT05GSUcubG9nby5wb3NpdGlvblksXG4gICAgICBQREZfQ09ORklHLmxvZ28ud2lkdGgsXG4gICAgICBQREZfQ09ORklHLmxvZ28uaGVpZ2h0XG4gICAgKVxuICB9XG59XG4iXX0=