@veloceapps/sdk 8.0.0-185 → 8.0.0-187

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. package/cms/vendor-map.d.ts +3 -4
  2. package/core/modules/configuration/services/configuration-state.service.d.ts +2 -4
  3. package/core/modules/configuration/services/configuration.service.d.ts +1 -1
  4. package/core/services/flow-state.service.d.ts +1 -0
  5. package/core/services/quote-draft.service.d.ts +8 -31
  6. package/core/types/flow-state.types.d.ts +5 -0
  7. package/core/types/integration.types.d.ts +0 -1
  8. package/core/utils/line-item.utils.d.ts +1 -2
  9. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +16 -7
  10. package/esm2020/core/modules/configuration/services/configuration.service.mjs +10 -8
  11. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +3 -3
  12. package/esm2020/core/services/flow-state.service.mjs +31 -25
  13. package/esm2020/core/services/quote-draft.service.mjs +27 -100
  14. package/esm2020/core/types/flow-state.types.mjs +1 -1
  15. package/esm2020/core/types/integration.types.mjs +1 -1
  16. package/esm2020/core/utils/line-item.utils.mjs +4 -18
  17. package/esm2020/src/pages/product/product.component.mjs +15 -12
  18. package/esm2020/src/services/flow.service.mjs +38 -18
  19. package/fesm2015/veloceapps-sdk-core.mjs +455 -522
  20. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  21. package/fesm2015/veloceapps-sdk.mjs +47 -28
  22. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  23. package/fesm2020/veloceapps-sdk-core.mjs +418 -487
  24. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  25. package/fesm2020/veloceapps-sdk.mjs +50 -27
  26. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/src/pages/product/product.component.d.ts +1 -1
  29. package/src/services/flow.service.d.ts +1 -0
@@ -1,16 +1,13 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { PriceApiService, QuoteApiService } from '@veloceapps/api';
2
+ import { AccountApiService, QuoteApiService } from '@veloceapps/api';
3
3
  import { ConfigurationContextMode } from '@veloceapps/core';
4
4
  import { isEqual } from 'lodash';
5
- import { BehaviorSubject, combineLatest, noop, zip } from 'rxjs';
5
+ import { BehaviorSubject, combineLatest, noop, of, zip } from 'rxjs';
6
6
  import { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';
7
- import { generateModifiedAssetsMap } from '../utils';
8
7
  import { ContextService } from './context.service';
9
- import { IntegrationState } from './integration.state';
10
8
  import * as i0 from "@angular/core";
11
9
  import * as i1 from "./context.service";
12
10
  import * as i2 from "@veloceapps/api";
13
- import * as i3 from "./integration.state";
14
11
  export class QuoteDraftService {
15
12
  get isInitialized$() {
16
13
  return this.isInitializedSubj$.asObservable();
@@ -36,30 +33,28 @@ export class QuoteDraftService {
36
33
  return this.quoteSubj$.pipe(map(() => this.hasProducts));
37
34
  }
38
35
  get hasProducts() {
39
- const quoteDraft = this.quoteSubj$.value;
40
- return this.filterByActivePriceList(quoteDraft?.currentState || []).some(li => !li.assetId && !li.openOrderLineItemId);
36
+ return Boolean(this.quoteSubj$.value?.currentState.length);
41
37
  }
42
38
  get hasAssets$() {
43
- return this.quoteSubj$.pipe(map(() => this.hasAssets));
39
+ return this.assetsSubj$.pipe(map(() => this.hasAssets));
44
40
  }
45
41
  get hasAssets() {
46
- const quoteDraft = this.quoteSubj$.value;
47
- return this.filterByActivePriceList(quoteDraft?.currentState || []).some(li => li.assetId || li.openOrderLineItemId);
42
+ return Boolean(this.assetsSubj$.value?.currentState.length);
48
43
  }
49
- constructor(context, quoteApiService, priceApiService, integrationState) {
44
+ get assetsState() {
45
+ return this.assetsSubj$.value;
46
+ }
47
+ constructor(context, accountApiService, quoteApiService) {
50
48
  this.context = context;
49
+ this.accountApiService = accountApiService;
51
50
  this.quoteApiService = quoteApiService;
52
- this.priceApiService = priceApiService;
53
- this.integrationState = integrationState;
54
51
  this.quoteSubj$ = new BehaviorSubject(null);
52
+ this.assetsSubj$ = new BehaviorSubject(null);
55
53
  this.resetSubj$ = new BehaviorSubject(true);
56
54
  this.isInitializedSubj$ = new BehaviorSubject(false);
57
55
  this.initialCurrentState = [];
58
56
  this._hasUnsavedChanges = false;
59
- this.allPriceLists = [];
60
- this.assetPriceLists = [];
61
57
  this.reset$ = this.resetSubj$.asObservable();
62
- this.activePriceList$ = this.context.resolve$().pipe(map(ctx => this.allPriceLists.find(priceList => priceList.id === ctx.properties.PriceListId)), map(priceList => priceList ?? null));
63
58
  this.isInitializedSubj$
64
59
  .pipe(filter(isInitialized => isInitialized), switchMap(() => this.quoteSubj$.asObservable()), skip(1), tap(quote => this.markAsUpdated(quote)))
65
60
  .subscribe();
@@ -67,19 +62,24 @@ export class QuoteDraftService {
67
62
  reset() {
68
63
  this.resetSubj$.next(true);
69
64
  this.quoteSubj$.next(null);
65
+ this.assetsSubj$.next(null);
70
66
  this.isInitialized = false;
71
67
  this.hasUnsavedChanges = false;
72
68
  }
73
- init(quoteId, params) {
74
- return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(tap(([quote, allPriceLists]) => {
75
- this.allPriceLists = allPriceLists;
69
+ init(headerId, params) {
70
+ const { mode } = this.context.resolve();
71
+ const assets$ = mode === ConfigurationContextMode.ACCOUNT
72
+ ? this.accountApiService.getAssetsState(headerId, params)
73
+ : of(undefined);
74
+ return zip(assets$, this.quoteApiService.getQuoteState(headerId, params)).pipe(tap(([assets, quote]) => {
75
+ if (assets) {
76
+ this.assetsSubj$.next(assets);
77
+ }
76
78
  this.quoteSubj$.next(quote);
77
79
  this.context.update(quote.context);
78
- this.populateActivePriceLists$();
79
80
  }), map(() => noop()), take(1));
80
81
  }
81
82
  finalizeInit() {
82
- this.initializeModifiedAssetsMap();
83
83
  this.isInitialized = true;
84
84
  this.hasUnsavedChanges = false;
85
85
  }
@@ -122,6 +122,9 @@ export class QuoteDraftService {
122
122
  approvalItems: priceSummary.approvalItems,
123
123
  });
124
124
  }
125
+ setAssetsState(assetsState) {
126
+ this.assetsSubj$.next(assetsState);
127
+ }
125
128
  get quoteDraft$() {
126
129
  return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(map(() => this.quoteDraft), filter((quote) => Boolean(quote)), shareReplay());
127
130
  }
@@ -135,54 +138,12 @@ export class QuoteDraftService {
135
138
  context: this.context.resolve(),
136
139
  };
137
140
  }
138
- get quoteDraftForActivePriceList() {
139
- const quoteDraft = this.quoteDraft;
140
- if (!quoteDraft) {
141
- return null;
142
- }
143
- return {
144
- ...quoteDraft,
145
- initialState: this.filterByActivePriceList(quoteDraft.initialState),
146
- currentState: this.filterByActivePriceList(quoteDraft.currentState),
147
- };
148
- }
149
141
  get currentState$() {
150
142
  return this.quoteDraft$.pipe(map(quote => quote.currentState));
151
143
  }
152
144
  get currentState() {
153
145
  return this.quoteDraft?.currentState ?? [];
154
146
  }
155
- /**
156
- * Stream of activeCurrentState
157
- */
158
- get activeCurrentState$() {
159
- return this.quoteDraft$.pipe(map(() => this.activeCurrentState));
160
- }
161
- /**
162
- * activeCurrentState is currentState passed through additional filters
163
- */
164
- get activeCurrentState() {
165
- let currentState = this.quoteDraft?.currentState ?? [];
166
- currentState = this.filterByActivePriceList(currentState);
167
- return currentState;
168
- }
169
- /**
170
- * Stream of activeInitialState
171
- */
172
- get activeInitialState$() {
173
- return this.quoteDraft$.pipe(map(() => this.activeInitialState));
174
- }
175
- /**
176
- * activeInitialState is initialState passed through additional filters
177
- */
178
- get activeInitialState() {
179
- const ctx = this.context.resolve();
180
- let initialState = this.quoteDraft?.initialState ?? [];
181
- if (ctx.mode === ConfigurationContextMode.ACCOUNT) {
182
- initialState = this.filterByActivePriceList(initialState);
183
- }
184
- return initialState;
185
- }
186
147
  get isStandalone() {
187
148
  return this.context.resolve().properties.standalone === 'true';
188
149
  }
@@ -205,35 +166,6 @@ export class QuoteDraftService {
205
166
  }
206
167
  return false;
207
168
  }
208
- updateActivePriceList(priceListId) {
209
- this.context.update({ properties: { PriceListId: priceListId } });
210
- }
211
- populateActivePriceLists$() {
212
- const ctx = this.context.resolve();
213
- const quoteDraft = this.quoteDraft;
214
- if (!quoteDraft) {
215
- return;
216
- }
217
- // In ACCOUNT mode populate price lists from related assets
218
- if (ctx.mode === ConfigurationContextMode.ACCOUNT) {
219
- // Populate list of price lists
220
- this.assetPriceLists = quoteDraft.currentState
221
- .map(({ priceListId }) => priceListId)
222
- .reduce((trunk, priceListId) => {
223
- if (!priceListId || trunk.some(item => item.id === priceListId)) {
224
- return trunk;
225
- }
226
- return [
227
- ...trunk,
228
- { id: priceListId, name: this.allPriceLists.find(item => item.id === priceListId)?.name ?? '' },
229
- ];
230
- }, []);
231
- }
232
- }
233
- filterByActivePriceList(lineItems) {
234
- const ctx = this.context.resolve();
235
- return lineItems.filter(li => !li.priceListId || li.priceListId === ctx.properties.PriceListId);
236
- }
237
169
  markAsUpdated(quote) {
238
170
  if (quote?.context.properties.mode === ConfigurationContextMode.ACCOUNT) {
239
171
  this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');
@@ -242,15 +174,10 @@ export class QuoteDraftService {
242
174
  this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote?.currentState);
243
175
  }
244
176
  }
245
- initializeModifiedAssetsMap() {
246
- this.integrationState.patchState({
247
- modifiedAssets: generateModifiedAssetsMap(this.currentState),
248
- });
249
- }
250
177
  }
251
- QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, deps: [{ token: i1.ContextService }, { token: i2.QuoteApiService }, { token: i2.PriceApiService }, { token: i3.IntegrationState }], target: i0.ɵɵFactoryTarget.Injectable });
178
+ QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, deps: [{ token: i1.ContextService }, { token: i2.AccountApiService }, { token: i2.QuoteApiService }], target: i0.ɵɵFactoryTarget.Injectable });
252
179
  QuoteDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService });
253
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, decorators: [{
254
181
  type: Injectable
255
- }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.QuoteApiService }, { type: i2.PriceApiService }, { type: i3.IntegrationState }]; } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFpRCxNQUFNLGtCQUFrQixDQUFDO0FBQzNHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFHdkQsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBVyxhQUFhLENBQUMsS0FBYztRQUNyQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxFQUFFO1lBQ2hDLElBQUks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QUFDLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUF3QjtRQUM1QyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUU7WUFDdkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDaEc7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1lBQy9CLGNBQWMsRUFBRSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNMLENBQUM7OzhHQTFUVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLCBMaW5lSXRlbSwgUHJpY2VMaXN0LCBQcmljZVN1bW1hcnksIFF1b3RlRHJhZnQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBub29wLCBPYnNlcnZhYmxlLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc2tpcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZW5lcmF0ZU1vZGlmaWVkQXNzZXRzTWFwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdW90ZURyYWZ0U2VydmljZSB7XG4gIHByaXZhdGUgcXVvdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVvdGVEcmFmdCB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlc2V0U3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGluaXRpYWxDdXJyZW50U3RhdGU6IExpbmVJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLmdldFZhbHVlKCk7XG4gIH1cbiAgcHVibGljIHNldCBpc0luaXRpYWxpemVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzO1xuICB9XG4gIHB1YmxpYyBzZXQgaGFzVW5zYXZlZENoYW5nZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcyA9IHZhbHVlO1xuXG4gICAgaWYgKCF0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgdGhpcy5pbml0aWFsQ3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoYXNQcm9kdWN0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVTdWJqJC5waXBlKG1hcCgoKSA9PiB0aGlzLmhhc1Byb2R1Y3RzKSk7XG4gIH1cbiAgcHVibGljIGdldCBoYXNQcm9kdWN0cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZpbHRlckJ5QWN0aXZlUHJpY2VMaXN0KHF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSB8fCBbXSkuc29tZShcbiAgICAgIGxpID0+ICFsaS5hc3NldElkICYmICFsaS5vcGVuT3JkZXJMaW5lSXRlbUlkLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVTdWJqJC5waXBlKG1hcCgoKSA9PiB0aGlzLmhhc0Fzc2V0cykpO1xuICB9XG4gIHB1YmxpYyBnZXQgaGFzQXNzZXRzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QocXVvdGVEcmFmdD8uY3VycmVudFN0YXRlIHx8IFtdKS5zb21lKFxuICAgICAgbGkgPT4gbGkuYXNzZXRJZCB8fCBsaS5vcGVuT3JkZXJMaW5lSXRlbUlkLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWxsUHJpY2VMaXN0czogUHJpY2VMaXN0W10gPSBbXTtcbiAgcHVibGljIGFzc2V0UHJpY2VMaXN0czogUHJpY2VMaXN0W10gPSBbXTtcbiAgcHVibGljIHJlc2V0JCA9IHRoaXMucmVzZXRTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGFjdGl2ZVByaWNlTGlzdCQ6IE9ic2VydmFibGU8UHJpY2VMaXN0IHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlQXBpU2VydmljZTogUXVvdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICApIHtcbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKFxuICAgICAgbWFwKGN0eCA9PiB0aGlzLmFsbFByaWNlTGlzdHMuZmluZChwcmljZUxpc3QgPT4gcHJpY2VMaXN0LmlkID09PSBjdHgucHJvcGVydGllcy5QcmljZUxpc3RJZCkpLFxuICAgICAgbWFwKHByaWNlTGlzdCA9PiBwcmljZUxpc3QgPz8gbnVsbCksXG4gICAgKTtcblxuICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGlzSW5pdGlhbGl6ZWQgPT4gaXNJbml0aWFsaXplZCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnF1b3RlU3ViaiQuYXNPYnNlcnZhYmxlKCkpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAocXVvdGUgPT4gdGhpcy5tYXJrQXNVcGRhdGVkKHF1b3RlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFN1YmokLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGluaXQocXVvdGVJZDogc3RyaW5nLCBwYXJhbXM6IERpY3Rpb25hcnk8c3RyaW5nPik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB6aXAodGhpcy5xdW90ZUFwaVNlcnZpY2UuZ2V0UXVvdGVEcmFmdChxdW90ZUlkLCBwYXJhbXMpLCB0aGlzLnByaWNlQXBpU2VydmljZS5nZXRQcmljZUxpc3RzKCkpLnBpcGUoXG4gICAgICB0YXAoKFtxdW90ZSwgYWxsUHJpY2VMaXN0c10pID0+IHtcbiAgICAgICAgdGhpcy5hbGxQcmljZUxpc3RzID0gYWxsUHJpY2VMaXN0cztcbiAgICAgICAgdGhpcy5xdW90ZVN1YmokLm5leHQocXVvdGUpO1xuXG4gICAgICAgIHRoaXMuY29udGV4dC51cGRhdGUocXVvdGUuY29udGV4dCk7XG5cbiAgICAgICAgdGhpcy5wb3B1bGF0ZUFjdGl2ZVByaWNlTGlzdHMkKCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiBub29wKCkpLFxuICAgICAgdGFrZSgxKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbmFsaXplSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVNb2RpZmllZEFzc2V0c01hcCgpO1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRMaW5lSXRlbVN0YXRlKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiBsaW5lSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVvdGVEcmFmdCh1cGRhdGU6IFBhcnRpYWw8UXVvdGVEcmFmdD4pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZS5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KHVwZGF0ZS5jb250ZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgLi4udXBkYXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUJ5UHJpY2VTdW1tYXJ5KHByaWNlU3VtbWFyeTogUHJpY2VTdW1tYXJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRDdXJyZW50U3RhdGUgPSB0aGlzLmN1cnJlbnRTdGF0ZS5tYXAobGluZUl0ZW0gPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHByaWNlU3VtbWFyeS5saW5lSXRlbXMuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW0uaWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQgPz8gbGluZUl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiB1cGRhdGVkQ3VycmVudFN0YXRlLFxuICAgICAgdG90YWxQcmljZXM6IHByaWNlU3VtbWFyeS50b3RhbFByaWNlcyxcbiAgICAgIGFwcHJvdmFsSXRlbXM6IHByaWNlU3VtbWFyeS5hcHByb3ZhbEl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBxdW90ZURyYWZ0JCgpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5xdW90ZVN1YmokLCB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKV0pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0KSxcbiAgICAgIGZpbHRlcigocXVvdGUpOiBxdW90ZSBpcyBRdW90ZURyYWZ0ID0+IEJvb2xlYW4ocXVvdGUpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVvdGVEcmFmdCgpOiBRdW90ZURyYWZ0IHwgbnVsbCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucXVvdGUsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3QoKTogUXVvdGVEcmFmdCB8IG51bGwge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgaW5pdGlhbFN0YXRlOiB0aGlzLmZpbHRlckJ5QWN0aXZlUHJpY2VMaXN0KHF1b3RlRHJhZnQuaW5pdGlhbFN0YXRlKSxcbiAgICAgIGN1cnJlbnRTdGF0ZTogdGhpcy5maWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChxdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFN0YXRlJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZSA9PiBxdW90ZS5jdXJyZW50U3RhdGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gb2YgYWN0aXZlQ3VycmVudFN0YXRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFjdGl2ZUN1cnJlbnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAoKCkgPT4gdGhpcy5hY3RpdmVDdXJyZW50U3RhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhY3RpdmVDdXJyZW50U3RhdGUgaXMgY3VycmVudFN0YXRlIHBhc3NlZCB0aHJvdWdoIGFkZGl0aW9uYWwgZmlsdGVyc1xuICAgKi9cbiAgcHVibGljIGdldCBhY3RpdmVDdXJyZW50U3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdD8uY3VycmVudFN0YXRlID8/IFtdO1xuXG4gICAgY3VycmVudFN0YXRlID0gdGhpcy5maWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChjdXJyZW50U3RhdGUpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gb2YgYWN0aXZlSW5pdGlhbFN0YXRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFjdGl2ZUluaXRpYWxTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAoKCkgPT4gdGhpcy5hY3RpdmVJbml0aWFsU3RhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhY3RpdmVJbml0aWFsU3RhdGUgaXMgaW5pdGlhbFN0YXRlIHBhc3NlZCB0aHJvdWdoIGFkZGl0aW9uYWwgZmlsdGVyc1xuICAgKi9cbiAgcHVibGljIGdldCBhY3RpdmVJbml0aWFsU3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcbiAgICBsZXQgaW5pdGlhbFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0Py5pbml0aWFsU3RhdGUgPz8gW107XG5cbiAgICBpZiAoY3R4Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICBpbml0aWFsU3RhdGUgPSB0aGlzLmZpbHRlckJ5QWN0aXZlUHJpY2VMaXN0KGluaXRpYWxTdGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFuZGFsb25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLnByb3BlcnRpZXMuc3RhbmRhbG9uZSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0YW5kYWxvbmUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKG1hcCgoKSA9PiB0aGlzLmlzU3RhbmRhbG9uZSkpO1xuICB9XG5cbiAgcHVibGljIGdldEluaXRpYWxDdXJyZW50U3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbEN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VkaXRNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUkKCkucGlwZShtYXAoKCkgPT4gdGhpcy5pc0VkaXRNb2RlKCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuXG4gICAgaWYgKGNvbnRleHQubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQucHJvcGVydGllcy5TdGF0dXMgPT09ICdEcmFmdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0LnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgUHJpY2VMaXN0SWQ6IHByaWNlTGlzdElkIH0gfSk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlQWN0aXZlUHJpY2VMaXN0cyQoKTogdm9pZCB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gQUNDT1VOVCBtb2RlIHBvcHVsYXRlIHByaWNlIGxpc3RzIGZyb20gcmVsYXRlZCBhc3NldHNcbiAgICBpZiAoY3R4Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICAvLyBQb3B1bGF0ZSBsaXN0IG9mIHByaWNlIGxpc3RzXG4gICAgICB0aGlzLmFzc2V0UHJpY2VMaXN0cyA9IHF1b3RlRHJhZnQuY3VycmVudFN0YXRlXG4gICAgICAgIC5tYXAoKHsgcHJpY2VMaXN0SWQgfSkgPT4gcHJpY2VMaXN0SWQpXG4gICAgICAgIC5yZWR1Y2U8UHJpY2VMaXN0W10+KCh0cnVuaywgcHJpY2VMaXN0SWQpID0+IHtcbiAgICAgICAgICBpZiAoIXByaWNlTGlzdElkIHx8IHRydW5rLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBwcmljZUxpc3RJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVuaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICB7IGlkOiBwcmljZUxpc3RJZCwgbmFtZTogdGhpcy5hbGxQcmljZUxpc3RzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBwcmljZUxpc3RJZCk/Lm5hbWUgPz8gJycgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbVtdIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuXG4gICAgcmV0dXJuIGxpbmVJdGVtcy5maWx0ZXIobGkgPT4gIWxpLnByaWNlTGlzdElkIHx8IGxpLnByaWNlTGlzdElkID09PSBjdHgucHJvcGVydGllcy5QcmljZUxpc3RJZCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc1VwZGF0ZWQocXVvdGU6IFF1b3RlRHJhZnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHF1b3RlPy5jb250ZXh0LnByb3BlcnRpZXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSAhIXF1b3RlICYmICFxdW90ZS5jdXJyZW50U3RhdGUuZXZlcnkobGkgPT4gbGkuYWN0aW9uQ29kZSA9PT0gJ0VYSVNUJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSAhaXNFcXVhbCh0aGlzLmluaXRpYWxDdXJyZW50U3RhdGUsIHF1b3RlPy5jdXJyZW50U3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1vZGlmaWVkQXNzZXRzTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5wYXRjaFN0YXRlKHtcbiAgICAgIG1vZGlmaWVkQXNzZXRzOiBnZW5lcmF0ZU1vZGlmaWVkQXNzZXRzTWFwKHRoaXMuY3VycmVudFN0YXRlKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
182
+ }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.AccountApiService }, { type: i2.QuoteApiService }]; } });
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLHdCQUF3QixFQUFzQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3BILE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUduRCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFXLGFBQWEsQ0FBQyxLQUFjO1FBQ3JDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxJQUFXLGlCQUFpQjtR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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjb3VudEFwaVNlcnZpY2UsIFF1b3RlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBBY2NvdW50QXNzZXRzU3RhdGUsIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSwgTGluZUl0ZW0sIFByaWNlU3VtbWFyeSwgUXVvdGVEcmFmdCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG5vb3AsIE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc2tpcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1b3RlRHJhZnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBxdW90ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdW90ZURyYWZ0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgYXNzZXRzU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjY291bnRBc3NldHNTdGF0ZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlc2V0U3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGluaXRpYWxDdXJyZW50U3RhdGU6IExpbmVJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLmdldFZhbHVlKCk7XG4gIH1cbiAgcHVibGljIHNldCBpc0luaXRpYWxpemVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzO1xuICB9XG4gIHB1YmxpYyBzZXQgaGFzVW5zYXZlZENoYW5nZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcyA9IHZhbHVlO1xuXG4gICAgaWYgKCF0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgdGhpcy5pbml0aWFsQ3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoYXNQcm9kdWN0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVTdWJqJC5waXBlKG1hcCgoKSA9PiB0aGlzLmhhc1Byb2R1Y3RzKSk7XG4gIH1cbiAgcHVibGljIGdldCBoYXNQcm9kdWN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnF1b3RlU3ViaiQudmFsdWU/LmN1cnJlbnRTdGF0ZS5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBc3NldHMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1N1YmokLnBpcGUobWFwKCgpID0+IHRoaXMuaGFzQXNzZXRzKSk7XG4gIH1cbiAgcHVibGljIGdldCBoYXNBc3NldHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5hc3NldHNTdWJqJC52YWx1ZT8uY3VycmVudFN0YXRlLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFzc2V0c1N0YXRlKCk6IEFjY291bnRBc3NldHNTdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1N1YmokLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlc2V0JCA9IHRoaXMucmVzZXRTdWJqJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHQ6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWNjb3VudEFwaVNlcnZpY2U6IEFjY291bnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGlzSW5pdGlhbGl6ZWQgPT4gaXNJbml0aWFsaXplZCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnF1b3RlU3ViaiQuYXNPYnNlcnZhYmxlKCkpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAocXVvdGUgPT4gdGhpcy5tYXJrQXNVcGRhdGVkKHF1b3RlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFN1YmokLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5hc3NldHNTdWJqJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KGhlYWRlcklkOiBzdHJpbmcsIHBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBtb2RlIH0gPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuICAgIGNvbnN0IGFzc2V0cyQgPVxuICAgICAgbW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlRcbiAgICAgICAgPyB0aGlzLmFjY291bnRBcGlTZXJ2aWNlLmdldEFzc2V0c1N0YXRlKGhlYWRlcklkLCBwYXJhbXMpXG4gICAgICAgIDogb2YodW5kZWZpbmVkKTtcblxuICAgIHJldHVybiB6aXAoYXNzZXRzJCwgdGhpcy5xdW90ZUFwaVNlcnZpY2UuZ2V0UXVvdGVTdGF0ZShoZWFkZXJJZCwgcGFyYW1zKSkucGlwZShcbiAgICAgIHRhcCgoW2Fzc2V0cywgcXVvdGVdKSA9PiB7XG4gICAgICAgIGlmIChhc3NldHMpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQoYXNzZXRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHF1b3RlKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVwZGF0ZShxdW90ZS5jb250ZXh0KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IG5vb3AoKSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluYWxpemVJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRMaW5lSXRlbVN0YXRlKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiBsaW5lSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVvdGVEcmFmdCh1cGRhdGU6IFBhcnRpYWw8UXVvdGVEcmFmdD4pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZS5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KHVwZGF0ZS5jb250ZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgLi4udXBkYXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUJ5UHJpY2VTdW1tYXJ5KHByaWNlU3VtbWFyeTogUHJpY2VTdW1tYXJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRDdXJyZW50U3RhdGUgPSB0aGlzLmN1cnJlbnRTdGF0ZS5tYXAobGluZUl0ZW0gPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHByaWNlU3VtbWFyeS5saW5lSXRlbXMuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW0uaWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQgPz8gbGluZUl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiB1cGRhdGVkQ3VycmVudFN0YXRlLFxuICAgICAgdG90YWxQcmljZXM6IHByaWNlU3VtbWFyeS50b3RhbFByaWNlcyxcbiAgICAgIGFwcHJvdmFsSXRlbXM6IHByaWNlU3VtbWFyeS5hcHByb3ZhbEl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEFzc2V0c1N0YXRlKGFzc2V0c1N0YXRlOiBBY2NvdW50QXNzZXRzU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQoYXNzZXRzU3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdW90ZURyYWZ0JCgpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5xdW90ZVN1YmokLCB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKV0pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0KSxcbiAgICAgIGZpbHRlcigocXVvdGUpOiBxdW90ZSBpcyBRdW90ZURyYWZ0ID0+IEJvb2xlYW4ocXVvdGUpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVvdGVEcmFmdCgpOiBRdW90ZURyYWZ0IHwgbnVsbCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucXVvdGUsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGUgPT4gcXVvdGUuY3VycmVudFN0YXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGF0ZSgpOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhbmRhbG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUoKS5wcm9wZXJ0aWVzLnN0YW5kYWxvbmUgPT09ICd0cnVlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFuZGFsb25lJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUkKCkucGlwZShtYXAoKCkgPT4gdGhpcy5pc1N0YW5kYWxvbmUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFsQ3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxDdXJyZW50U3RhdGU7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLnBpcGUobWFwKCgpID0+IHRoaXMuaXNFZGl0TW9kZSgpKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcblxuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnByb3BlcnRpZXMuU3RhdHVzID09PSAnRHJhZnQnO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzVXBkYXRlZChxdW90ZTogUXVvdGVEcmFmdCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAocXVvdGU/LmNvbnRleHQucHJvcGVydGllcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9ICEhcXVvdGUgJiYgIXF1b3RlLmN1cnJlbnRTdGF0ZS5ldmVyeShsaSA9PiBsaS5hY3Rpb25Db2RlID09PSAnRVhJU1QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9ICFpc0VxdWFsKHRoaXMuaW5pdGlhbEN1cnJlbnRTdGF0ZSwgcXVvdGU/LmN1cnJlbnRTdGF0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdHlwZXMvZmxvdy1zdGF0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZW4gJ3RydWUnLCBkb24ndCBleGVjdXRlIGFjdGlvbiB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlXG4gICAqL1xuICBjb2xkPzogYm9vbGVhbjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdHlwZXMvZmxvdy1zdGF0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjb3VudEFzc2V0c1N0YXRlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGVuICd0cnVlJywgZG9uJ3QgZXhlY3V0ZSBhY3Rpb24gdG8gcmV0cmlldmUgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgY29sZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0b3JlIHtcbiAgYXNzZXRzPzogQWNjb3VudEFzc2V0c1N0YXRlO1xuXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3R5cGVzL2ludGVncmF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvbkFjdGlvbjxUID0gYW55PiB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZD86IFQ7XG59XG5cbmV4cG9ydCB0eXBlIEludGVncmF0aW9uU3RhdGVNb2RlbCA9IHtcbiAgZ3VpZGVkU2VsbGluZz86IERpY3Rpb25hcnk8YW55PjtcbiAgbW9kaWZpZWRBc3NldHM6IERpY3Rpb25hcnk8Ym9vbGVhbj47XG4gIGZsb3dQYXRoOiBzdHJpbmc7XG4gIGRpYWxvZ1Jlc3VsdD86IGJvb2xlYW47XG59ICYgRGljdGlvbmFyeTxhbnk+O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3R5cGVzL2ludGVncmF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvbkFjdGlvbjxUID0gYW55PiB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZD86IFQ7XG59XG5cbmV4cG9ydCB0eXBlIEludGVncmF0aW9uU3RhdGVNb2RlbCA9IHtcbiAgZ3VpZGVkU2VsbGluZz86IERpY3Rpb25hcnk8YW55PjtcbiAgZmxvd1BhdGg6IHN0cmluZztcbiAgZGlhbG9nUmVzdWx0PzogYm9vbGVhbjtcbn0gJiBEaWN0aW9uYXJ5PGFueT47XG4iXX0=
@@ -147,20 +147,6 @@ export const getRecommendedPrices = (portDomain, type) => {
147
147
  }, [0, 0]) ?? [0, 0];
148
148
  return { net, list };
149
149
  };
150
- export const generateModifiedAssetsMap = (lineItems) => {
151
- return lineItems.reduce((acc, li) => {
152
- const isModified = isLineItemModified(li);
153
- if (!isModified) {
154
- return acc;
155
- }
156
- const target = getOriginParent(lineItems, li);
157
- const id = target?.assetId ?? target?.openOrderLineItemId;
158
- if (id) {
159
- acc[id] = true;
160
- }
161
- return acc;
162
- }, {});
163
- };
164
150
  export const getOriginParent = (lineItems, currentLineItem) => {
165
151
  let target = currentLineItem;
166
152
  while (target && target.rampInstanceId) {
@@ -168,11 +154,11 @@ export const getOriginParent = (lineItems, currentLineItem) => {
168
154
  }
169
155
  return target;
170
156
  };
171
- export const isLineItemModified = (lineItem) => {
172
- if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {
157
+ export const assetPredicateFn = (lineItem, assetId) => {
158
+ if (!assetId) {
173
159
  return false;
174
160
  }
175
- return lineItem.actionCode !== 'EXIST';
161
+ return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;
176
162
  };
177
163
  export const multiplyLineItems = (lineItem, qty, split) => {
178
164
  if (split) {
@@ -198,4 +184,4 @@ export const isTechnicalAttribute = (name) => {
198
184
  export const filterOutTechnicalAttributes = (attributes) => {
199
185
  return attributes.filter(({ name }) => !isTechnicalAttribute(name));
200
186
  };
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRCxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQWMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVUsRUFBRSxTQUFxQixFQUF3QixFQUFFO0lBQ3RGLE9BQU8sMEJBQTBCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQ3hDLFNBQXFCLEVBQ3JCLFVBQXFDLEVBQ2YsRUFBRTtJQUN4QixJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7SUFFN0IsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQzFCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEU7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQVksRUFBRTtJQUNuRyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFB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QUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQTZCLFVBQWUsRUFBTyxFQUFFO0lBQy9GLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIExpbmVJdGVtLCBOZXdBdHRyaWJ1dGUsIFBvcnREb21haW4sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGVudHJpZXMsIGZsYXR0ZW4sIG1hcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAoXG4gIGxpbmVJdGVtOiBMaW5lSXRlbSxcbiAgcmVwbGFjZVRvOiBMaW5lSXRlbSxcbiAgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IExpbmVJdGVtID0+IHtcbiAgaWYgKGxpbmVJdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICBpZiAoIXNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKSB7XG4gICAgICByZXR1cm4geyAuLi5yZWNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKGxpbmVJdGVtLCByZXBsYWNlVG8pIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGluZUl0ZW0sXG4gICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHJlcGxhY2VMaW5lSXRlbShsaSwgcmVwbGFjZVRvLCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbikpLFxuICB9O1xufTtcblxuY29uc3QgY29sbGVjdENhcmRpbmFsaXR5Q29tcHV0YXRpb25zID0gKHBvcnREb21haW5zOiBEaWN0aW9uYXJ5PFBvcnREb21haW4+KTogTWFwPHN0cmluZywgYm9vbGVhbj4gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICBlbnRyaWVzKHBvcnREb21haW5zKS5mb3JFYWNoKChba2V5LCBwb3J0RG9tYWluXSkgPT4ge1xuICAgIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLnNldChrZXksIHBvcnREb21haW4ucHJvcGVydGllc1snY2FyZGluYWxpdHlDb21wdXRhdGlvbiddID09PSAndHJ1ZScpO1xuICB9KTtcbiAgcmV0dXJuIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zO1xufTtcblxuY29uc3QgY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY2FyZGluYWxpdHlDb21wdXRhdGlvbnM6IE1hcDxzdHJpbmcsIGJvb2xlYW4+LFxuKTogTWFwPHN0cmluZywgbnVtYmVyPiA9PiB7XG4gIGNvbnN0IGNhcmRWYXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGluZUl0ZW1zXG4gICAgLmZpbHRlcigoeyBwb3J0LCB0eXBlIH0pID0+ICEhcG9ydCAmJiAhIXR5cGUpXG4gICAgLmZvckVhY2gobGkgPT4ge1xuICAgICAgaWYgKGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChgJHtsaS5wb3J0fWApKSB7XG4gICAgICAgIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lID0gYCNDVi0ke2xpLnR5cGV9QCR7bGkucG9ydH1gO1xuICAgICAgICBjYXJkVmFycy5zZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUsIChjYXJkVmFycy5nZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUpID8/IDApICsgbGkucXR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgcmV0dXJuIGNhcmRWYXJzO1xufTtcblxuY29uc3QgY2FyZGluYWxpdHlSZWdleHAgPSBuZXcgUmVnRXhwKCcjQ1YtW2EtekEtWjAtOV9dK0AoPzxwb3J0TmFtZT5bYS16QS1aMC05X10rKScpO1xuXG5leHBvcnQgY29uc3QgcmVjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IChvcmlnaW5hbDogTGluZUl0ZW0sIHVwZGF0ZWQ6IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IGNvbGxlY3RDYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyh1cGRhdGVkLnBvcnREb21haW5zID8/IG9yaWdpbmFsLnBvcnREb21haW5zID8/IHt9KTtcbiAgY29uc3QgY2FyZGluYWxpdHlWYXJpYWJsZXMgPSBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyh1cGRhdGVkLmxpbmVJdGVtcywgY2FyZGluYWxpdHlDb21wdXRhdGlvbnMpO1xuICBjb25zdCBvcmlnaW5hbENhcmRpbmFsaXR5VmFyaWFibGVzID0gY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMob3JpZ2luYWwubGluZUl0ZW1zLCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyk7XG5cbiAgb3JpZ2luYWxDYXJkaW5hbGl0eVZhcmlhYmxlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgZXhlY0FycmF5ID0gY2FyZGluYWxpdHlSZWdleHAuZXhlYyhrZXkpO1xuICAgIGNvbnN0IHBvcnROYW1lID0gZXhlY0FycmF5Py5ncm91cHM/LlsncG9ydE5hbWUnXTtcbiAgICBpZiAoIXBvcnROYW1lIHx8IGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChwb3J0TmFtZSkpIHtcbiAgICAgIGlmIChjYXJkaW5hbGl0eVZhcmlhYmxlcy5nZXQoa2V5KSA9PT0gdmFsdWUpIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgY2FyZGluYWxpdHkgaWYgbm8gY2hhbmdlc1xuICAgICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoIWNhcmRpbmFsaXR5VmFyaWFibGVzLmhhcyhrZXkpKSB7XG4gICAgICAgIC8vIHJlbW92ZSBsYXN0IGl0ZW0gZnJvbSBwb3J0XG4gICAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGVzLnNldChrZXksIDApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVkLFxuICAgIGF0dHJpYnV0ZXM6IHVwc2VydEF0dHJpYnV0ZXMoXG4gICAgICB1cGRhdGVkLmF0dHJpYnV0ZXMsXG4gICAgICBbLi4uY2FyZGluYWxpdHlWYXJpYWJsZXNdLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUsIGNmZ1N0YXR1czogJ0NoYW5nZWQnIH0pKSxcbiAgICApLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSk6IEF0dHJpYnV0ZVtdID0+IHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIHNvcnRCeShmaWx0ZXJlZCwgWyh7IG5hbWUgfSk6IG51bWJlciA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChvcmlnaW5hbEF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBhdHRyaWJ1dGVzVG9VcHNlcnQ6IE5ld0F0dHJpYnV0ZVtdKTogQXR0cmlidXRlW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlc1RvVXBzZXJ0LnJlZHVjZSgoYWNjLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBbb3JpZ0F0dHJdID0gZ2V0QXR0cmlidXRlcyhhY2MsIFtuYW1lXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjYy5maWx0ZXIoYXR0ciA9PiBhdHRyLm5hbWUgIT09IG5hbWUpLFxuICAgICAgeyAuLi4ob3JpZ0F0dHIgPz8geyBuYW1lLCB0eXBlOiAnJyB9KSwgY2ZnU3RhdHVzOiBvcmlnQXR0ciA/ICdDaGFuZ2VkJyA6ICdVc2VyJywgdmFsdWUgfSxcbiAgICBdO1xuICB9LCBvcmlnaW5hbEF0dHJpYnV0ZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGNoQXR0cmlidXRlcyA9IChcbiAgcm9vdExpbmVJdGVtOiBMaW5lSXRlbSxcbiAgaWQ6IHN0cmluZyxcbiAgYXR0cnM6IE5ld0F0dHJpYnV0ZVtdLFxuICBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBsaW5lSXRlbSA9IGZpbmRMaW5lSXRlbShpZCwgW3Jvb3RMaW5lSXRlbV0pO1xuXG4gIGlmICghbGluZUl0ZW0pIHtcbiAgICByZXR1cm4gcm9vdExpbmVJdGVtO1xuICB9XG5cbiAgY29uc3QgYXR0cmlidXRlcyA9IHVwc2VydEF0dHJpYnV0ZXMobGluZUl0ZW0uYXR0cmlidXRlcywgYXR0cnMpO1xuICByZXR1cm4gcmVwbGFjZUxpbmVJdGVtKHJvb3RMaW5lSXRlbSwgeyAuLi5saW5lSXRlbSwgYXR0cmlidXRlcyB9LCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiBOZXdBdHRyaWJ1dGVbXSA9IFtdLFxuICBsaW5lSXRlbXM6IExpbmVJdGVtW10gPSBbXSxcbik6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgcG9ydCxcbiAgICB0eXBlLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcy5tYXAoKHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgY2ZnU3RhdHVzOiAnVXNlcicsIG5hbWUsIHZhbHVlIH0pKSxcbiAgICBsaW5lSXRlbXMsXG4gICAgcGFyZW50SWQsXG4gICAgcXR5OiAxLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29tbWVuZGVkUHJpY2VzID0gKHBvcnREb21haW46IFBvcnREb21haW4sIHR5cGU6IHN0cmluZyk6IHsgbmV0OiBudW1iZXI7IGxpc3Q6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4uZG9tYWluVHlwZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGUpO1xuXG4gIGNvbnN0IFtuZXQsIGxpc3RdID0gZG9tYWluVHlwZT8ucmVjb21tZW5kZWRQcmljZXNcbiAgICA/LmZpbHRlcigoeyBjaGFyZ2VNZXRob2QgfSkgPT4gY2hhcmdlTWV0aG9kID09PSAnT05FX1RJTUUnKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBycCkgPT4ge1xuICAgICAgICBjb25zdCBbbmV0UHJpY2UsIGxpc3RQcmljZV0gPSBhY2M7XG4gICAgICAgIHJldHVybiBbbmV0UHJpY2UgKyBycC5uZXRQcmljZSwgbGlzdFByaWNlICsgcnAubGlzdFByaWNlXTtcbiAgICAgIH0sXG4gICAgICBbMCwgMF0sXG4gICAgKSA/PyBbMCwgMF07XG5cbiAgcmV0dXJuIHsgbmV0LCBsaXN0IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVNb2RpZmllZEFzc2V0c01hcCA9IChsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9PiB7XG4gIHJldHVybiBsaW5lSXRlbXMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+LCBsaSkgPT4ge1xuICAgIGNvbnN0IGlzTW9kaWZpZWQgPSBpc0xpbmVJdGVtTW9kaWZpZWQobGkpO1xuXG4gICAgaWYgKCFpc01vZGlmaWVkKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IGdldE9yaWdpblBhcmVudChsaW5lSXRlbXMsIGxpKTtcblxuICAgIGNvbnN0IGlkID0gdGFyZ2V0Py5hc3NldElkID8/IHRhcmdldD8ub3Blbk9yZGVyTGluZUl0ZW1JZDtcbiAgICBpZiAoaWQpIHtcbiAgICAgIGFjY1tpZF0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmlnaW5QYXJlbnQgPSAobGluZUl0ZW1zOiBMaW5lSXRlbVtdLCBjdXJyZW50TGluZUl0ZW06IExpbmVJdGVtKTogTGluZUl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgdGFyZ2V0OiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9IGN1cnJlbnRMaW5lSXRlbTtcbiAgd2hpbGUgKHRhcmdldCAmJiB0YXJnZXQucmFtcEluc3RhbmNlSWQpIHtcbiAgICB0YXJnZXQgPSBsaW5lSXRlbXMuZmluZChzdWIgPT4gc3ViLmlkID09PSBjdXJyZW50TGluZUl0ZW0ucmFtcEluc3RhbmNlSWQpO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMaW5lSXRlbU1vZGlmaWVkID0gPFQgZXh0ZW5kcyBQaWNrPExpbmVJdGVtLCAnYWN0aW9uQ29kZScgfCAnc3RhdHVzJz4+KGxpbmVJdGVtOiBUKTogYm9vbGVhbiA9PiB7XG4gIGlmIChsaW5lSXRlbS5hY3Rpb25Db2RlID09PSAnRVhJU1QnICYmIGxpbmVJdGVtLnN0YXR1cyA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVJdGVtLmFjdGlvbkNvZGUgIT09ICdFWElTVCc7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbHlMaW5lSXRlbXMgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdHk6IG51bWJlciwgc3BsaXQ6IGJvb2xlYW4pOiBMaW5lSXRlbVtdID0+IHtcbiAgaWYgKHNwbGl0KSB7XG4gICAgY29uc3QgdW5pZnlJZHMgPSAobGluZUl0ZW06IExpbmVJdGVtKTogTGluZUl0ZW0gPT4gKHtcbiAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKHVuaWZ5SWRzKSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXAobmV3IEFycmF5KHF0eSksICgpID0+IHVuaWZ5SWRzKGxpbmVJdGVtKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIHF0eTogcXR5LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZWNobmljYWxBdHRyaWJ1dGUgPSAobmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoJyMnKSB8fCBuYW1lLnN0YXJ0c1dpdGgoJyQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJPdXRUZWNobmljYWxBdHRyaWJ1dGVzID0gPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PihhdHRyaWJ1dGVzOiBUW10pOiBUW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiAhaXNUZWNobmljYWxBdHRyaWJ1dGUobmFtZSkpO1xufTtcbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRCxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQWMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVUsRUFBRSxTQUFxQixFQUF3QixFQUFFO0lBQ3RGLE9BQU8sMEJBQTBCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQ3hDLFNBQXFCLEVBQ3JCLFVBQXFDLEVBQ2YsRUFBRTtJQUN4QixJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7SUFFN0IsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQzFCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEU7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQVksRUFBRTtJQUNuRyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFB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QUMsUUFBa0IsRUFBRSxHQUFXLEVBQUUsS0FBYyxFQUFjLEVBQUU7SUFDL0YsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWtCLEVBQVksRUFBRSxDQUFDLENBQUM7WUFDbEQsR0FBRyxRQUFRO1lBQ1gsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ3REO1NBQU07UUFDTCxPQUFPO1lBQ0w7Z0JBQ0UsR0FBRyxRQUFRO2dCQUNYLEdBQUcsRUFBRSxHQUFHO2FBQ1Q7U0FDRixDQUFDO0tBQ0g7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQTZCLFVBQWUsRUFBTyxFQUFFO0lBQy9GLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIExpbmVJdGVtLCBOZXdBdHRyaWJ1dGUsIFBvcnREb21haW4sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGVudHJpZXMsIGZsYXR0ZW4sIG1hcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAoXG4gIGxpbmVJdGVtOiBMaW5lSXRlbSxcbiAgcmVwbGFjZVRvOiBMaW5lSXRlbSxcbiAgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IExpbmVJdGVtID0+IHtcbiAgaWYgKGxpbmVJdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICBpZiAoIXNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKSB7XG4gICAgICByZXR1cm4geyAuLi5yZWNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKGxpbmVJdGVtLCByZXBsYWNlVG8pIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGluZUl0ZW0sXG4gICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHJlcGxhY2VMaW5lSXRlbShsaSwgcmVwbGFjZVRvLCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbikpLFxuICB9O1xufTtcblxuY29uc3QgY29sbGVjdENhcmRpbmFsaXR5Q29tcHV0YXRpb25zID0gKHBvcnREb21haW5zOiBEaWN0aW9uYXJ5PFBvcnREb21haW4+KTogTWFwPHN0cmluZywgYm9vbGVhbj4gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICBlbnRyaWVzKHBvcnREb21haW5zKS5mb3JFYWNoKChba2V5LCBwb3J0RG9tYWluXSkgPT4ge1xuICAgIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLnNldChrZXksIHBvcnREb21haW4ucHJvcGVydGllc1snY2FyZGluYWxpdHlDb21wdXRhdGlvbiddID09PSAndHJ1ZScpO1xuICB9KTtcbiAgcmV0dXJuIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zO1xufTtcblxuY29uc3QgY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY2FyZGluYWxpdHlDb21wdXRhdGlvbnM6IE1hcDxzdHJpbmcsIGJvb2xlYW4+LFxuKTogTWFwPHN0cmluZywgbnVtYmVyPiA9PiB7XG4gIGNvbnN0IGNhcmRWYXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGluZUl0ZW1zXG4gICAgLmZpbHRlcigoeyBwb3J0LCB0eXBlIH0pID0+ICEhcG9ydCAmJiAhIXR5cGUpXG4gICAgLmZvckVhY2gobGkgPT4ge1xuICAgICAgaWYgKGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChgJHtsaS5wb3J0fWApKSB7XG4gICAgICAgIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lID0gYCNDVi0ke2xpLnR5cGV9QCR7bGkucG9ydH1gO1xuICAgICAgICBjYXJkVmFycy5zZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUsIChjYXJkVmFycy5nZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUpID8/IDApICsgbGkucXR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgcmV0dXJuIGNhcmRWYXJzO1xufTtcblxuY29uc3QgY2FyZGluYWxpdHlSZWdleHAgPSBuZXcgUmVnRXhwKCcjQ1YtW2EtekEtWjAtOV9dK0AoPzxwb3J0TmFtZT5bYS16QS1aMC05X10rKScpO1xuXG5leHBvcnQgY29uc3QgcmVjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IChvcmlnaW5hbDogTGluZUl0ZW0sIHVwZGF0ZWQ6IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IGNvbGxlY3RDYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyh1cGRhdGVkLnBvcnREb21haW5zID8/IG9yaWdpbmFsLnBvcnREb21haW5zID8/IHt9KTtcbiAgY29uc3QgY2FyZGluYWxpdHlWYXJpYWJsZXMgPSBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyh1cGRhdGVkLmxpbmVJdGVtcywgY2FyZGluYWxpdHlDb21wdXRhdGlvbnMpO1xuICBjb25zdCBvcmlnaW5hbENhcmRpbmFsaXR5VmFyaWFibGVzID0gY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMob3JpZ2luYWwubGluZUl0ZW1zLCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyk7XG5cbiAgb3JpZ2luYWxDYXJkaW5hbGl0eVZhcmlhYmxlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgZXhlY0FycmF5ID0gY2FyZGluYWxpdHlSZWdleHAuZXhlYyhrZXkpO1xuICAgIGNvbnN0IHBvcnROYW1lID0gZXhlY0FycmF5Py5ncm91cHM/LlsncG9ydE5hbWUnXTtcbiAgICBpZiAoIXBvcnROYW1lIHx8IGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChwb3J0TmFtZSkpIHtcbiAgICAgIGlmIChjYXJkaW5hbGl0eVZhcmlhYmxlcy5nZXQoa2V5KSA9PT0gdmFsdWUpIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgY2FyZGluYWxpdHkgaWYgbm8gY2hhbmdlc1xuICAgICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoIWNhcmRpbmFsaXR5VmFyaWFibGVzLmhhcyhrZXkpKSB7XG4gICAgICAgIC8vIHJlbW92ZSBsYXN0IGl0ZW0gZnJvbSBwb3J0XG4gICAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGVzLnNldChrZXksIDApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVkLFxuICAgIGF0dHJpYnV0ZXM6IHVwc2VydEF0dHJpYnV0ZXMoXG4gICAgICB1cGRhdGVkLmF0dHJpYnV0ZXMsXG4gICAgICBbLi4uY2FyZGluYWxpdHlWYXJpYWJsZXNdLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUsIGNmZ1N0YXR1czogJ0NoYW5nZWQnIH0pKSxcbiAgICApLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSk6IEF0dHJpYnV0ZVtdID0+IHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIHNvcnRCeShmaWx0ZXJlZCwgWyh7IG5hbWUgfSk6IG51bWJlciA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChvcmlnaW5hbEF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBhdHRyaWJ1dGVzVG9VcHNlcnQ6IE5ld0F0dHJpYnV0ZVtdKTogQXR0cmlidXRlW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlc1RvVXBzZXJ0LnJlZHVjZSgoYWNjLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBbb3JpZ0F0dHJdID0gZ2V0QXR0cmlidXRlcyhhY2MsIFtuYW1lXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjYy5maWx0ZXIoYXR0ciA9PiBhdHRyLm5hbWUgIT09IG5hbWUpLFxuICAgICAgeyAuLi4ob3JpZ0F0dHIgPz8geyBuYW1lLCB0eXBlOiAnJyB9KSwgY2ZnU3RhdHVzOiBvcmlnQXR0ciA/ICdDaGFuZ2VkJyA6ICdVc2VyJywgdmFsdWUgfSxcbiAgICBdO1xuICB9LCBvcmlnaW5hbEF0dHJpYnV0ZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGNoQXR0cmlidXRlcyA9IChcbiAgcm9vdExpbmVJdGVtOiBMaW5lSXRlbSxcbiAgaWQ6IHN0cmluZyxcbiAgYXR0cnM6IE5ld0F0dHJpYnV0ZVtdLFxuICBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBsaW5lSXRlbSA9IGZpbmRMaW5lSXRlbShpZCwgW3Jvb3RMaW5lSXRlbV0pO1xuXG4gIGlmICghbGluZUl0ZW0pIHtcbiAgICByZXR1cm4gcm9vdExpbmVJdGVtO1xuICB9XG5cbiAgY29uc3QgYXR0cmlidXRlcyA9IHVwc2VydEF0dHJpYnV0ZXMobGluZUl0ZW0uYXR0cmlidXRlcywgYXR0cnMpO1xuICByZXR1cm4gcmVwbGFjZUxpbmVJdGVtKHJvb3RMaW5lSXRlbSwgeyAuLi5saW5lSXRlbSwgYXR0cmlidXRlcyB9LCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiBOZXdBdHRyaWJ1dGVbXSA9IFtdLFxuICBsaW5lSXRlbXM6IExpbmVJdGVtW10gPSBbXSxcbik6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgcG9ydCxcbiAgICB0eXBlLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcy5tYXAoKHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgY2ZnU3RhdHVzOiAnVXNlcicsIG5hbWUsIHZhbHVlIH0pKSxcbiAgICBsaW5lSXRlbXMsXG4gICAgcGFyZW50SWQsXG4gICAgcXR5OiAxLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29tbWVuZGVkUHJpY2VzID0gKHBvcnREb21haW46IFBvcnREb21haW4sIHR5cGU6IHN0cmluZyk6IHsgbmV0OiBudW1iZXI7IGxpc3Q6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4uZG9tYWluVHlwZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGUpO1xuXG4gIGNvbnN0IFtuZXQsIGxpc3RdID0gZG9tYWluVHlwZT8ucmVjb21tZW5kZWRQcmljZXNcbiAgICA/LmZpbHRlcigoeyBjaGFyZ2VNZXRob2QgfSkgPT4gY2hhcmdlTWV0aG9kID09PSAnT05FX1RJTUUnKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBycCkgPT4ge1xuICAgICAgICBjb25zdCBbbmV0UHJpY2UsIGxpc3RQcmljZV0gPSBhY2M7XG4gICAgICAgIHJldHVybiBbbmV0UHJpY2UgKyBycC5uZXRQcmljZSwgbGlzdFByaWNlICsgcnAubGlzdFByaWNlXTtcbiAgICAgIH0sXG4gICAgICBbMCwgMF0sXG4gICAgKSA/PyBbMCwgMF07XG5cbiAgcmV0dXJuIHsgbmV0LCBsaXN0IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JpZ2luUGFyZW50ID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSwgY3VycmVudExpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBjdXJyZW50TGluZUl0ZW07XG4gIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5pZCA9PT0gY3VycmVudExpbmVJdGVtLnJhbXBJbnN0YW5jZUlkKTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxuZXhwb3J0IGNvbnN0IGFzc2V0UHJlZGljYXRlRm4gPSAobGluZUl0ZW06IExpbmVJdGVtLCBhc3NldElkPzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICghYXNzZXRJZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBsaW5lSXRlbS5hc3NldElkID09PSBhc3NldElkIHx8IGxpbmVJdGVtLm9wZW5PcmRlckxpbmVJdGVtSWQgPT09IGFzc2V0SWQ7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbHlMaW5lSXRlbXMgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdHk6IG51bWJlciwgc3BsaXQ6IGJvb2xlYW4pOiBMaW5lSXRlbVtdID0+IHtcbiAgaWYgKHNwbGl0KSB7XG4gICAgY29uc3QgdW5pZnlJZHMgPSAobGluZUl0ZW06IExpbmVJdGVtKTogTGluZUl0ZW0gPT4gKHtcbiAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKHVuaWZ5SWRzKSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXAobmV3IEFycmF5KHF0eSksICgpID0+IHVuaWZ5SWRzKGxpbmVJdGVtKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIHF0eTogcXR5LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZWNobmljYWxBdHRyaWJ1dGUgPSAobmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoJyMnKSB8fCBuYW1lLnN0YXJ0c1dpdGgoJyQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJPdXRUZWNobmljYWxBdHRyaWJ1dGVzID0gPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PihhdHRyaWJ1dGVzOiBUW10pOiBUW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiAhaXNUZWNobmljYWxBdHRyaWJ1dGUobmFtZSkpO1xufTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';
2
- import { ConfigurationRuntimeService, ConfigurationService, ConfigurationStateService, ContextService, FLOW_CUSTOMIZATION, FlowInfoService, FlowStateService, IntegrationState, QuoteDraftService, } from '@veloceapps/sdk/core';
2
+ import { ConfigurationRuntimeService, ConfigurationService, ConfigurationStateService, ContextService, FlowInfoService, FlowStateService, FLOW_CUSTOMIZATION, IntegrationState, QuoteDraftService, } from '@veloceapps/sdk/core';
3
3
  import { BehaviorSubject, first, map, of, switchMap, tap } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@veloceapps/sdk/core";
@@ -50,12 +50,11 @@ export class ProductComponent {
50
50
  const offeringId = contextProperties.offeringId;
51
51
  return this.configurationRuntimeService.init({ productId, offeringId });
52
52
  }
53
- const lineItemId = this.getLineItemId(quote, productId, contextProperties.lineItemId);
54
- const currentStateItem = quote.currentState.find(({ id }) => id === lineItemId);
55
- if (currentStateItem) {
56
- this.configurationService.setConfigurableRamp(currentStateItem);
53
+ const lineItem = this.getLineItem(quote, productId, contextProperties.lineItemId);
54
+ if (lineItem) {
55
+ this.configurationService.setConfigurableRamp(lineItem);
57
56
  }
58
- const { offeringId } = currentStateItem ?? {};
57
+ const { offeringId } = lineItem ?? {};
59
58
  return this.configurationRuntimeService.init({ productId, offeringId });
60
59
  }), switchMap(() => this.customizeUI$()), tap(() => {
61
60
  const uiDefinition = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer?.source;
@@ -72,13 +71,17 @@ export class ProductComponent {
72
71
  }
73
72
  }), switchMap(() => this.configurationStateService.init$()));
74
73
  }
75
- getLineItemId(quote, productId, lineItemId) {
74
+ getLineItem(quote, productId, lineItemId) {
76
75
  // search by lineItemId first
77
- let id = quote.currentState.find(li => li.id === lineItemId)?.id;
78
- if (!id && this.quoteDraftService.isStandalone) {
79
- id = quote.currentState.find(li => li.productId === productId)?.id;
76
+ let li = quote.currentState.find(li => li.id === lineItemId);
77
+ if (!li && this.quoteDraftService.isStandalone) {
78
+ li = quote.currentState.find(li => li.productId === productId);
80
79
  }
81
- return id;
80
+ // If still not found, is could be an asset
81
+ if (!li) {
82
+ li = this.quoteDraftService.assetsState?.currentState.find(li => li.id === lineItemId);
83
+ }
84
+ return li;
82
85
  }
83
86
  }
84
87
  ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i1.ContextService }, { token: i1.ConfigurationRuntimeService }, { token: i1.ConfigurationService }, { token: i1.ConfigurationStateService }, { token: i1.QuoteDraftService }, { token: i1.FlowInfoService }, { token: i1.FlowStateService }, { token: i1.IntegrationState }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
@@ -92,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
92
95
  type: Inject,
93
96
  args: [FLOW_CUSTOMIZATION]
94
97
  }] }]; } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JGLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixjQUFjLEVBQ2Qsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCxvQkFBMEMsRUFDMUMseUJBQW9ELEVBQ3BELGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ00sb0JBQXdDO1FBUmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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a0JBTjVCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OzBCQWU1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1b3RlRHJhZnQsIFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ01TUHJldmlld0NvbmZpZyB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgQ29udGV4dFNlcnZpY2UsXG4gIEZMT1dfQ1VTVE9NSVpBVElPTixcbiAgRmxvd0N1c3RvbWl6YXRpb24sXG4gIEZsb3dJbmZvU2VydmljZSxcbiAgRmxvd1N0YXRlU2VydmljZSxcbiAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcHJvZHVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25maWc6IENNU1ByZXZpZXdDb25maWc7XG4gIHB1YmxpYyB1aURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaW5pdCQ6ICgpID0+IHRoaXMuaW5pdCQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21pemVVSSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQgfSA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0ID8/IHt9O1xuICAgIGlmICghcHJvZHVjdElkIHx8ICF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRVaURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldFVpRGVmaW5pdGlvbihwcm9kdWN0SWQpLnBpcGUoXG4gICAgICBtYXAodWlEZWZpbml0aW9uQ29udGFpbmVyID0+IHtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbkNvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLm92ZXJyaWRlVUlEZWZpbml0aW9uKHVpRGVmaW5pdGlvbkNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBxdW90ZURyYWZ0JDogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgdW5kZWZpbmVkPjtcbiAgICBpZiAodGhpcy5mbG93SW5mb1NlcnZpY2UuaXNMZWdhY3kgfHwgIXRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzU3RhdGVmdWwpIHtcbiAgICAgIHF1b3RlRHJhZnQkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JDtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVvdGVEcmFmdCQgPSBvZih1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gcXVvdGVEcmFmdCQucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAocXVvdGUgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0UHJvcGVydGllcyA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLnByb3BlcnRpZXM7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGNvbnRleHRQcm9wZXJ0aWVzLnByb2R1Y3RJZDtcblxuICAgICAgICBpZiAoIXByb2R1Y3RJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHN0YXJ0IGNvbmZpZ3VyYXRpb24gZm9yICdwcm9kdWN0SWQgPT0gbnVsbCdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVvdGUpIHtcbiAgICAgICAgICBjb25zdCBvZmZlcmluZ0lkID0gY29udGV4dFByb3BlcnRpZXMub2ZmZXJpbmdJZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCh7IHByb2R1Y3RJZCwgb2ZmZXJpbmdJZCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpbmVJdGVtSWQgPSB0aGlzLmdldExpbmVJdGVtSWQocXVvdGUsIHByb2R1Y3RJZCwgY29udGV4dFByb3BlcnRpZXMubGluZUl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZUl0ZW0gPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gbGluZUl0ZW1JZCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZUl0ZW0pIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnNldENvbmZpZ3VyYWJsZVJhbXAoY3VycmVudFN0YXRlSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG9mZmVyaW5nSWQgfSA9IGN1cnJlbnRTdGF0ZUl0ZW0gPz8ge307XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXQoeyBwcm9kdWN0SWQsIG9mZmVyaW5nSWQgfSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmN1c3RvbWl6ZVVJJCgpKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb25Db250YWluZXI/LnNvdXJjZTtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbikge1xuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uJC5uZXh0KHVpRGVmaW5pdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9kdWN0IGRvZXMgbm90IGhhdmUgQ29uZmlndXJhdGlvbiBVSScpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0aWFsaXphdGlvblByb3BzKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdGlhbGl6YXRpb25Qcm9wcy5hdHRyaWJ1dGVzTWFwID1cbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5zdGF0ZS5ndWlkZWRTZWxsaW5nO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UuaW5pdCQoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGluZUl0ZW1JZChxdW90ZTogUXVvdGVEcmFmdCwgcHJvZHVjdElkOiBzdHJpbmcsIGxpbmVJdGVtSWQ/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIHNlYXJjaCBieSBsaW5lSXRlbUlkIGZpcnN0XG4gICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW1JZCk/LmlkO1xuXG4gICAgaWYgKCFpZCAmJiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzU3RhbmRhbG9uZSkge1xuICAgICAgaWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5wcm9kdWN0SWQgPT09IHByb2R1Y3RJZCk/LmlkO1xuICAgIH1cblxuICAgIHJldHVybiBpZDtcbiAgfVxufVxuIiwiPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwiJGFueSh1aURlZmluaXRpb24kIHwgYXN5bmMpXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3ZsLWNtcy1wcmV2aWV3PlxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JGLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixjQUFjLEVBRWQsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCxvQkFBMEMsRUFDMUMseUJBQW9ELEVBQ3BELGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ00sb0JBQXdDO1FBUmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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Q3ZCN0Isd0dBQ0E7MkZEc0JhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7MEJBZTVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGluZUl0ZW0sIFF1b3RlRHJhZnQsIFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ01TUHJldmlld0NvbmZpZyB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgQ29udGV4dFNlcnZpY2UsXG4gIEZsb3dDdXN0b21pemF0aW9uLFxuICBGbG93SW5mb1NlcnZpY2UsXG4gIEZsb3dTdGF0ZVNlcnZpY2UsXG4gIEZMT1dfQ1VTVE9NSVpBVElPTixcbiAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcHJvZHVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25maWc6IENNU1ByZXZpZXdDb25maWc7XG4gIHB1YmxpYyB1aURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaW5pdCQ6ICgpID0+IHRoaXMuaW5pdCQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21pemVVSSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQgfSA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0ID8/IHt9O1xuICAgIGlmICghcHJvZHVjdElkIHx8ICF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRVaURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldFVpRGVmaW5pdGlvbihwcm9kdWN0SWQpLnBpcGUoXG4gICAgICBtYXAodWlEZWZpbml0aW9uQ29udGFpbmVyID0+IHtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbkNvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLm92ZXJyaWRlVUlEZWZpbml0aW9uKHVpRGVmaW5pdGlvbkNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBxdW90ZURyYWZ0JDogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgdW5kZWZpbmVkPjtcbiAgICBpZiAodGhpcy5mbG93SW5mb1NlcnZpY2UuaXNMZWdhY3kgfHwgIXRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzU3RhdGVmdWwpIHtcbiAgICAgIHF1b3RlRHJhZnQkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JDtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVvdGVEcmFmdCQgPSBvZih1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gcXVvdGVEcmFmdCQucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAocXVvdGUgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0UHJvcGVydGllcyA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLnByb3BlcnRpZXM7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGNvbnRleHRQcm9wZXJ0aWVzLnByb2R1Y3RJZDtcblxuICAgICAgICBpZiAoIXByb2R1Y3RJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHN0YXJ0IGNvbmZpZ3VyYXRpb24gZm9yICdwcm9kdWN0SWQgPT0gbnVsbCdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVvdGUpIHtcbiAgICAgICAgICBjb25zdCBvZmZlcmluZ0lkID0gY29udGV4dFByb3BlcnRpZXMub2ZmZXJpbmdJZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCh7IHByb2R1Y3RJZCwgb2ZmZXJpbmdJZCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5nZXRMaW5lSXRlbShxdW90ZSwgcHJvZHVjdElkLCBjb250ZXh0UHJvcGVydGllcy5saW5lSXRlbUlkKTtcbiAgICAgICAgaWYgKGxpbmVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zZXRDb25maWd1cmFibGVSYW1wKGxpbmVJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2ZmZXJpbmdJZCB9ID0gbGluZUl0ZW0gPz8ge307XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXQoeyBwcm9kdWN0SWQsIG9mZmVyaW5nSWQgfSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmN1c3RvbWl6ZVVJJCgpKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb25Db250YWluZXI/LnNvdXJjZTtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbikge1xuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uJC5uZXh0KHVpRGVmaW5pdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9kdWN0IGRvZXMgbm90IGhhdmUgQ29uZmlndXJhdGlvbiBVSScpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0aWFsaXphdGlvblByb3BzKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdGlhbGl6YXRpb25Qcm9wcy5hdHRyaWJ1dGVzTWFwID1cbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5zdGF0ZS5ndWlkZWRTZWxsaW5nO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UuaW5pdCQoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGluZUl0ZW0ocXVvdGU6IFF1b3RlRHJhZnQsIHByb2R1Y3RJZDogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogTGluZUl0ZW0gfCB1bmRlZmluZWQge1xuICAgIC8vIHNlYXJjaCBieSBsaW5lSXRlbUlkIGZpcnN0XG4gICAgbGV0IGxpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9IHF1b3RlLmN1cnJlbnRTdGF0ZS5maW5kKGxpID0+IGxpLmlkID09PSBsaW5lSXRlbUlkKTtcblxuICAgIGlmICghbGkgJiYgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc1N0YW5kYWxvbmUpIHtcbiAgICAgIGxpID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkucHJvZHVjdElkID09PSBwcm9kdWN0SWQpO1xuICAgIH1cblxuICAgIC8vIElmIHN0aWxsIG5vdCBmb3VuZCwgaXMgY291bGQgYmUgYW4gYXNzZXRcbiAgICBpZiAoIWxpKSB7XG4gICAgICBsaSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRzU3RhdGU/LmN1cnJlbnRTdGF0ZS5maW5kKGxpID0+IGxpLmlkID09PSBsaW5lSXRlbUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGk7XG4gIH1cbn1cbiIsIjx2bC1jbXMtcHJldmlldyBbdWlEZWZpbml0aW9uXT1cIiRhbnkodWlEZWZpbml0aW9uJCB8IGFzeW5jKVwiIFtjb25maWddPVwiY29uZmlnXCI+PC92bC1jbXMtcHJldmlldz5cbiJdfQ==