@esolve/ng-esolve-connect 0.9.1 → 0.10.0

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 (45) hide show
  1. package/esm2020/lib/account/esolve-account.service.mjs +84 -40
  2. package/esm2020/lib/account/esolve-transaction-list.mjs +4 -0
  3. package/esm2020/lib/account/esolve-transaction-options.mjs +2 -0
  4. package/esm2020/lib/account/esolve-transaction-record.mjs +2 -0
  5. package/esm2020/lib/account/esolve-transaction.mjs +145 -0
  6. package/esm2020/lib/auth/esolve-auth-interceptor.service.mjs +1 -1
  7. package/esm2020/lib/auth/esolve-auth.service.mjs +25 -25
  8. package/esm2020/lib/banners/esolve-banner.service.mjs +26 -26
  9. package/esm2020/lib/cart/esolve-cart.service.mjs +25 -25
  10. package/esm2020/lib/category-tree/esolve-category-tree.service.mjs +45 -45
  11. package/esm2020/lib/locations/esolve-locations.service.mjs +15 -15
  12. package/esm2020/lib/locations/esolve-stock-location-record.mjs +1 -1
  13. package/esm2020/lib/locations/esolve-stock-location.mjs +16 -16
  14. package/esm2020/lib/media/esolve-media.service.mjs +25 -25
  15. package/esm2020/lib/menu/esolve-menu.service.mjs +1 -1
  16. package/esm2020/lib/payment/esolve-payment-method-record.mjs +1 -1
  17. package/esm2020/lib/payment/esolve-payment-method.mjs +1 -5
  18. package/esm2020/lib/shared/error-handler/esolve-error-handler.service.mjs +5 -3
  19. package/esm2020/lib/shared/esolve-list.mjs +9 -0
  20. package/esm2020/lib/topics/esolve-topic.service.mjs +11 -11
  21. package/esm2020/public-api.mjs +6 -2
  22. package/fesm2015/esolve-ng-esolve-connect.mjs +484 -291
  23. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  24. package/fesm2020/esolve-ng-esolve-connect.mjs +486 -290
  25. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  26. package/lib/account/esolve-account.service.d.ts +9 -4
  27. package/lib/account/esolve-transaction-list.d.ts +4 -0
  28. package/lib/account/esolve-transaction-options.d.ts +8 -0
  29. package/lib/account/esolve-transaction-record.d.ts +98 -0
  30. package/lib/account/esolve-transaction.d.ts +132 -0
  31. package/lib/auth/esolve-auth.service.d.ts +1 -1
  32. package/lib/banners/esolve-banner.service.d.ts +6 -6
  33. package/lib/cart/esolve-cart.service.d.ts +12 -12
  34. package/lib/category-tree/esolve-category-tree.service.d.ts +7 -7
  35. package/lib/locations/esolve-locations.service.d.ts +5 -5
  36. package/lib/locations/esolve-stock-location-record.d.ts +1 -1
  37. package/lib/locations/esolve-stock-location.d.ts +7 -8
  38. package/lib/media/esolve-media.service.d.ts +7 -7
  39. package/lib/payment/esolve-payment-method-record.d.ts +0 -4
  40. package/lib/payment/esolve-payment-method.d.ts +0 -4
  41. package/lib/shared/error-handler/esolve-error-handler.service.d.ts +1 -0
  42. package/lib/shared/esolve-list.d.ts +7 -0
  43. package/lib/topics/esolve-topic.service.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +5 -1
@@ -6,10 +6,12 @@ import { EsolveResult } from '../shared/esolve-result';
6
6
  import { EsolveAddress } from './esolve-address';
7
7
  import { EsolveAddressResult } from './esolve-address-result';
8
8
  import { EsolveRegistrationResult } from './esolve-registration-result';
9
- import { EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact } from './esolve-user-account';
10
9
  import { EsolveUserAccountResult } from './esolve-user-account-result';
11
10
  import { EsolveChangePasswordResult } from './esolve-change-password-result';
12
11
  import { EsolveResetPasswordResult } from './esolve-reset-password-result';
12
+ import { EsolveTransaction } from './esolve-transaction';
13
+ import { EsolveTransactionList } from './esolve-transaction-list';
14
+ import { EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact } from './esolve-user-account';
13
15
  import * as i0 from "@angular/core";
14
16
  import * as i1 from "@angular/common/http";
15
17
  import * as i2 from "../session/esolve-session.service";
@@ -38,31 +40,6 @@ export class EsolveAccountService {
38
40
  this._user_id = value;
39
41
  }
40
42
  }
41
- processUserAccount(record) {
42
- if (!record) {
43
- throw new Error('Invalid record');
44
- }
45
- if (+record.userid !== this._user_id) {
46
- throw new Error('Invalid user account retrieved');
47
- }
48
- const user_account = new EsolveUserAccount(+record.userid, record.email, record.registration_type, record.title, record.firstname, record.surname, record.initials, record.gender, record.idnumber);
49
- user_account.contact_details = new EsolveUserAccountContact(record.telnumber, record.cellnumber, record.fax);
50
- user_account.business_details = new EsolveUserAccountBusiness(record.busname, record.vatnum, record.busdescript, record.business_type);
51
- return user_account;
52
- }
53
- processUserAddress(records) {
54
- const user_addresses = [];
55
- if (!records || (this._user_id === 0)) {
56
- return user_addresses;
57
- }
58
- for (const record of records) {
59
- if (+record.userid !== this._user_id) {
60
- continue;
61
- }
62
- user_addresses.push(new EsolveAddress(+record.id, record.recipient, record.address_type, record.pobox, record.place_name, record.street_number, record.street, record.suburb, record.city, record.province, record.country, record.postal_code, +record.latitude, +record.longitude));
63
- }
64
- return user_addresses;
65
- }
66
43
  updateUserAccount(user_account_data) {
67
44
  const body = {
68
45
  account: user_account_data
@@ -112,20 +89,23 @@ export class EsolveAccountService {
112
89
  }));
113
90
  }
114
91
  getAddresses() {
115
- if (this.user_id <= 0) {
116
- return throwError('Log in is required');
92
+ try {
93
+ this.loginGuard();
94
+ return this.http.get(`${this.config.api_url}/service/get-addresses.php`, {
95
+ params: {
96
+ ws_id: this.config.wsid,
97
+ user_id: this.user_id
98
+ }
99
+ }).pipe(map(response => {
100
+ if (response.records === undefined) {
101
+ throw response;
102
+ }
103
+ return this.processUserAddress(response.records);
104
+ }));
105
+ }
106
+ catch (error) {
107
+ return throwError(error);
117
108
  }
118
- return this.http.get(`${this.config.api_url}/service/get-addresses.php`, {
119
- params: {
120
- ws_id: this.config.wsid,
121
- user_id: this.user_id
122
- }
123
- }).pipe(map(response => {
124
- if (response.records === undefined) {
125
- throw response;
126
- }
127
- return this.processUserAddress(response.records);
128
- }));
129
109
  }
130
110
  deleteAddress(id) {
131
111
  return this.http.delete(`${this.config.api_url}/service/delete-address.php`, {
@@ -226,6 +206,70 @@ export class EsolveAccountService {
226
206
  return this.errorHandler.handleHttpPostError('set-forgot-password', errorRes);
227
207
  }));
228
208
  }
209
+ getTranscations(options = {}) {
210
+ try {
211
+ this.loginGuard();
212
+ return this.http.get(`${this.config.api_url}/service/get-transactions.php`, {
213
+ params: {
214
+ ws_id: this.config.wsid,
215
+ user_id: this.user_id,
216
+ ...options,
217
+ }
218
+ }).pipe(map(response => {
219
+ if (response.records === undefined) {
220
+ throw response;
221
+ }
222
+ const items = this.processTransactions(response.records);
223
+ const total = +response.additional_data.total_records ?? 0;
224
+ const rows = options.rows ?? total;
225
+ const page = options.page || 1;
226
+ return new EsolveTransactionList(items, page, rows, total);
227
+ }));
228
+ }
229
+ catch (error) {
230
+ return throwError(error);
231
+ }
232
+ }
233
+ processUserAccount(record) {
234
+ if (!record) {
235
+ throw new Error('Invalid record');
236
+ }
237
+ if (+record.userid !== this._user_id) {
238
+ throw new Error('Invalid user account retrieved');
239
+ }
240
+ const user_account = new EsolveUserAccount(+record.userid, record.email, record.registration_type, record.title, record.firstname, record.surname, record.initials, record.gender, record.idnumber);
241
+ user_account.contact_details = new EsolveUserAccountContact(record.telnumber, record.cellnumber, record.fax);
242
+ user_account.business_details = new EsolveUserAccountBusiness(record.busname, record.vatnum, record.busdescript, record.business_type);
243
+ return user_account;
244
+ }
245
+ processUserAddress(records) {
246
+ const user_addresses = [];
247
+ if (!records || (this._user_id === 0)) {
248
+ return user_addresses;
249
+ }
250
+ for (const record of records) {
251
+ if (+record.userid !== this._user_id) {
252
+ continue;
253
+ }
254
+ user_addresses.push(new EsolveAddress(+record.id, record.recipient, record.address_type, record.pobox, record.place_name, record.street_number, record.street, record.suburb, record.city, record.province, record.country, record.postal_code, +record.latitude, +record.longitude));
255
+ }
256
+ return user_addresses;
257
+ }
258
+ processTransactions(records) {
259
+ const transactions = [];
260
+ if (records) {
261
+ for (const record of records) {
262
+ const transaction = new EsolveTransaction(record);
263
+ transactions.push(transaction);
264
+ }
265
+ }
266
+ return transactions;
267
+ }
268
+ loginGuard() {
269
+ if (this.user_id <= 0) {
270
+ this.errorHandler.emitError('login_required', 'Login is required');
271
+ }
272
+ }
229
273
  }
230
274
  EsolveAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EsolveAccountService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveSessionService }, { token: i3.EsolveErrorHandlerService }, { token: i4.EsolveResponseHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
231
275
  EsolveAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EsolveAccountService, providedIn: 'root' });
@@ -238,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
238
282
  type: Inject,
239
283
  args: [ESOLVE_CONNECT_CONFIG]
240
284
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveResponseHandlerService }]; } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDM0IsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBUzNFLE1BQU0sT0FBTyxvQkFBb0I7SUFlN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsY0FBb0MsRUFDcEMsWUFBdUMsRUFDdkMsZUFBNkM7UUFKZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBbkJqRCxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBcUJqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUF4QkQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxLQUFhO1FBQzVCLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBZ0JPLGtCQUFrQixDQUFDLE1BQStCO1FBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksaUJBQWlCLENBQ3RDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDZCxNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxpQkFBaUIsRUFDeEIsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDO1FBRUYsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUF3QixDQUN2RCxNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsVUFBVSxFQUNqQixNQUFNLENBQUMsR0FBRyxDQUNiLENBQUM7UUFFRixZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx5QkFBeUIsQ0FDekQsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLE1BQU0sQ0FBQyxhQUFhLENBQ3ZCLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBOEI7UUFDckQsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNuQyxPQUFPLGNBQWMsQ0FBQztTQUN6QjtRQUVELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLFNBQVM7YUFDWjtZQUVELGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQ2pDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDVixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxhQUFhLEVBQ3BCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsV0FBVyxFQUNsQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ2hCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDcEIsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRU0saUJBQWlCLENBQUMsaUJBQXdDO1FBQzdELE1BQU0sSUFBSSxHQUFHO1lBQ1QsT0FBTyxFQUFFLGlCQUFpQjtTQUM3QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDakIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sK0JBQStCLEVBQ3JELElBQUksRUFDSjtZQUNJLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0RBQWtEO2FBQ3JFO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7YUFDMUI7WUFDRCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtTQUNsQixDQUNKLENBQUMsSUFBSSxDQUNGLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FDbEUsYUFBYSxFQUNiLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUN0RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLGNBQWM7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sMEJBQTBCLEVBQ2hEO1lBQ0ksTUFBTSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7YUFDMUI7U0FDSixDQUNKLENBQUMsSUFBSSxDQUNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNYLElBQ0ksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztnQkFDaEMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDakM7Z0JBQ0UsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sVUFBVSxDQUFDLGlCQUF3QztRQUN0RCxNQUFNLElBQUksR0FBRztZQUNULE9BQU8sRUFBRSxpQkFBaUI7U0FDN0IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2pCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLDBCQUEwQixFQUNoRCxJQUFJLEVBQ0o7WUFDSSxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLGtEQUFrRDthQUNyRTtZQUNELE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2FBQzFCO1lBQ0QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSixDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQ2xFLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FDbEQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtZQUNuQixPQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sNEJBQTRCLEVBQ2xEO1lBQ0ksTUFBTSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN4QjtTQUNKLENBQ0osQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSxhQUFhLENBQUMsRUFBVTtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyw2QkFBNkIsRUFDbkQ7WUFDSSxNQUFNLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDdkIsRUFBRSxFQUFFLEVBQUU7YUFDVDtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0osQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2hCLElBQ0ksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQztnQkFDcEMsQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztnQkFDL0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsRUFDN0M7Z0JBQ0UsTUFBTSxhQUFhLENBQUM7YUFDdkI7WUFFRCxPQUFPLElBQUksWUFBWSxDQUNuQixhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDM0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQ3pCLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMvQixDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLFFBQVEsQ0FBQyxpQkFBeUM7UUFDckQsTUFBTSxJQUFJLEdBQUc7WUFDVCxJQUFJLEVBQUUsaUJBQWlCO1NBQzFCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNqQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywrQkFBK0IsRUFDckQsSUFBSSxFQUNKO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrREFBa0Q7YUFDckU7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTthQUMxQjtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0osQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FDaEUsYUFBYSxFQUNiLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDVCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9EO1lBRUQsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FDSixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLGNBQWMsQ0FBQyxRQUFnQixFQUFFLGdCQUF3QjtRQUM1RCxNQUFNLElBQUksR0FBRztZQUNULFFBQVE7WUFDUixnQkFBZ0I7U0FDbkIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2pCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGtDQUFrQyxFQUN4RCxJQUFJLEVBQ0o7WUFDSSxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLGtEQUFrRDthQUNyRTtZQUNELE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2FBQzFCO1lBQ0QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSixDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUNoRSxhQUFhLEVBQ2IsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNULE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQ0osQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxLQUFhO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGtDQUFrQyxFQUN4RDtZQUNJLE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUN2QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FDSixDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDWCxJQUNJLENBQUMsUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQzFDO2dCQUNFLE1BQU0sUUFBUSxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLGFBQWEsQ0FDaEIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsZ0JBQXdCLEVBQ3hCLFVBQVUsR0FBRyxJQUFJO1FBRWpCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2pCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGtDQUFrQyxFQUN4RDtZQUNJLFNBQVM7WUFDVCxRQUFRO1lBQ1IsZ0JBQWdCO1lBQ2hCLFVBQVU7U0FDYixFQUNEO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrREFBa0Q7YUFDckU7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTthQUMxQjtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0osQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FDaEUsYUFBYSxFQUNiLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0Q7WUFFRCxPQUFPLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUNKLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxRQUFpQyxFQUFFLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOztpSEEvV1Esb0JBQW9CLGtCQWdCakIscUJBQXFCO3FIQWhCeEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBaUJRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdCc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlU2V0UmVzcG9uc2VcclxufSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvci1oYW5kbGVyL2Vzb2x2ZS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlLWhhbmRsZXIvZXNvbHZlLXJlc3BvbnNlLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUFkZHJlc3MgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUG9zdERhdGEgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzLXNldC1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbSc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVVc2VyQWNjb3VudCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MsXHJcbiAgICBFc29sdmVVc2VyQWNjb3VudENvbnRhY3RcclxufSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudERhdGEgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtY2hhbmdlLXBhc3N3b3JkLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1mb3Jnb3QtcGFzc3dvcmQtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtcmVzZXQtcGFzc3dvcmQtcmVzdWx0JztcclxuXHJcbmludGVyZmFjZSBFc29sdmVGb3Jnb3RQYXNzd29yZEdldFJlc3VsdCB7XHJcbiAgICByZXNldF9saW5rX3NlbnQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQWNjb3VudFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXNlcl9pZCA9IDA7XHJcblxyXG4gICAgcHVibGljIGdldCB1c2VyX2lkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJfaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB1c2VyX2lkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB2YWx1ZSA9ICgodmFsdWUgPiAwKSA/IHZhbHVlIDogMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl91c2VyX2lkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyX2lkID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2Vzc2lvbi5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlc3Npb24ua2V5ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyX2lkID0gc2Vzc2lvbi5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZDogRXNvbHZlVXNlckFjY291bnRSZWNvcmQpOiBFc29sdmVVc2VyQWNjb3VudCB7XHJcbiAgICAgICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY29yZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCtyZWNvcmQudXNlcmlkICE9PSB0aGlzLl91c2VyX2lkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGFjY291bnQgcmV0cmlldmVkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyX2FjY291bnQgPSBuZXcgRXNvbHZlVXNlckFjY291bnQoXHJcbiAgICAgICAgICAgICtyZWNvcmQudXNlcmlkLFxyXG4gICAgICAgICAgICByZWNvcmQuZW1haWwsXHJcbiAgICAgICAgICAgIHJlY29yZC5yZWdpc3RyYXRpb25fdHlwZSxcclxuICAgICAgICAgICAgcmVjb3JkLnRpdGxlLFxyXG4gICAgICAgICAgICByZWNvcmQuZmlyc3RuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuc3VybmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLmluaXRpYWxzLFxyXG4gICAgICAgICAgICByZWNvcmQuZ2VuZGVyLFxyXG4gICAgICAgICAgICByZWNvcmQuaWRudW1iZXJcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuY29udGFjdF9kZXRhaWxzID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdChcclxuICAgICAgICAgICAgcmVjb3JkLnRlbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmNlbGxudW1iZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5mYXhcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuYnVzaW5lc3NfZGV0YWlscyA9IG5ldyBFc29sdmVVc2VyQWNjb3VudEJ1c2luZXNzKFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzbmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnZhdG51bSxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2Rlc2NyaXB0LFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzaW5lc3NfdHlwZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB1c2VyX2FjY291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVXNlckFkZHJlc3MocmVjb3JkczogRXNvbHZlQWRkcmVzc1JlY29yZFtdKTogRXNvbHZlQWRkcmVzc1tdIHtcclxuICAgICAgICBjb25zdCB1c2VyX2FkZHJlc3NlczogRXNvbHZlQWRkcmVzc1tdID0gW107XHJcblxyXG4gICAgICAgIGlmICghcmVjb3JkcyB8fCAodGhpcy5fdXNlcl9pZCA9PT0gMCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgIT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1c2VyX2FkZHJlc3Nlcy5wdXNoKG5ldyBFc29sdmVBZGRyZXNzKFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5yZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuYWRkcmVzc190eXBlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvYm94LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBsYWNlX25hbWUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0X251bWJlcixcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdHJlZXQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3VidXJiLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNpdHksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucHJvdmluY2UsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY291bnRyeSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wb3N0YWxfY29kZSxcclxuICAgICAgICAgICAgICAgICtyZWNvcmQubGF0aXR1ZGUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmxvbmdpdHVkZVxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlVXNlckFjY291bnQodXNlcl9hY2NvdW50X2RhdGE6IEVzb2x2ZVVzZXJBY2NvdW50RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhY2NvdW50OiB1c2VyX2FjY291bnRfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LXVzZXItYWNjb3VudC5waHBgLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0KHJlc3BvbnNlKVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXVzZXItYWNjb3VudCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRVc2VyQWNjb3VudCgpOiBPYnNlcnZhYmxlPEVzb2x2ZVVzZXJBY2NvdW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVXNlckFjY291bnRSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hY2NvdW50LnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEFkZHJlc3MoYWRkcmVzc19wb3N0X2RhdGE6IEVzb2x2ZUFkZHJlc3NQb3N0RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1Jlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NfcG9zdF9kYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL3NldC1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlQWRkcmVzc1Jlc3VsdChyZXNwb25zZSlcclxuICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWRkcmVzc2VzKCk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1tdPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlcl9pZCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdMb2cgaW4gaXMgcmVxdWlyZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hZGRyZXNzZXMucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogdGhpcy51c2VyX2lkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUFkZHJlc3MoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8RXNvbHZlRGVsZXRlUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2RlbGV0ZS1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc3VsdChcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKCdkZWxldGUtYWRkcmVzcycsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlcih1c2VyX3JlZ2lzdHJhdGlvbjogRXNvbHZlUmVnaXN0cmF0aW9uRGF0YSk6IE9ic2VydmFibGU8RXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgdXNlcjogdXNlcl9yZWdpc3RyYXRpb25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL3NldC1yZWdpc3RyYXRpb24ucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKGh0dHBfcmVzcG9uc2UgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmF1dG9fbG9naW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHJlc3BvbnNlLmVzb2x2ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcmVnaXN0cmF0aW9uJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpcm1fcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWNoYW5nZS1wYXNzd29yZC5waHBgLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoaHR0cF9yZXNwb25zZSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1jaGFuZ2UtcGFzc3dvcmQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEZvcmdvdFBhc3N3b3JkUmVxdWVzdChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlRm9yZ290UGFzc3dvcmRHZXRSZXN1bHQ+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgISgncmVzZXRfbGlua19zZW50JyBpbiByZXNwb25zZS5yZWNvcmRzKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlY29yZHMucmVzZXRfbGlua19zZW50O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0UGFzc3dvcmQoXHJcbiAgICAgICAgcmVzZXRfa2V5OiBzdHJpbmcsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYXV0b19sb2dpbiA9IHRydWVcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVGb3Jnb3RQYXNzd29yZFJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWZvcmdvdC1wYXNzd29yZC5waHBgLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZXNldF9rZXksXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBhdXRvX2xvZ2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UubG9naW5fcmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHJlc3BvbnNlLmVzb2x2ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWZvcmdvdC1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBVXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBUy9HLE1BQU0sT0FBTyxvQkFBb0I7SUFlN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFB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LEVBQ2hCLE1BQU0sQ0FBQyxZQUFZLEVBQ25CLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLFVBQVUsRUFDakIsTUFBTSxDQUFDLGFBQWEsRUFDcEIsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLFFBQVEsRUFDZixNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFDaEIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNwQixDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFrQztRQUMxRCxNQUFNLFlBQVksR0FBd0IsRUFBRSxDQUFDO1FBRTdDLElBQUksT0FBTyxFQUFFO1lBQ1QsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRWxELFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbEM7U0FDSjtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0wsQ0FBQzs7aUhBcmFRLG9CQUFvQixrQkFnQmpCLHFCQUFxQjtxSEFoQnhCLG9CQUFvQixjQUZqQixNQUFNOzJGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWlCUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXN1bHQnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVNldFJlc3BvbnNlXHJcbn0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3ItaGFuZGxlci9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZS1oYW5kbGVyL2Vzb2x2ZS1yZXNwb25zZS1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tcG9zdC1yZXNwb25zZS1pdGVtJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzcyB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUG9zdERhdGEgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzLXNldC1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudERhdGEgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtY2hhbmdlLXBhc3N3b3JkLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1mb3Jnb3QtcGFzc3dvcmQtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtcmVzZXQtcGFzc3dvcmQtcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS10cmFuc2FjdGlvbi1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVUcmFuc2FjdGlvbiB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uJztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9lc29sdmUtdHJhbnNhY3Rpb24tb3B0aW9ucyc7XHJcbmltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uTGlzdCB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uLWxpc3QnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudCwgRXNvbHZlVXNlckFjY291bnRCdXNpbmVzcywgRXNvbHZlVXNlckFjY291bnRDb250YWN0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50JztcclxuXHJcbmludGVyZmFjZSBFc29sdmVGb3Jnb3RQYXNzd29yZEdldFJlc3VsdCB7XHJcbiAgICByZXNldF9saW5rX3NlbnQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQWNjb3VudFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXNlcl9pZCA9IDA7XHJcblxyXG4gICAgcHVibGljIGdldCB1c2VyX2lkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJfaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB1c2VyX2lkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB2YWx1ZSA9ICgodmFsdWUgPiAwKSA/IHZhbHVlIDogMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl91c2VyX2lkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyX2lkID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2Vzc2lvbi5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlc3Npb24ua2V5ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyX2lkID0gc2Vzc2lvbi5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVVc2VyQWNjb3VudCh1c2VyX2FjY291bnRfZGF0YTogRXNvbHZlVXNlckFjY291bnREYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVVc2VyQWNjb3VudFJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGFjY291bnQ6IHVzZXJfYWNjb3VudF9kYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtdXNlci1hY2NvdW50LnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlVXNlckFjY291bnRSZXN1bHQocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdXNlci1hY2NvdW50JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFVzZXJBY2NvdW50KCk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVVc2VyQWNjb3VudFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LWFjY291bnQucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0QWRkcmVzcyhhZGRyZXNzX3Bvc3RfZGF0YTogRXNvbHZlQWRkcmVzc1Bvc3REYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzc19wb3N0X2RhdGFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1Jlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWFkZHJlc3MucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVBZGRyZXNzUmVzdWx0KHJlc3BvbnNlKVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXJlZ2lzdHJhdGlvbicsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBZGRyZXNzZXMoKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzW10+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luR3VhcmQoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtYWRkcmVzc2VzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQWRkcmVzcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVsZXRlQWRkcmVzcyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxFc29sdmVEZWxldGVSZXNwb25zZT4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZGVsZXRlLWFkZHJlc3MucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGlkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKGh0dHBfcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gbnVsbCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzICE9PSAnc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBodHRwX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzdWx0KFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwRGVsZXRlRXJyb3IoJ2RlbGV0ZS1hZGRyZXNzJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyKHVzZXJfcmVnaXN0cmF0aW9uOiBFc29sdmVSZWdpc3RyYXRpb25EYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICB1c2VyOiB1c2VyX3JlZ2lzdHJhdGlvblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LXJlZ2lzdHJhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoaHR0cF9yZXNwb25zZSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuYXV0b19sb2dpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24ocmVzcG9uc2UuZXNvbHZlX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQocGFzc3dvcmQ6IHN0cmluZywgY29uZmlybV9wYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVDaGFuZ2VQYXNzd29yZFJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICBjb25maXJtX3Bhc3N3b3JkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtY2hhbmdlLXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWNoYW5nZS1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kRm9yZ290UGFzc3dvcmRSZXF1ZXN0KGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVGb3Jnb3RQYXNzd29yZEdldFJlc3VsdD4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1mb3Jnb3QtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAhKCdyZXNldF9saW5rX3NlbnQnIGluIHJlc3BvbnNlLnJlY29yZHMpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy5yZXNldF9saW5rX3NlbnQ7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRQYXNzd29yZChcclxuICAgICAgICByZXNldF9rZXk6IHN0cmluZyxcclxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGNvbmZpcm1fcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBhdXRvX2xvZ2luID0gdHJ1ZVxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHJlc2V0X2tleSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGF1dG9fbG9naW5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKGh0dHBfcmVzcG9uc2UgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5sb2dpbl9yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24ocmVzcG9uc2UuZXNvbHZlX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtZm9yZ290LXBhc3N3b3JkJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRyYW5zY2F0aW9ucyhvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvbk9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25MaXN0PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkd1YXJkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC10cmFuc2FjdGlvbnMucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5wcm9jZXNzVHJhbnNhY3Rpb25zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzID8/IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93cyA9IG9wdGlvbnMucm93cyA/PyB0b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gb3B0aW9ucy5wYWdlIHx8IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlVHJhbnNhY3Rpb25MaXN0KGl0ZW1zLCBwYWdlLCByb3dzLCB0b3RhbCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVXNlckFjY291bnQocmVjb3JkOiBFc29sdmVVc2VyQWNjb3VudFJlY29yZCk6IEVzb2x2ZVVzZXJBY2NvdW50IHtcclxuICAgICAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjb3JkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgIT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIgYWNjb3VudCByZXRyaWV2ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXJfYWNjb3VudCA9IG5ldyBFc29sdmVVc2VyQWNjb3VudChcclxuICAgICAgICAgICAgK3JlY29yZC51c2VyaWQsXHJcbiAgICAgICAgICAgIHJlY29yZC5lbWFpbCxcclxuICAgICAgICAgICAgcmVjb3JkLnJlZ2lzdHJhdGlvbl90eXBlLFxyXG4gICAgICAgICAgICByZWNvcmQudGl0bGUsXHJcbiAgICAgICAgICAgIHJlY29yZC5maXJzdG5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5zdXJuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuaW5pdGlhbHMsXHJcbiAgICAgICAgICAgIHJlY29yZC5nZW5kZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5pZG51bWJlclxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHVzZXJfYWNjb3VudC5jb250YWN0X2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRDb250YWN0KFxyXG4gICAgICAgICAgICByZWNvcmQudGVsbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuY2VsbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmZheFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHVzZXJfYWNjb3VudC5idXNpbmVzc19kZXRhaWxzID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MoXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQudmF0bnVtLFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzZGVzY3JpcHQsXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNpbmVzc190eXBlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWNjb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWRkcmVzcyhyZWNvcmRzOiBFc29sdmVBZGRyZXNzUmVjb3JkW10pOiBFc29sdmVBZGRyZXNzW10ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJfYWRkcmVzc2VzOiBFc29sdmVBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFyZWNvcmRzIHx8ICh0aGlzLl91c2VyX2lkID09PSAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXNlcl9hZGRyZXNzZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHVzZXJfYWRkcmVzc2VzLnB1c2gobmV3IEVzb2x2ZUFkZHJlc3MoXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnJlY2lwaWVudCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5hZGRyZXNzX3R5cGUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9ib3gsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucGxhY2VfbmFtZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdHJlZXRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdWJ1cmIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY2l0eSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvc3RhbF9jb2RlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sYXRpdHVkZSxcclxuICAgICAgICAgICAgICAgICtyZWNvcmQubG9uZ2l0dWRlXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1RyYW5zYWN0aW9ucyhyZWNvcmRzOiBFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdKTogRXNvbHZlVHJhbnNhY3Rpb25bXSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25zOiBFc29sdmVUcmFuc2FjdGlvbltdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IEVzb2x2ZVRyYW5zYWN0aW9uKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zLnB1c2godHJhbnNhY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9naW5HdWFyZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51c2VyX2lkIDw9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZW1pdEVycm9yKCdsb2dpbl9yZXF1aXJlZCcsICdMb2dpbiBpcyByZXF1aXJlZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { EsolveList } from '../shared/esolve-list';
2
+ export class EsolveTransactionList extends EsolveList {
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXRyYW5zYWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXRyYW5zYWN0aW9uLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR25ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUE2QjtDQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlTGlzdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtbGlzdCc7XHJcbmltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9lc29sdmUtdHJhbnNhY3Rpb24nO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVRyYW5zYWN0aW9uTGlzdCBleHRlbmRzIEVzb2x2ZUxpc3Q8RXNvbHZlVHJhbnNhY3Rpb24+IHsgfVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXRyYW5zYWN0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXRyYW5zYWN0aW9uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlVHJhbnNhY3Rpb25PcHRpb25zIHtcclxuICAgIHR5cGU/OiBFc29sdmVUcmFuc2FjdGlvblR5cGU7XHJcbiAgICBwYWdlPzogbnVtYmVyO1xyXG4gICAgcm93cz86IG51bWJlcjtcclxuICAgIGZyb21fZGF0ZT86IHN0cmluZztcclxuICAgIHRvX2RhdGU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXRyYW5zYWN0aW9uLXJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtdHJhbnNhY3Rpb24tcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVTdG9ja0xvY2F0aW9uUmVjb3JkIH0gZnJvbSAnLi4vbG9jYXRpb25zL2Vzb2x2ZS1zdG9jay1sb2NhdGlvbi1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzVHlwZSB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9lc29sdmUtdHJhbnNhY3Rpb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFc29sdmVUcmFuc2FjdGlvbkl0ZW1SZWNvcmQge1xyXG4gICAgY29kZTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgcXR5OiBudW1iZXI7XHJcbiAgICBkaXNjb3VudDogbnVtYmVyO1xyXG4gICAgdmF0X3JhdGU6IG51bWJlcjtcclxuICAgIHByaWNlOiBudW1iZXI7XHJcbiAgICBwcmljZV9leGNsdXNpdmU6IG51bWJlcjtcclxuICAgIHByaWNlX2V4Y2x1c2l2ZV9hZnRlcl9kaXNjb3VudDogbnVtYmVyO1xyXG4gICAgcHJpY2VfaW5jbHVzaXZlOiBudW1iZXI7XHJcbiAgICBwcmljZV9pbmNsdXNpdmVfYWZ0ZXJfZGlzY291bnQ6IG51bWJlcjtcclxuICAgIGxpbmVfdG90YWxfZXhjbHVzaXZlOiBudW1iZXI7XHJcbiAgICBsaW5lX3RvdGFsX2V4Y2x1c2l2ZV9hZnRlcl9kaXNjb3VudDogbnVtYmVyO1xyXG4gICAgbGluZV90b3RhbF9pbmNsdXNpdmU6IG51bWJlcjtcclxuICAgIGxpbmVfdG90YWxfaW5jbHVzaXZlX2FmdGVyX2Rpc2NvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlVHJhbnNhY3Rpb25DbGllbnRSZWNvcmQge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIGNvbXBhbnlfbmFtZTogc3RyaW5nO1xyXG4gICAgYWNjb3VudDogc3RyaW5nO1xyXG4gICAgYnJhbmNoX2NvZGU6IHN0cmluZztcclxuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xyXG4gICAgc3VybmFtZTogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIGNvbnRhY3RfbnVtYmVyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlVHJhbnNhY3Rpb25Vc2VyUmVjb3JkIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgZmlyc3RuYW1lOiBzdHJpbmc7XHJcbiAgICBzdXJuYW1lOiBzdHJpbmc7XHJcbiAgICB0ZWxudW1iZXI6IHN0cmluZztcclxuICAgIGNlbGxudW1iZXI6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFc29sdmVUcmFuc2FjdGlvblBheW1lbnRNZXRob2RSZWNvcmQge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHBheW1ldGhvZF9uYW1lOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgaW50ZWdyYXRpb25fdHlwZTogc3RyaW5nO1xyXG4gICAgc2VydmljZV9wcm92aWRlcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZVRyYW5zYWN0aW9uTG9jYXRpb25SZWNvcmQgZXh0ZW5kcyBFc29sdmVTdG9ja0xvY2F0aW9uUmVjb3JkIHsgfVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFc29sdmVUcmFuc2FjdGlvblNoaXBwaW5nTWV0aG9kUmVjb3JkIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBjYXJyaWVyX25hbWU6IHN0cmluZztcclxuICAgIGRlbGl2ZXJ5X2NhdGVnb3J5OiBzdHJpbmc7XHJcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHByaWNpbmc6IHN0cmluZztcclxuICAgIGNsaWVudF90b19jb2xsZWN0OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICB0cmFuc2FjdGlvbl90eXBlOiBFc29sdmVUcmFuc2FjdGlvblR5cGU7XHJcbiAgICBsb3lhbHR5bnVtYmVyOiBzdHJpbmc7XHJcbiAgICBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgICByZXBzX2lkOiBudW1iZXI7XHJcbiAgICBjbGllbnQ6IEVzb2x2ZVRyYW5zYWN0aW9uQ2xpZW50UmVjb3JkIHwgbnVsbDtcclxuICAgIHVzZXI6IEVzb2x2ZVRyYW5zYWN0aW9uVXNlclJlY29yZCB8IG51bGw7XHJcblxyXG4gICAgLy8gTG9jYXRpb25cclxuICAgIGVycF9pZGVudGlmaWVyOiBzdHJpbmc7XHJcbiAgICBsb2NhdGlvbl9kZXRhaWxzOiBFc29sdmVUcmFuc2FjdGlvbkxvY2F0aW9uUmVjb3JkIHwgbnVsbDtcclxuXHJcbiAgICAvLyBFeHRlcm5hbCBOdW1iZXJzXHJcbiAgICBleHRlcm5hbF9vcmRlcl9udW1iZXI6IHN0cmluZztcclxuICAgIGV4dGVybmFsX2ludm9pY2VfbnVtYmVyOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gRGF0ZXNcclxuICAgIHR4ZGF0ZTogc3RyaW5nO1xyXG4gICAgdHhkYXRlX3RpbWVzdGFtcDogbnVtYmVyO1xyXG4gICAgZXhwZWN0ZWRfZGF0ZTogc3RyaW5nO1xyXG4gICAgZXhwZWN0ZWRfZGF0ZV90aW1lc3RhbXA6IG51bWJlcjtcclxuXHJcbiAgICAvLyBUb3RhbHNcclxuICAgIGludm9pY2VfYW1vdW50OiBudW1iZXI7XHJcbiAgICB2YXQ6IG51bWJlcjtcclxuICAgIGRpc2NvdW50OiBudW1iZXI7XHJcbiAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgc2hpcHBpbmdfdG90YWw6IG51bWJlcjtcclxuICAgIGluc3VyYW5jZV90b3RhbDogbnVtYmVyO1xyXG5cclxuICAgIC8vIFBheW1lbnRcclxuICAgIHBheW1lbnQ6IG51bWJlcjtcclxuICAgIHBheW1lbnRfbWV0aG9kOiBzdHJpbmc7XHJcbiAgICBwYXltZW50X21ldGhvZF9kZXRhaWxzOiBFc29sdmVUcmFuc2FjdGlvblBheW1lbnRNZXRob2RSZWNvcmQgfCBudWxsO1xyXG4gICAgZ2F0ZXdheV90cmFuc2FjdGlvbl9pZDogc3RyaW5nO1xyXG4gICAgcGF5bWVudF9yZWZlcmVuY2U6IHN0cmluZztcclxuICAgIHBheW1lbnRfZGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgICAvLyBTaGlwcGluZ1xyXG4gICAgc2hpcHBpbmdfbWV0aG9kOiBzdHJpbmc7XHJcbiAgICBzaGlwcGluZ19tZXRob2RfZGV0YWlsczogRXNvbHZlVHJhbnNhY3Rpb25TaGlwcGluZ01ldGhvZFJlY29yZCB8IG51bGw7XHJcblxyXG4gICAgLy8gQWRkcmVzcyBEZXRhaWxzXHJcbiAgICByZWNpcGllbnQ6IHN0cmluZztcclxuICAgIGFkZHJlc3NfdHlwZTogRXNvbHZlQWRkcmVzc1R5cGU7XHJcbiAgICBhZGRyZXNzX2Rlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBwb2JveDogc3RyaW5nO1xyXG4gICAgc3RyZWV0X251bWJlcjogc3RyaW5nO1xyXG4gICAgc3RyZWV0OiBzdHJpbmc7XHJcbiAgICBzdWJ1cmI6IHN0cmluZztcclxuICAgIGNpdHk6IHN0cmluZztcclxuICAgIHByb3ZpbmNlOiBzdHJpbmc7XHJcbiAgICBjb3VudHJ5OiBzdHJpbmc7XHJcbiAgICBwb3N0YWxfY29kZTogc3RyaW5nO1xyXG5cclxuICAgIHRyYW5zYWN0aW9uX2l0ZW1zOiBFc29sdmVUcmFuc2FjdGlvbkl0ZW1SZWNvcmRbXTtcclxufVxyXG4iXX0=
@@ -0,0 +1,145 @@
1
+ import { EsolveStockLocation } from '../locations/esolve-stock-location';
2
+ export class EsolveTransaction {
3
+ constructor(record) {
4
+ // Transaction Items
5
+ this.items = [];
6
+ this.id = +record.id;
7
+ this.type = record.transaction_type;
8
+ this.status = record.status;
9
+ this.loyalty_number = record.loyaltynumber;
10
+ this.external_order_number = record.external_order_number;
11
+ this.external_invoice_number = record.external_invoice_number;
12
+ this.date = new Date(+record.txdate_timestamp * 1000);
13
+ this.expected_date = new Date(+record.expected_date_timestamp * 1000);
14
+ this.invoice_amount = +record.invoice_amount;
15
+ this.vat = +record.vat;
16
+ this.discount = +record.discount;
17
+ this.total = +record.total;
18
+ this.shipping_total = +record.shipping_total;
19
+ this.insurance_total = +record.insurance_total;
20
+ this.payment = +record.payment;
21
+ this.payment_reference = record.payment_reference;
22
+ this.payment_description = record.payment_description;
23
+ this.gateway_transaction_id = record.gateway_transaction_id;
24
+ this.address = new EsolveTransactionAddress(record.recipient, record.address_type, record.address_description, record.street_number, record.street, record.suburb, record.city, record.province, record.country, record.postal_code, record.pobox);
25
+ if (record.user) {
26
+ this.user = new EsolveTransactionUser(+record.user.id, record.user.email, record.user.firstname, record.user.surname, record.user.telnumber, record.user.cellnumber);
27
+ }
28
+ if (record.client) {
29
+ this.client = new EsolveTransactionClient(+record.client.id, record.client.account, record.client.company_name, record.client.branch_code, record.client.email, record.client.firstname, record.client.surname, record.client.contact_number);
30
+ }
31
+ if (record.location_details) {
32
+ this.location = new EsolveTransactionLocation(record.location_details);
33
+ }
34
+ if (record.payment_method_details) {
35
+ this.payment_method = new EsolveTransactionPaymentMethod(record.payment_method_details.id, record.payment_method_details.paymethod_name, record.payment_method_details.description, record.payment_method_details.integration_type, record.payment_method_details.service_provider);
36
+ }
37
+ if (record.shipping_method_details) {
38
+ this.shipping_method = new EsolveTransactionShippingMethod(+record.shipping_method_details.id, record.shipping_method_details.carrier_name, record.shipping_method_details.delivery_category, record.shipping_method_details.location, record.shipping_method_details.description, record.shipping_method_details.pricing, !!record.shipping_method_details.client_to_collect);
39
+ }
40
+ this.parseTransactionItems(record.transaction_items);
41
+ }
42
+ parseTransactionItems(record_items) {
43
+ for (const record_item of record_items) {
44
+ const price = new EsolveTransactionItemPrice(+record_item.price_exclusive, +record_item.price_inclusive, +record_item.price_exclusive_after_discount, +record_item.price_inclusive_after_discount);
45
+ const line_total = new EsolveTransactionItemPrice(+record_item.line_total_exclusive, +record_item.line_total_inclusive, +record_item.line_total_exclusive_after_discount, +record_item.line_total_inclusive_after_discount);
46
+ const item = new EsolveTransactionItem(record_item.code, record_item.name, +record_item.qty, +record_item.discount, +record_item.vat_rate, price, line_total);
47
+ this.items.push(item);
48
+ }
49
+ }
50
+ }
51
+ export class EsolveTransactionClient {
52
+ constructor(id, account, company_name, branch_code, email, first_name, last_name, contact_number) {
53
+ this.id = id;
54
+ this.account = account;
55
+ this.company_name = company_name;
56
+ this.branch_code = branch_code;
57
+ this.email = email;
58
+ this.first_name = first_name;
59
+ this.last_name = last_name;
60
+ this.contact_number = contact_number;
61
+ }
62
+ }
63
+ export class EsolveTransactionUser {
64
+ constructor(id, email, first_name, last_name, tel_number, cell_number) {
65
+ this.id = id;
66
+ this.email = email;
67
+ this.first_name = first_name;
68
+ this.last_name = last_name;
69
+ this.tel_number = tel_number;
70
+ this.cell_number = cell_number;
71
+ }
72
+ }
73
+ export class EsolveTransactionLocation extends EsolveStockLocation {
74
+ }
75
+ export class EsolveTransactionPaymentMethod {
76
+ constructor(id, name, description, integration_type, service_provider) {
77
+ this.id = id;
78
+ this.name = name;
79
+ this.description = description;
80
+ this.integration_type = integration_type;
81
+ this.service_provider = service_provider;
82
+ }
83
+ }
84
+ export class EsolveTransactionShippingMethod {
85
+ constructor(id, name, delivery_category, location, description, pricing, client_to_collect) {
86
+ this.id = id;
87
+ this.name = name;
88
+ this.delivery_category = delivery_category;
89
+ this.location = location;
90
+ this.description = description;
91
+ this.pricing = pricing;
92
+ this.client_to_collect = client_to_collect;
93
+ }
94
+ }
95
+ export class EsolveTransactionAddress {
96
+ constructor(recipient, address_type, address_description, street_number, street, suburb, city, province, country, postal_code, pobox) {
97
+ this.recipient = recipient;
98
+ this.address_type = address_type;
99
+ this.address_description = address_description;
100
+ this.street_number = street_number;
101
+ this.street = street;
102
+ this.suburb = suburb;
103
+ this.city = city;
104
+ this.province = province;
105
+ this.country = country;
106
+ this.postal_code = postal_code;
107
+ this.pobox = pobox;
108
+ }
109
+ }
110
+ export class EsolveTransactionItem {
111
+ constructor(code, name, qty, discount, vat_rate, price, line_total) {
112
+ this.code = code;
113
+ this.name = name;
114
+ this.qty = qty;
115
+ this.discount = discount;
116
+ this.vat_rate = vat_rate;
117
+ this.price = price;
118
+ this.line_total = line_total;
119
+ }
120
+ }
121
+ export class EsolveTransactionItemPrice {
122
+ constructor(
123
+ /**
124
+ * Price without tax
125
+ */
126
+ price,
127
+ /**
128
+ * Price with tax
129
+ */
130
+ price_with_tax,
131
+ /**
132
+ * Price without tax and with discounts applied if appilcable
133
+ */
134
+ price_discounted,
135
+ /**
136
+ * Price with tax and with discounts applied if appilcable
137
+ */
138
+ price_with_tax_discounted) {
139
+ this.price = price;
140
+ this.price_with_tax = price_with_tax;
141
+ this.price_discounted = price_discounted;
142
+ this.price_with_tax_discounted = price_with_tax_discounted;
143
+ }
144
+ }
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hY2NvdW50L2Vzb2x2ZS10cmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU16RSxNQUFNLE9BQU8saUJBQWlCO0lBMEMxQixZQUFZLE1BQStCO1FBSDNDLG9CQUFvQjtRQUNiLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBR3ZDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMxRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBRTlELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFD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aEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUE0QjtJQUM3QyxDQUFDO0NBQ1I7QUFFRCxNQUFNLE9BQU8sMEJBQTBCO0lBQ25DO0lBQ0k7O09BRUc7SUFDSSxLQUFhO0lBQ3BCOztPQUVHO0lBQ0ksY0FBc0I7SUFDN0I7O09BRUc7SUFDSSxnQkFBd0I7SUFDL0I7O09BRUc7SUFDSSx5QkFBaUM7UUFaakMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUliLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBSXRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUl4Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQVE7SUFDeEMsQ0FBQztDQUNSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlU3RvY2tMb2NhdGlvbiB9IGZyb20gJy4uL2xvY2F0aW9ucy9lc29sdmUtc3RvY2stbG9jYXRpb24nO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzVHlwZSB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25JdGVtUmVjb3JkLCBFc29sdmVUcmFuc2FjdGlvblJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uLXJlY29yZCc7XHJcblxyXG5leHBvcnQgdHlwZSBFc29sdmVUcmFuc2FjdGlvblR5cGUgPSAnb3JkZXInIHwgJ3F1b3RlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVUcmFuc2FjdGlvbiB7XHJcbiAgICBwdWJsaWMgaWQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB0eXBlOiBFc29sdmVUcmFuc2FjdGlvblR5cGU7XHJcbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbG95YWx0eV9udW1iZXI6IHN0cmluZztcclxuICAgIHB1YmxpYyBleHRlcm5hbF9vcmRlcl9udW1iZXI6IHN0cmluZztcclxuICAgIHB1YmxpYyBleHRlcm5hbF9pbnZvaWNlX251bWJlcjogc3RyaW5nO1xyXG5cclxuICAgIC8vIERhdGVzXHJcbiAgICBwdWJsaWMgZGF0ZTogRGF0ZTtcclxuICAgIHB1YmxpYyBleHBlY3RlZF9kYXRlOiBEYXRlO1xyXG5cclxuICAgIHB1YmxpYyBjbGllbnQ/OiBFc29sdmVUcmFuc2FjdGlvbkNsaWVudDtcclxuICAgIHB1YmxpYyB1c2VyPzogRXNvbHZlVHJhbnNhY3Rpb25Vc2VyO1xyXG5cclxuICAgIC8vIExvY2F0aW9uXHJcbiAgICBwdWJsaWMgbG9jYXRpb24/OiBFc29sdmVUcmFuc2FjdGlvbkxvY2F0aW9uO1xyXG5cclxuICAgIC8vIFRvdGFsc1xyXG4gICAgcHVibGljIGludm9pY2VfYW1vdW50OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgdmF0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgZGlzY291bnQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB0b3RhbDogbnVtYmVyO1xyXG4gICAgcHVibGljIHNoaXBwaW5nX3RvdGFsOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaW5zdXJhbmNlX3RvdGFsOiBudW1iZXI7XHJcblxyXG4gICAgLy8gUGF5bWVudFxyXG4gICAgcHVibGljIHBheW1lbnRfbWV0aG9kPzogRXNvbHZlVHJhbnNhY3Rpb25QYXltZW50TWV0aG9kO1xyXG4gICAgcHVibGljIHBheW1lbnQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyBnYXRld2F5X3RyYW5zYWN0aW9uX2lkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcGF5bWVudF9yZWZlcmVuY2U6IHN0cmluZztcclxuICAgIHB1YmxpYyBwYXltZW50X2Rlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gU2hpcHBpbmdcclxuICAgIHB1YmxpYyBzaGlwcGluZ19tZXRob2Q/OiBFc29sdmVUcmFuc2FjdGlvblNoaXBwaW5nTWV0aG9kO1xyXG5cclxuICAgIC8vIEFkZHJlc3MgRGV0YWlsc1xyXG4gICAgcHVibGljIGFkZHJlc3M6IEVzb2x2ZVRyYW5zYWN0aW9uQWRkcmVzcztcclxuXHJcbiAgICAvLyBUcmFuc2FjdGlvbiBJdGVtc1xyXG4gICAgcHVibGljIGl0ZW1zOiBFc29sdmVUcmFuc2FjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlY29yZDogRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmlkID0gK3JlY29yZC5pZDtcclxuICAgICAgICB0aGlzLnR5cGUgPSByZWNvcmQudHJhbnNhY3Rpb25fdHlwZTtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IHJlY29yZC5zdGF0dXM7XHJcbiAgICAgICAgdGhpcy5sb3lhbHR5X251bWJlciA9IHJlY29yZC5sb3lhbHR5bnVtYmVyO1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxfb3JkZXJfbnVtYmVyID0gcmVjb3JkLmV4dGVybmFsX29yZGVyX251bWJlcjtcclxuICAgICAgICB0aGlzLmV4dGVybmFsX2ludm9pY2VfbnVtYmVyID0gcmVjb3JkLmV4dGVybmFsX2ludm9pY2VfbnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgrcmVjb3JkLnR4ZGF0ZV90aW1lc3RhbXAgKiAxMDAwKTtcclxuICAgICAgICB0aGlzLmV4cGVjdGVkX2RhdGUgPSBuZXcgRGF0ZSgrcmVjb3JkLmV4cGVjdGVkX2RhdGVfdGltZXN0YW1wICogMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZV9hbW91bnQgPSArcmVjb3JkLmludm9pY2VfYW1vdW50O1xyXG4gICAgICAgIHRoaXMudmF0ID0gK3JlY29yZC52YXQ7XHJcbiAgICAgICAgdGhpcy5kaXNjb3VudCA9ICtyZWNvcmQuZGlzY291bnQ7XHJcbiAgICAgICAgdGhpcy50b3RhbCA9ICtyZWNvcmQudG90YWw7XHJcbiAgICAgICAgdGhpcy5zaGlwcGluZ190b3RhbCA9ICtyZWNvcmQuc2hpcHBpbmdfdG90YWw7XHJcbiAgICAgICAgdGhpcy5pbnN1cmFuY2VfdG90YWwgPSArcmVjb3JkLmluc3VyYW5jZV90b3RhbDtcclxuXHJcbiAgICAgICAgdGhpcy5wYXltZW50ID0gK3JlY29yZC5wYXltZW50O1xyXG4gICAgICAgIHRoaXMucGF5bWVudF9yZWZlcmVuY2UgPSByZWNvcmQucGF5bWVudF9yZWZlcmVuY2U7XHJcbiAgICAgICAgdGhpcy5wYXltZW50X2Rlc2NyaXB0aW9uID0gcmVjb3JkLnBheW1lbnRfZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5nYXRld2F5X3RyYW5zYWN0aW9uX2lkID0gcmVjb3JkLmdhdGV3YXlfdHJhbnNhY3Rpb25faWQ7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IG5ldyBFc29sdmVUcmFuc2FjdGlvbkFkZHJlc3MoXHJcbiAgICAgICAgICAgIHJlY29yZC5yZWNpcGllbnQsXHJcbiAgICAgICAgICAgIHJlY29yZC5hZGRyZXNzX3R5cGUsXHJcbiAgICAgICAgICAgIHJlY29yZC5hZGRyZXNzX2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICByZWNvcmQuc3RyZWV0X251bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLnN0cmVldCxcclxuICAgICAgICAgICAgcmVjb3JkLnN1YnVyYixcclxuICAgICAgICAgICAgcmVjb3JkLmNpdHksXHJcbiAgICAgICAgICAgIHJlY29yZC5wcm92aW5jZSxcclxuICAgICAgICAgICAgcmVjb3JkLmNvdW50cnksXHJcbiAgICAgICAgICAgIHJlY29yZC5wb3N0YWxfY29kZSxcclxuICAgICAgICAgICAgcmVjb3JkLnBvYm94XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZC51c2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlciA9IG5ldyBFc29sdmVUcmFuc2FjdGlvblVzZXIoXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLnVzZXIuaWQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQudXNlci5lbWFpbCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC51c2VyLmZpcnN0bmFtZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC51c2VyLnN1cm5hbWUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQudXNlci50ZWxudW1iZXIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQudXNlci5jZWxsbnVtYmVyXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVjb3JkLmNsaWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudCA9IG5ldyBFc29sdmVUcmFuc2FjdGlvbkNsaWVudChcclxuICAgICAgICAgICAgICAgICtyZWNvcmQuY2xpZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNsaWVudC5hY2NvdW50LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNsaWVudC5jb21wYW55X25hbWUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY2xpZW50LmJyYW5jaF9jb2RlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNsaWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jbGllbnQuZmlyc3RuYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNsaWVudC5zdXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNsaWVudC5jb250YWN0X251bWJlclxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlY29yZC5sb2NhdGlvbl9kZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBuZXcgRXNvbHZlVHJhbnNhY3Rpb25Mb2NhdGlvbihyZWNvcmQubG9jYXRpb25fZGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVjb3JkLnBheW1lbnRfbWV0aG9kX2RldGFpbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXltZW50X21ldGhvZCA9IG5ldyBFc29sdmVUcmFuc2FjdGlvblBheW1lbnRNZXRob2QoXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucGF5bWVudF9tZXRob2RfZGV0YWlscy5pZCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wYXltZW50X21ldGhvZF9kZXRhaWxzLnBheW1ldGhvZF9uYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBheW1lbnRfbWV0aG9kX2RldGFpbHMuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucGF5bWVudF9tZXRob2RfZGV0YWlscy5pbnRlZ3JhdGlvbl90eXBlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBheW1lbnRfbWV0aG9kX2RldGFpbHMuc2VydmljZV9wcm92aWRlclxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlY29yZC5zaGlwcGluZ19tZXRob2RfZGV0YWlscykge1xyXG4gICAgICAgICAgICB0aGlzLnNoaXBwaW5nX21ldGhvZCA9IG5ldyBFc29sdmVUcmFuc2FjdGlvblNoaXBwaW5nTWV0aG9kKFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5zaGlwcGluZ19tZXRob2RfZGV0YWlscy5pZCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zaGlwcGluZ19tZXRob2RfZGV0YWlscy5jYXJyaWVyX25hbWUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc2hpcHBpbmdfbWV0aG9kX2RldGFpbHMuZGVsaXZlcnlfY2F0ZWdvcnksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc2hpcHBpbmdfbWV0aG9kX2RldGFpbHMubG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc2hpcHBpbmdfbWV0aG9kX2RldGFpbHMuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc2hpcHBpbmdfbWV0aG9kX2RldGFpbHMucHJpY2luZyxcclxuICAgICAgICAgICAgICAgICEhcmVjb3JkLnNoaXBwaW5nX21ldGhvZF9kZXRhaWxzLmNsaWVudF90b19jb2xsZWN0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBhcnNlVHJhbnNhY3Rpb25JdGVtcyhyZWNvcmQudHJhbnNhY3Rpb25faXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbkl0ZW1zKHJlY29yZF9pdGVtczogRXNvbHZlVHJhbnNhY3Rpb25JdGVtUmVjb3JkW10pOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZF9pdGVtIG9mIHJlY29yZF9pdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCBwcmljZSA9IG5ldyBFc29sdmVUcmFuc2FjdGlvbkl0ZW1QcmljZShcclxuICAgICAgICAgICAgICAgICtyZWNvcmRfaXRlbS5wcmljZV9leGNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ucHJpY2VfaW5jbHVzaXZlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZF9pdGVtLnByaWNlX2V4Y2x1c2l2ZV9hZnRlcl9kaXNjb3VudCxcclxuICAgICAgICAgICAgICAgICtyZWNvcmRfaXRlbS5wcmljZV9pbmNsdXNpdmVfYWZ0ZXJfZGlzY291bnRcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmVfdG90YWwgPSBuZXcgRXNvbHZlVHJhbnNhY3Rpb25JdGVtUHJpY2UoXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ubGluZV90b3RhbF9leGNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ubGluZV90b3RhbF9pbmNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ubGluZV90b3RhbF9leGNsdXNpdmVfYWZ0ZXJfZGlzY291bnQsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ubGluZV90b3RhbF9pbmNsdXNpdmVfYWZ0ZXJfZGlzY291bnRcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgRXNvbHZlVHJhbnNhY3Rpb25JdGVtKFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkX2l0ZW0uY29kZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZF9pdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkX2l0ZW0ucXR5LFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZF9pdGVtLmRpc2NvdW50LFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZF9pdGVtLnZhdF9yYXRlLFxyXG4gICAgICAgICAgICAgICAgcHJpY2UsXHJcbiAgICAgICAgICAgICAgICBsaW5lX3RvdGFsXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXNvbHZlVHJhbnNhY3Rpb25DbGllbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIGFjY291bnQ6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgY29tcGFueV9uYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGJyYW5jaF9jb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGZpcnN0X25hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbGFzdF9uYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGNvbnRhY3RfbnVtYmVyOiBzdHJpbmdcclxuICAgICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVUcmFuc2FjdGlvblVzZXIge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGZpcnN0X25hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbGFzdF9uYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHRlbF9udW1iZXI6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgY2VsbF9udW1iZXI6IHN0cmluZ1xyXG4gICAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVRyYW5zYWN0aW9uTG9jYXRpb24gZXh0ZW5kcyBFc29sdmVTdG9ja0xvY2F0aW9uIHsgfVxyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVRyYW5zYWN0aW9uUGF5bWVudE1ldGhvZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaWQ6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBpbnRlZ3JhdGlvbl90eXBlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHNlcnZpY2VfcHJvdmlkZXI6IHN0cmluZ1xyXG4gICAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVRyYW5zYWN0aW9uU2hpcHBpbmdNZXRob2Qge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIG5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZGVsaXZlcnlfY2F0ZWdvcnk6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbG9jYXRpb246IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgcHJpY2luZzogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBjbGllbnRfdG9fY29sbGVjdDogYm9vbGVhblxyXG4gICAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVRyYW5zYWN0aW9uQWRkcmVzcyB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVjaXBpZW50OiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGFkZHJlc3NfdHlwZTogRXNvbHZlQWRkcmVzc1R5cGUsXHJcbiAgICAgICAgcHVibGljIGFkZHJlc3NfZGVzY3JpcHRpb246IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgc3RyZWV0X251bWJlcjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBzdHJlZXQ6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgc3VidXJiOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGNpdHk6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgcHJvdmluY2U6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgY291bnRyeTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBwb3N0YWxfY29kZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBwb2JveDogc3RyaW5nXHJcbiAgICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXNvbHZlVHJhbnNhY3Rpb25JdGVtIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBjb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIG5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgcXR5OiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIGRpc2NvdW50OiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIHZhdF9yYXRlOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIHByaWNlOiBFc29sdmVUcmFuc2FjdGlvbkl0ZW1QcmljZSxcclxuICAgICAgICBwdWJsaWMgbGluZV90b3RhbDogRXNvbHZlVHJhbnNhY3Rpb25JdGVtUHJpY2VcclxuICAgICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVUcmFuc2FjdGlvbkl0ZW1QcmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBQcmljZSB3aXRob3V0IHRheFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBwcmljZTogbnVtYmVyLFxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFByaWNlIHdpdGggdGF4XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHByaWNlX3dpdGhfdGF4OiBudW1iZXIsXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUHJpY2Ugd2l0aG91dCB0YXggYW5kIHdpdGggZGlzY291bnRzIGFwcGxpZWQgaWYgYXBwaWxjYWJsZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBwcmljZV9kaXNjb3VudGVkOiBudW1iZXIsXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUHJpY2Ugd2l0aCB0YXggYW5kIHdpdGggZGlzY291bnRzIGFwcGxpZWQgaWYgYXBwaWxjYWJsZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBwcmljZV93aXRoX3RheF9kaXNjb3VudGVkOiBudW1iZXJcclxuICAgICkgeyB9XHJcbn1cclxuIl19
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
40
40
  type: Inject,
41
41
  args: [ESOLVE_CONNECT_CONFIG]
42
42
  }] }, { type: i1.EsolveSessionService }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGgtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFJSCxVQUFVLEVBRWIsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUl0RixNQUFNLE9BQU8sNEJBQTRCO0lBQ3JDLFlBQzJDLE1BQTJCLEVBQzFELE9BQTZCO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFDckMsQ0FBQztJQUVMLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sV0FBVyxDQUFDLEVBQUU7WUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEYsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzdCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFFNUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNmLElBQUksa0JBQWtCLEtBQUssc0JBQXNCLEVBQUU7b0JBQy9DLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzNDO2FBQ0o7WUFFRCxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUMzQixHQUFHLEVBQUUsWUFBWTtnQkFDakIsTUFBTTthQUNULENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzt5SEFuQ1EsNEJBQTRCLGtCQUV6QixxQkFBcUI7NkhBRnhCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVOzswQkFHRixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cEludGVyY2VwdG9yLFxyXG4gICAgSHR0cFJlcXVlc3QsXHJcbiAgICBIdHRwSGFuZGxlcixcclxuICAgIEh0dHBQYXJhbXMsXHJcbiAgICBIdHRwRXZlbnRcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIHNlc3Npb246IEVzb2x2ZVNlc3Npb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgICAgIGlmIChyZXEudXJsLnN0YXJ0c1dpdGgoYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9gKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlX2lkZW50aWZpZXIgPSByZXEudXJsLnJlcGxhY2UoYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9gLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBvbGRfcGFyYW1zX2tleXMgPSByZXEucGFyYW1zLmtleXMoKTtcclxuICAgICAgICAgICAgY29uc3QgbW9kaWZpZWRfdXJsID0gcmVxLnVybDtcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uLmN1cnJlbnRTZXNzaW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlc3Npb24udmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlX2lkZW50aWZpZXIgIT09ICdnZXQtYWNjZXNzLXRva2VuLnBocCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdrZXknLCBzZXNzaW9uLmtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG9sZF9wYXJhbXNfa2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgcmVxLnBhcmFtcy5nZXQoa2V5KSB8fCAnJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbW9kaWZpZWRfcmVxID0gcmVxLmNsb25lKHtcclxuICAgICAgICAgICAgICAgIHVybDogbW9kaWZpZWRfdXJsLFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKG1vZGlmaWVkX3JlcSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgIH1cclxufVxyXG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGgtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFJSCxVQUFVLEVBRWIsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUl0RixNQUFNLE9BQU8sNEJBQTRCO0lBQ3JDLFlBQzJDLE1BQTJCLEVBQzFELE9BQTZCO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFDckMsQ0FBQztJQUVFLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ3JELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sV0FBVyxDQUFDLEVBQUU7WUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEYsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzdCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFFNUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNmLElBQUksa0JBQWtCLEtBQUssc0JBQXNCLEVBQUU7b0JBQy9DLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzNDO2FBQ0o7WUFFRCxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUMzQixHQUFHLEVBQUUsWUFBWTtnQkFDakIsTUFBTTthQUNULENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzt5SEFuQ1EsNEJBQTRCLGtCQUV6QixxQkFBcUI7NkhBRnhCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVOzswQkFHRixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cEludGVyY2VwdG9yLFxyXG4gICAgSHR0cFJlcXVlc3QsXHJcbiAgICBIdHRwSGFuZGxlcixcclxuICAgIEh0dHBQYXJhbXMsXHJcbiAgICBIdHRwRXZlbnRcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIHNlc3Npb246IEVzb2x2ZVNlc3Npb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHB1YmxpYyBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvYCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VydmljZV9pZGVudGlmaWVyID0gcmVxLnVybC5yZXBsYWNlKGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvYCwgJycpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgb2xkX3BhcmFtc19rZXlzID0gcmVxLnBhcmFtcy5rZXlzKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkX3VybCA9IHJlcS51cmw7XHJcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbi5jdXJyZW50U2Vzc2lvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLnZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VydmljZV9pZGVudGlmaWVyICE9PSAnZ2V0LWFjY2Vzcy10b2tlbi5waHAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgna2V5Jywgc2Vzc2lvbi5rZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvbGRfcGFyYW1zX2tleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChrZXksIHJlcS5wYXJhbXMuZ2V0KGtleSkgfHwgJycpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkX3JlcSA9IHJlcS5jbG9uZSh7XHJcbiAgICAgICAgICAgICAgICB1cmw6IG1vZGlmaWVkX3VybCxcclxuICAgICAgICAgICAgICAgIHBhcmFtc1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShtb2RpZmllZF9yZXEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XHJcbiAgICB9XHJcbn1cclxuIl19