@igo2/integration 16.1.1 → 16.3.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.
- package/esm2022/lib/analytics/analytics.module.mjs +1 -1
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +7 -16
- package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +1 -1
- package/esm2022/lib/context/index.mjs +1 -1
- package/esm2022/lib/filter/index.mjs +1 -1
- package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +1 -1
- package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +1 -1
- package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +180 -0
- package/esm2022/lib/geometry-form/data-issue-reporter-tool/index.mjs +2 -0
- package/esm2022/lib/geometry-form/geometry-form.module.mjs +36 -0
- package/esm2022/lib/geometry-form/index.mjs +2 -0
- package/esm2022/lib/integration.module.mjs +8 -4
- package/esm2022/lib/map/index.mjs +1 -1
- package/esm2022/lib/print/print-tool/print-tool.component.mjs +1 -1
- package/esm2022/lib/search/index.mjs +1 -1
- package/esm2022/lib/search/query.state.mjs +3 -3
- package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +7 -6
- package/esm2022/lib/search/search.state.mjs +13 -4
- package/esm2022/lib/storage/storage.module.mjs +1 -1
- package/esm2022/lib/tool/tool.module.mjs +1 -1
- package/esm2022/public_api.mjs +3 -1
- package/fesm2022/igo2-integration.mjs +249 -53
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +0 -4
- package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +2 -2
- package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +44 -0
- package/lib/geometry-form/data-issue-reporter-tool/index.d.ts +1 -0
- package/lib/geometry-form/geometry-form.module.d.ts +11 -0
- package/lib/geometry-form/index.d.ts +1 -0
- package/lib/integration.module.d.ts +2 -1
- package/lib/search/query.state.d.ts +2 -2
- package/lib/search/search-results-tool/search-results-tool.component.d.ts +1 -0
- package/lib/search/search.state.d.ts +16 -3
- package/locale/en.integration.json +17 -0
- package/locale/fr.integration.json +17 -0
- package/package.json +3 -3
- package/public_api.d.ts +2 -0
|
@@ -246,7 +246,7 @@ export let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
246
246
|
}
|
|
247
247
|
abstractResult.meta.style = computedStyle;
|
|
248
248
|
abstractResult.meta.style.setZIndex(2000 + zIndexOffset);
|
|
249
|
-
this.map.searchResultsOverlay.addFeature(abstractResult,
|
|
249
|
+
this.map.searchResultsOverlay.addFeature(abstractResult, this.searchState.featureMotion.focus);
|
|
250
250
|
if (trigger === 'focused') {
|
|
251
251
|
this.abstractFocusedResult = abstractResult;
|
|
252
252
|
}
|
|
@@ -305,7 +305,7 @@ export let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
305
305
|
feature.setStyle(result.data.meta.style);
|
|
306
306
|
return;
|
|
307
307
|
}
|
|
308
|
-
this.map.searchResultsOverlay.addFeature(result.data,
|
|
308
|
+
this.map.searchResultsOverlay.addFeature(result.data, this.searchState.featureMotion.focus);
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
311
|
onResultUnfocus(result) {
|
|
@@ -330,7 +330,7 @@ export let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
330
330
|
*/
|
|
331
331
|
onResultSelect(result) {
|
|
332
332
|
this.map.searchResultsOverlay.dataSource.ol.clear();
|
|
333
|
-
this.tryAddFeatureToMap(result);
|
|
333
|
+
this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);
|
|
334
334
|
this.searchState.setSelectedResult(result);
|
|
335
335
|
if (this.topPanelState === 'initial') {
|
|
336
336
|
if (this.topPanelStateDefault !== 'collapsed') {
|
|
@@ -434,8 +434,9 @@ export let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
434
434
|
/**
|
|
435
435
|
* Try to add a feature to the map overlay
|
|
436
436
|
* @param result A search result that could be a feature
|
|
437
|
+
* @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay
|
|
437
438
|
*/
|
|
438
|
-
tryAddFeatureToMap(result) {
|
|
439
|
+
tryAddFeatureToMap(result, motion = FeatureMotion.Default) {
|
|
439
440
|
if (result.meta.dataType !== FEATURE) {
|
|
440
441
|
return undefined;
|
|
441
442
|
}
|
|
@@ -445,7 +446,7 @@ export let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
445
446
|
return;
|
|
446
447
|
}
|
|
447
448
|
feature.meta.style = getCommonVectorSelectedStyle(Object.assign({}, { feature }, this.searchState.searchOverlayStyleSelection, result.style?.selection ? result.style.selection : {}));
|
|
448
|
-
this.map.searchResultsOverlay.addFeature(feature);
|
|
449
|
+
this.map.searchResultsOverlay.addFeature(feature, motion);
|
|
449
450
|
}
|
|
450
451
|
isScrolledIntoView(elemSource, elem) {
|
|
451
452
|
const padding = 6;
|
|
@@ -531,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
531
532
|
}], topPanelState: [{
|
|
532
533
|
type: Input
|
|
533
534
|
}] } });
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy10b29sL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtdG9vbC9zZWFyY2gtcmVzdWx0cy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxpQkFBaUIsRUFFakIsYUFBYSxFQUNiLGNBQWMsRUFDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxPQUFPLEVBRVAsYUFBYSxFQUtiLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBNEIsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZ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MEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNO21PQU10QyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFnRUYsYUFBYTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBFbnRpdHlTdGF0ZSxcclxuICBFbnRpdHlTdG9yZSxcclxuICBGbGV4aWJsZUNvbXBvbmVudCxcclxuICBGbGV4aWJsZVN0YXRlLFxyXG4gIFRvb2xDb21wb25lbnQsXHJcbiAgZ2V0RW50aXR5VGl0bGVcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRkVBVFVSRSxcclxuICBGZWF0dXJlLFxyXG4gIEZlYXR1cmVNb3Rpb24sXHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIElnb01hcCxcclxuICBSZXNlYXJjaCxcclxuICBTZWFyY2hSZXN1bHQsXHJcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXHJcbiAgZmVhdHVyZUZyb21PbCxcclxuICBmZWF0dXJlVG9PbCxcclxuICBmZWF0dXJlc0FyZU91dE9mVmlldyxcclxuICBmZWF0dXJlc0FyZVRvb0RlZXBJblZpZXcsXHJcbiAgZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZSxcclxuICBnZXRDb21tb25WZWN0b3JTdHlsZSxcclxuICBtb3ZlVG9PbEZlYXR1cmVzLFxyXG4gIHJvdW5kQ29vcmRUb1xyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcblxyXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XHJcbmltcG9ydCAqIGFzIG9sUHJvaiBmcm9tICdvbC9wcm9qJztcclxuXHJcbmltcG9ydCBwb2ludE9uRmVhdHVyZSBmcm9tICdAdHVyZi9wb2ludC1vbi1mZWF0dXJlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBEaXJlY3Rpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy5zdGF0ZSc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vLi4vbWFwL21hcC5zdGF0ZSc7XHJcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XHJcbmltcG9ydCB7IFNlYXJjaFN0YXRlIH0gZnJvbSAnLi4vc2VhcmNoLnN0YXRlJztcclxuXHJcbi8qKlxyXG4gKiBUb29sIHRvIGJyb3dzZSB0aGUgc2VhcmNoIHJlc3VsdHNcclxuICovXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAnc2VhcmNoUmVzdWx0cycsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuc2VhcmNoUmVzdWx0cycsXHJcbiAgaWNvbjogJ21hZ25pZnknXHJcbn0pXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLXNlYXJjaC1yZXN1bHRzLXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c1Rvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogdG8gc2hvdyBoaWRlIHJlc3VsdHMgaWNvbnNcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93SWNvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmUgdGhlIHRvcCBwYW5lbCBkZWZhdWx0IHN0YXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgdG9wUGFuZWxTdGF0ZURlZmF1bHQ6IHN0cmluZyA9ICdleHBhbmRlZCc7XHJcblxyXG4gIHByaXZhdGUgaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzaG93UmVzdWx0c0dlb21ldHJpZXMkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZ2V0Um91dGUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc2hvd25SZXN1bHRzR2VvbWV0cmllczogRmVhdHVyZVtdID0gW107XHJcbiAgcHJpdmF0ZSBzaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gIHByaXZhdGUgZm9jdXNlZFJlc3VsdCQ6IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hSZXN1bHQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcbiAgcHVibGljIGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgcHJpdmF0ZSBpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGFic3RyYWN0Rm9jdXNlZFJlc3VsdDogRmVhdHVyZTtcclxuICBwcml2YXRlIGFic3RyYWN0U2VsZWN0ZWRSZXN1bHQ6IEZlYXR1cmU7XHJcblxyXG4gIHB1YmxpYyBkZWJvdW5jZWRFbXB0eSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZWRFbXB0eSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3JlIGhvbGRpbmcgdGhlIHNlYXJjaCByZXN1bHRzXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IHN0b3JlKCk6IEVudGl0eVN0b3JlPFNlYXJjaFJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RhdGUuc3RvcmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXAgdG8gZGlzcGxheSB0aGUgcmVzdWx0cyBvblxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBmZWF0dXJlVGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZlYXR1cmUgPyBnZXRFbnRpdHlUaXRsZSh0aGlzLmZlYXR1cmUpIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZlYXR1cmUkKCk6IE9ic2VydmFibGU8RmVhdHVyZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVWaWV3XHJcbiAgICAgIC5maXJzdEJ5JCgoZSkgPT4gZS5zdGF0ZS5mb2N1c2VkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgKHRoaXMuZmVhdHVyZSA9IGVsZW1lbnRcclxuICAgICAgICAgICAgICA/IChlbGVtZW50LmVudGl0eS5kYXRhIGFzIEZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZlYXR1cmU6IEZlYXR1cmU7XHJcblxyXG4gIHB1YmxpYyB0ZXJtID0gJyc7XHJcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIHNldHRpbmdzQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcclxuXHJcbiAgcHVibGljIHRvcFBhbmVsU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGbGV4aWJsZVN0YXRlPignaW5pdGlhbCcpO1xyXG4gIHByaXZhdGUgdG9wUGFuZWxTdGF0ZSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHRvcFBhbmVsU3RhdGUodmFsdWU6IEZsZXhpYmxlU3RhdGUpIHtcclxuICAgIHRoaXMudG9wUGFuZWxTdGF0ZSQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCB0b3BQYW5lbFN0YXRlKCk6IEZsZXhpYmxlU3RhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMudG9wUGFuZWxTdGF0ZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdGVybVNwbGl0dGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hUZXJtU3BsaXR0ZXIkLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXQgPSBuZXcgb2xGb3JtYXRHZW9KU09OKCk7XHJcblxyXG4gIGdldCBzdG9yZXMoKTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoTGF5ZXJTdG9yZXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTdGF0ZTogU2VhcmNoU3RhdGUsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25TdGF0ZTogRGlyZWN0aW9uU3RhdGUsXHJcbiAgICBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uID0gY29uZmlnU2VydmljZS5nZXRDb25maWcoXHJcbiAgICAgICdoYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbidcclxuICAgICk7XHJcbiAgICB0aGlzLnNhdmVTZWFyY2hSZXN1bHRJbkxheWVyID0gY29uZmlnU2VydmljZS5nZXRDb25maWcoXHJcbiAgICAgICdzYXZlU2VhcmNoUmVzdWx0SW5MYXllcidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSQkID0gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hUZXJtJC5zdWJzY3JpYmUoXHJcbiAgICAgIChzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBzZWFyY2hUZXJtICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHNlYXJjaFRlcm0gIT09IG51bGwgJiZcclxuICAgICAgICAgIHNlYXJjaFRlcm0gIT09ICcnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRlcm0gPSBzZWFyY2hUZXJtO1xyXG4gICAgICAgICAgdGhpcy5kZWJvdW5jZWRFbXB0eSQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hUZXJtID09PSAnJykge1xyXG4gICAgICAgICAgdGhpcy5kZWJvdW5jZWRFbXB0eSQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgZm9yIChjb25zdCByZXMgb2YgdGhpcy5zdG9yZS5zdGF0ZVZpZXcuYWxsJCgpLnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlLnN0YXRlLmdldChyZXMuZW50aXR5KS5zZWxlY3RlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdleHBhbmRlZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFNldHRpbmdzQ2hhbmdlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlJC5uZXh0KHRydWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy50b3BQYW5lbFN0YXRlJCQgPSB0aGlzLnRvcFBhbmVsU3RhdGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmNvbXB1dGVFbGVtZW50UmVmKClbMF07XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzFdO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIC8vIFRvIGJlIHN1cmUgdGhlIGZsZXhpYmxlIGNvbXBvbmVudCBoYXMgYmVlbiBkaXNwbGF5ZWQgeWV0XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGlnb0xpc3QsIHNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkanVzdFRvcFBhbmVsKGlnb0xpc3QsIHNlbGVjdGVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBGbGV4aWJsZUNvbXBvbmVudC50cmFuc2l0aW9uVGltZSArIDUwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24pIHtcclxuICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0YXRlLmZvY3VzZWRPclJlc29sdXRpb24kJCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuZm9jdXNlZE9yUmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgICAgICB0aGlzLmZvY3VzZWRSZXN1bHQkLFxyXG4gICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcclxuICAgICAgICBdKS5zdWJzY3JpYmUoKGJ1bmNoOiBbU2VhcmNoUmVzdWx0PEZlYXR1cmU+LCBudW1iZXJdKSA9PlxyXG4gICAgICAgICAgdGhpcy5idWlsZFJlc3VsdEVtcGhhc2lzKGJ1bmNoWzBdLCAnZm9jdXNlZCcpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkT3JSZXNvbHV0aW9uJCQpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkT3JSZXNvbHV0aW9uJCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRSZXN1bHQkLFxyXG4gICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcclxuICAgICAgICBdKS5zdWJzY3JpYmUoKGJ1bmNoOiBbU2VhcmNoUmVzdWx0PEZlYXR1cmU+LCBudW1iZXJdKSA9PlxyXG4gICAgICAgICAgdGhpcy5idWlsZFJlc3VsdEVtcGhhc2lzKGJ1bmNoWzBdLCAnc2VsZWN0ZWQnKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubW9uaXRvclJlc3VsdE91dE9mVmlldygpO1xyXG5cclxuICAgIHRoaXMuc2hvd1Jlc3VsdHNHZW9tZXRyaWVzJCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJCxcclxuICAgICAgdGhpcy5zdG9yZS5zdGF0ZVZpZXcuYWxsJCgpLFxyXG4gICAgICB0aGlzLmZvY3VzZWRSZXN1bHQkLFxyXG4gICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkUmVzdWx0JCxcclxuICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hUZXJtJCxcclxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcclxuICAgIF0pLnN1YnNjcmliZShcclxuICAgICAgKFxyXG4gICAgICAgIGJ1bmNoOiBbXHJcbiAgICAgICAgICBib29sZWFuLFxyXG4gICAgICAgICAgeyBlbnRpdHk6IFNlYXJjaFJlc3VsdDsgc3RhdGU6IEVudGl0eVN0YXRlIH1bXSxcclxuICAgICAgICAgIFNlYXJjaFJlc3VsdCxcclxuICAgICAgICAgIFNlYXJjaFJlc3VsdCxcclxuICAgICAgICAgIHN0cmluZyxcclxuICAgICAgICAgIG51bWJlclxyXG4gICAgICAgIF1cclxuICAgICAgKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCA9IGJ1bmNoWzBdO1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBidW5jaFsxXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuY2xlYXJGZWF0dXJlRW1waGFzaXMoJ3Nob3duJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd25SZXN1bHRzR2VvbWV0cmllcy5tYXAoKHJlc3VsdCkgPT5cclxuICAgICAgICAgIHRoaXMubWFwLnF1ZXJ5UmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShyZXN1bHQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBmZWF0dXJlVG9IYW5kbGVHZW9tID0gc2VhcmNoUmVzdWx0cy5maWx0ZXIoXHJcbiAgICAgICAgICAocmVzdWx0KSA9PlxyXG4gICAgICAgICAgICByZXN1bHQuZW50aXR5Lm1ldGEuZGF0YVR5cGUgPT09IEZFQVRVUkUgJiZcclxuICAgICAgICAgICAgcmVzdWx0LmVudGl0eS5kYXRhLmdlb21ldHJ5ICYmXHJcbiAgICAgICAgICAgICFyZXN1bHQuc3RhdGUuc2VsZWN0ZWQgJiZcclxuICAgICAgICAgICAgIXJlc3VsdC5zdGF0ZS5mb2N1c2VkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZmVhdHVyZVRvSGFuZGxlR2VvbS5tYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmVudGl0eS5kYXRhLm1ldGEuc3R5bGUgPSBnZXRDb21tb25WZWN0b3JTdHlsZShcclxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmU6IHJlc3VsdC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlIHwgb2xGZWF0dXJlPE9sR2VvbWV0cnk+XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGUsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQuZW50aXR5LnN0eWxlPy5iYXNlID8gcmVzdWx0LmVudGl0eS5zdHlsZS5iYXNlIDoge31cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd25SZXN1bHRzR2VvbWV0cmllcy5wdXNoKHJlc3VsdC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5tYXAucXVlcnlSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlLFxyXG4gICAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRFbXBoYXNpcyhcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5lbnRpdHkgYXMgU2VhcmNoUmVzdWx0PEZlYXR1cmU+LFxyXG4gICAgICAgICAgICAgICAgJ3Nob3duJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmRlYm91bmNlZEVtcHR5JCQgPSB0aGlzLnN0b3JlLnN0YXRlVmlldy5lbXB0eSRcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDE1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChlbXB0eSkgPT4gdGhpcy5kZWJvdW5jZWRFbXB0eSQubmV4dChlbXB0eSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yUmVzdWx0T3V0T2ZWaWV3KCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuc3RhdGUkLFxyXG4gICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkUmVzdWx0JFxyXG4gICAgXSlcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZXN1bHQgPSBidW5jaFsxXSBhcyBTZWFyY2hSZXN1bHQ8RmVhdHVyZT47XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZFJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkUmVzdWx0LmRhdGEuZ2VvbWV0cnkpIHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT2xGZWF0dXJlID0gZmVhdHVyZVRvT2woXHJcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0LmRhdGEsXHJcbiAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE9sRmVhdHVyZUV4dGVudCA9IGNvbXB1dGVPbEZlYXR1cmVzRXh0ZW50KFxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRPbEZlYXR1cmVdLFxyXG4gICAgICAgICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQubmV4dChcclxuICAgICAgICAgICAgZmVhdHVyZXNBcmVPdXRPZlZpZXcodGhpcy5tYXAuZ2V0RXh0ZW50KCksIHNlbGVjdGVkT2xGZWF0dXJlRXh0ZW50KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFJlc3VsdEVtcGhhc2lzKFxyXG4gICAgcmVzdWx0OiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sXHJcbiAgICB0cmlnZ2VyOiAnc2VsZWN0ZWQnIHwgJ2ZvY3VzZWQnIHwgJ3Nob3duJyB8IHVuZGVmaW5lZFxyXG4gICkge1xyXG4gICAgaWYgKHRyaWdnZXIgIT09ICdzaG93bicpIHtcclxuICAgICAgdGhpcy5jbGVhckZlYXR1cmVFbXBoYXNpcyh0cmlnZ2VyKTtcclxuICAgIH1cclxuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQuZGF0YS5nZW9tZXRyeSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBteU9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKHJlc3VsdC5kYXRhLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBteU9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmZWF0dXJlc0FyZVRvb0RlZXBJblZpZXcoXHJcbiAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIsXHJcbiAgICAgICAgb2xHZW9tZXRyeS5nZXRFeHRlbnQoKSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcclxuICAgICAgICAwLjAwMjVcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IGV4dGVudCA9IG9sR2VvbWV0cnkuZ2V0RXh0ZW50KCk7XHJcbiAgICAgIGNvbnN0IHggPSBleHRlbnRbMF0gKyAoZXh0ZW50WzJdIC0gZXh0ZW50WzBdKSAvIDI7XHJcbiAgICAgIGNvbnN0IHkgPSBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDI7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmUxID0gbmV3IG9sRmVhdHVyZSh7XHJcbiAgICAgICAgbmFtZTogYCR7dHJpZ2dlcn1BYnN0cmFjdFJlc3VsdCdgLFxyXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgb2xQb2ludChbeCwgeV0pXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBhYnN0cmFjdFJlc3VsdCA9IGZlYXR1cmVGcm9tT2woZmVhdHVyZTEsIHRoaXMubWFwLnByb2plY3Rpb24pO1xyXG5cclxuICAgICAgbGV0IGNvbXB1dGVkU3R5bGU7XHJcbiAgICAgIGxldCB6SW5kZXhPZmZzZXQgPSAwO1xyXG5cclxuICAgICAgc3dpdGNoICh0cmlnZ2VyKSB7XHJcbiAgICAgICAgY2FzZSAnZm9jdXNlZCc6XHJcbiAgICAgICAgICBjb21wdXRlZFN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICB7IGZlYXR1cmU6IGFic3RyYWN0UmVzdWx0IH0sXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcclxuICAgICAgICAgICAgICByZXN1bHQuc3R5bGU/LmZvY3VzID8gcmVzdWx0LnN0eWxlLmZvY3VzIDoge31cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHpJbmRleE9mZnNldCA9IDI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzaG93bic6XHJcbiAgICAgICAgICBjb21wdXRlZFN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU3R5bGUoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgeyBmZWF0dXJlOiBhYnN0cmFjdFJlc3VsdCB9LFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlLFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uYmFzZSA/IHJlc3VsdC5zdHlsZS5iYXNlIDoge31cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3NlbGVjdGVkJzpcclxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgIHsgZmVhdHVyZTogYWJzdHJhY3RSZXN1bHQgfSxcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZVNlbGVjdGlvbixcclxuICAgICAgICAgICAgICByZXN1bHQuc3R5bGU/LnNlbGVjdGlvbiA/IHJlc3VsdC5zdHlsZS5zZWxlY3Rpb24gOiB7fVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgekluZGV4T2Zmc2V0ID0gMTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGFic3RyYWN0UmVzdWx0Lm1ldGEuc3R5bGUgPSBjb21wdXRlZFN0eWxlO1xyXG4gICAgICBhYnN0cmFjdFJlc3VsdC5tZXRhLnN0eWxlLnNldFpJbmRleCgyMDAwICsgekluZGV4T2Zmc2V0KTtcclxuICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuYWRkRmVhdHVyZShcclxuICAgICAgICBhYnN0cmFjdFJlc3VsdCxcclxuICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRyaWdnZXIgPT09ICdmb2N1c2VkJykge1xyXG4gICAgICAgIHRoaXMuYWJzdHJhY3RGb2N1c2VkUmVzdWx0ID0gYWJzdHJhY3RSZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRyaWdnZXIgPT09ICdzZWxlY3RlZCcpIHtcclxuICAgICAgICB0aGlzLmFic3RyYWN0U2VsZWN0ZWRSZXN1bHQgPSBhYnN0cmFjdFJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ3Nob3duJykge1xyXG4gICAgICAgIHRoaXMuc2hvd25SZXN1bHRzRW1waGFzaXNHZW9tZXRyaWVzLnB1c2goYWJzdHJhY3RSZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyRmVhdHVyZUVtcGhhc2lzKHRyaWdnZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckZlYXR1cmVFbXBoYXNpcyh0cmlnZ2VyOiAnc2VsZWN0ZWQnIHwgJ2ZvY3VzZWQnIHwgJ3Nob3duJykge1xyXG4gICAgaWYgKHRyaWdnZXIgPT09ICdmb2N1c2VkJyAmJiB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCkge1xyXG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHRoaXMuYWJzdHJhY3RGb2N1c2VkUmVzdWx0KTtcclxuICAgICAgdGhpcy5hYnN0cmFjdEZvY3VzZWRSZXN1bHQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHJpZ2dlciA9PT0gJ3NlbGVjdGVkJyAmJiB0aGlzLmFic3RyYWN0U2VsZWN0ZWRSZXN1bHQpIHtcclxuICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZSh0aGlzLmFic3RyYWN0U2VsZWN0ZWRSZXN1bHQpO1xyXG4gICAgICB0aGlzLmFic3RyYWN0U2VsZWN0ZWRSZXN1bHQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHJpZ2dlciA9PT0gJ3Nob3duJykge1xyXG4gICAgICB0aGlzLnNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllcy5tYXAoKHNob3duUmVzdWx0KSA9PlxyXG4gICAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LnJlbW92ZUZlYXR1cmUoc2hvd25SZXN1bHQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2hvd25SZXN1bHRzRW1waGFzaXNHZW9tZXRyaWVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudG9wUGFuZWxTdGF0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQkKSB7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zaG93UmVzdWx0c0dlb21ldHJpZXMkJCkge1xyXG4gICAgICB0aGlzLnNob3dSZXN1bHRzR2VvbWV0cmllcyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5nZXRSb3V0ZSQkKSB7XHJcbiAgICAgIHRoaXMuZ2V0Um91dGUkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VkRW1wdHkkJCkge1xyXG4gICAgICB0aGlzLmRlYm91bmNlZEVtcHR5JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgd2hlbiBpdCdzIGJlaW5nIGZvY3VzZWRcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZVxyXG4gICAqL1xyXG4gIG9uUmVzdWx0Rm9jdXMocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQubmV4dChyZXN1bHQpO1xyXG4gICAgaWYgKHJlc3VsdC5tZXRhLmRhdGFUeXBlID09PSBGRUFUVVJFICYmIHJlc3VsdC5kYXRhLmdlb21ldHJ5KSB7XHJcbiAgICAgIHJlc3VsdC5kYXRhLm1ldGEuc3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICB7fSxcclxuICAgICAgICAgIHsgZmVhdHVyZTogcmVzdWx0LmRhdGEgYXMgRmVhdHVyZSB8IG9sRmVhdHVyZTxPbEdlb21ldHJ5PiB9LFxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcclxuICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGZlYXR1cmUgPVxyXG4gICAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQoXHJcbiAgICAgICAgICByZXN1bHQubWV0YS5pZFxyXG4gICAgICAgICk7XHJcbiAgICAgIGlmIChmZWF0dXJlKSB7XHJcbiAgICAgICAgZmVhdHVyZS5zZXRTdHlsZShyZXN1bHQuZGF0YS5tZXRhLnN0eWxlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuYWRkRmVhdHVyZShcclxuICAgICAgICByZXN1bHQuZGF0YSBhcyBGZWF0dXJlLFxyXG4gICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXN1bHRVbmZvY3VzKHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XHJcbiAgICB0aGlzLmZvY3VzZWRSZXN1bHQkLm5leHQodW5kZWZpbmVkKTtcclxuICAgIGlmIChyZXN1bHQubWV0YS5kYXRhVHlwZSAhPT0gRkVBVFVSRSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkuc2VsZWN0ZWQgPT09IHRydWUpIHtcclxuICAgICAgY29uc3QgZmVhdHVyZSA9XHJcbiAgICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZChcclxuICAgICAgICAgIHJlc3VsdC5tZXRhLmlkXHJcbiAgICAgICAgKTtcclxuICAgICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgeyBmZWF0dXJlOiByZXN1bHQuZGF0YSBhcyBGZWF0dXJlIHwgb2xGZWF0dXJlPE9sR2VvbWV0cnk+IH0sXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlRm9jdXMsXHJcbiAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZmVhdHVyZS5zZXRTdHlsZShzdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShyZXN1bHQuZGF0YSBhcyBGZWF0dXJlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgd2hlbiBpdCdzIGJlaW5nIHNlbGVjdGVkXHJcbiAgICogQGludGVybmFsXHJcbiAgICogQHBhcmFtIHJlc3VsdCBBIHNlYXJjaCByZXN1bHQgdGhhdCBjb3VsZCBiZSBhIGZlYXR1cmUgb3Igc29tZSBsYXllciBvcHRpb25zXHJcbiAgICovXHJcbiAgb25SZXN1bHRTZWxlY3QocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmRhdGFTb3VyY2Uub2wuY2xlYXIoKTtcclxuICAgIHRoaXMudHJ5QWRkRmVhdHVyZVRvTWFwKHJlc3VsdCk7XHJcbiAgICB0aGlzLnNlYXJjaFN0YXRlLnNldFNlbGVjdGVkUmVzdWx0KHJlc3VsdCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9wUGFuZWxTdGF0ZSA9PT0gJ2luaXRpYWwnKSB7XHJcbiAgICAgIGlmICh0aGlzLnRvcFBhbmVsU3RhdGVEZWZhdWx0ICE9PSAnY29sbGFwc2VkJykge1xyXG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdleHBhbmRlZCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2NvbGxhcHNlZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlID09PSAnZXhwYW5kZWQnKSB7XHJcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmNvbXB1dGVFbGVtZW50UmVmKClbMF07XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzFdO1xyXG4gICAgICBpZiAoIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGlnb0xpc3QsIHNlbGVjdGVkKSkge1xyXG4gICAgICAgIHRoaXMuYWRqdXN0VG9wUGFuZWwoaWdvTGlzdCwgc2VsZWN0ZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChldmVudDogeyByZXNlYXJjaDogUmVzZWFyY2g7IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdIH0pIHtcclxuICAgIGNvbnN0IHJlc3VsdHMgPSBldmVudC5yZXN1bHRzO1xyXG4gICAgY29uc3QgbmV3UmVzdWx0cyA9IHRoaXMuc3RvcmUuZW50aXRpZXMkLnZhbHVlXHJcbiAgICAgIC5maWx0ZXIoKHJlc3VsdDogU2VhcmNoUmVzdWx0KSA9PiByZXN1bHQuc291cmNlICE9PSBldmVudC5yZXNlYXJjaC5zb3VyY2UpXHJcbiAgICAgIC5jb25jYXQocmVzdWx0cyk7XHJcblxyXG4gICAgdGhpcy5zdG9yZS5sb2FkKG5ld1Jlc3VsdHMpO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmVzIG9mIHRoaXMuc3RvcmUuYWxsKCkpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcykuZm9jdXNlZCA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcykuc2VsZWN0ZWQgIT09IHRydWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUocmVzLCB7IGZvY3VzZWQ6IGZhbHNlIH0sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaWdvLWxpc3QnKTtcclxuICAgICAgbGV0IG1vcmVSZXN1bHRzO1xyXG4gICAgICBldmVudC5yZXNlYXJjaC5yZXF1ZXN0LnN1YnNjcmliZSgoc291cmNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzb3VyY2VbMF0gfHwgIXNvdXJjZVswXS5zb3VyY2UpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ2ljaGVyY2hlJykge1xyXG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy5pY2hlcmNoZSAubW9yZVJlc3VsdHMnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ2lsYXllcicpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKCcuaWxheWVyIC5tb3JlUmVzdWx0cycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlWzBdLnNvdXJjZS5nZXRJZCgpID09PSAnbm9taW5hdGltJykge1xyXG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy5ub21pbmF0aW0gLm1vcmVSZXN1bHRzJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICAnLicgKyBzb3VyY2VbMF0uc291cmNlLmdldElkKCkgKyAnIC5tb3JlUmVzdWx0cydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBtb3JlUmVzdWx0cyAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGlnb0xpc3QsIG1vcmVSZXN1bHRzKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWdvTGlzdC5zY3JvbGxUb3AgPVxyXG4gICAgICAgICAgICBtb3JlUmVzdWx0cy5vZmZzZXRUb3AgK1xyXG4gICAgICAgICAgICBtb3JlUmVzdWx0cy5vZmZzZXRIZWlnaHQgLVxyXG4gICAgICAgICAgICBpZ29MaXN0LmNsaWVudEhlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIGNvbXB1dGVFbGVtZW50UmVmKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0nKTtcclxuICAgIGNvbnN0IGlnb0xpc3QgPVxyXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lnby1saXN0JylbMF07XHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpdGVtc1tpXS5jbGFzc05hbWUuaW5jbHVkZXMoJ2lnby1saXN0LWl0ZW0tc2VsZWN0ZWQnKSkge1xyXG4gICAgICAgIHNlbGVjdGVkSXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2lnb0xpc3QsIHNlbGVjdGVkSXRlbV07XHJcbiAgfVxyXG5cclxuICBhZGp1c3RUb3BQYW5lbChlbGVtU291cmNlLCBlbGVtKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pKSB7XHJcbiAgICAgIGVsZW1Tb3VyY2Uuc2Nyb2xsVG9wID1cclxuICAgICAgICBlbGVtLm9mZnNldFRvcCArXHJcbiAgICAgICAgZWxlbS5jaGlsZHJlblswXS5vZmZzZXRIZWlnaHQgLVxyXG4gICAgICAgIGVsZW1Tb3VyY2UuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVG9wUGFuZWwoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgKGV2ZW50LnRhcmdldCBhcyBhbnkpPy5jbGFzc05hbWUgIT09ICdpZ28tcGFuZWwtdGl0bGUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRvcFBhbmVsU3RhdGUgPT09ICdleHBhbmRlZCcpIHtcclxuICAgICAgICB0aGlzLnRvcFBhbmVsU3RhdGUgPSAnY29sbGFwc2VkJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvcFBhbmVsU3RhdGUgPSAnZXhwYW5kZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB6b29tVG9GZWF0dXJlRXh0ZW50KCkge1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZS5nZW9tZXRyeSkge1xyXG4gICAgICBjb25zdCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKHRoaXMuZmVhdHVyZSwge1xyXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB0aGlzLmZlYXR1cmUucHJvamVjdGlvbixcclxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvbkNvZGVcclxuICAgICAgfSk7XHJcbiAgICAgIG1vdmVUb09sRmVhdHVyZXMoXHJcbiAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIsXHJcbiAgICAgICAgW2xvY2FsT2xGZWF0dXJlXSxcclxuICAgICAgICBGZWF0dXJlTW90aW9uLlpvb21cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgb3ZlcmxheVxyXG4gICAqIEBwYXJhbSByZXN1bHQgQSBzZWFyY2ggcmVzdWx0IHRoYXQgY291bGQgYmUgYSBmZWF0dXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cnlBZGRGZWF0dXJlVG9NYXAocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIGlmIChyZXN1bHQubWV0YS5kYXRhVHlwZSAhPT0gRkVBVFVSRSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmVhdHVyZSA9IChyZXN1bHQgYXMgU2VhcmNoUmVzdWx0PEZlYXR1cmU+KS5kYXRhO1xyXG5cclxuICAgIC8vIFNvbWV0aGltZXMgZmVhdHVyZXMgaGF2ZSBubyBnZW9tZXRyeS4gSXQgaGFwcGVucyB3aXRoIHNvbWUgR2V0RmVhdHVyZUluZm9cclxuICAgIGlmICghZmVhdHVyZS5nZW9tZXRyeSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZmVhdHVyZS5tZXRhLnN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICB7fSxcclxuICAgICAgICB7IGZlYXR1cmUgfSxcclxuICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZVNlbGVjdGlvbixcclxuICAgICAgICByZXN1bHQuc3R5bGU/LnNlbGVjdGlvbiA/IHJlc3VsdC5zdHlsZS5zZWxlY3Rpb24gOiB7fVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmFkZEZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgfVxyXG5cclxuICBpc1Njcm9sbGVkSW50b1ZpZXcoZWxlbVNvdXJjZSwgZWxlbSkge1xyXG4gICAgY29uc3QgcGFkZGluZyA9IDY7XHJcbiAgICBjb25zdCBkb2NWaWV3VG9wID0gZWxlbVNvdXJjZS5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIGVsZW1Tb3VyY2UuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGVsZW1Ub3AgPSBlbGVtLm9mZnNldFRvcDtcclxuICAgIGNvbnN0IGVsZW1Cb3R0b20gPSBlbGVtVG9wICsgZWxlbS5jbGllbnRIZWlnaHQgKyBwYWRkaW5nO1xyXG4gICAgcmV0dXJuIGVsZW1Cb3R0b20gPD0gZG9jVmlld0JvdHRvbSAmJiBlbGVtVG9wID49IGRvY1ZpZXdUb3A7XHJcbiAgfVxyXG5cclxuICBnZXRSb3V0ZSgpIHtcclxuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdkaXJlY3Rpb25zJyk7XHJcbiAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuY2xlYXJTdG9wcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCByb3V0aW5nQ29vcmRMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuZ2V0Um91dGUkJCkge1xyXG4gICAgICAgIHRoaXMuZ2V0Um91dGUkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0Um91dGUkJCA9XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLnN1YnNjcmliZShcclxuICAgICAgICAgIChpbml0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQudmFsdWUgJiZcclxuICAgICAgICAgICAgICAhcm91dGluZ0Nvb3JkTG9hZGVkXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHJvdXRpbmdDb29yZExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3RvcCA9IHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZVxyXG4gICAgICAgICAgICAgICAgLmFsbCgpXHJcbiAgICAgICAgICAgICAgICAuZmluZCgoZSkgPT4gZS5wb3NpdGlvbiA9PT0gMSk7XHJcbiAgICAgICAgICAgICAgbGV0IGNvb3JkO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xyXG4gICAgICAgICAgICAgICAgICBjb29yZCA9IFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBwb2ludCA9IHBvaW50T25GZWF0dXJlKHRoaXMuZmVhdHVyZS5nZW9tZXRyeSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvb3JkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHN0b3AudGV4dCA9IHRoaXMuZmVhdHVyZVRpdGxlO1xyXG4gICAgICAgICAgICAgIHN0b3AuY29vcmRpbmF0ZXMgPSBjb29yZDtcclxuICAgICAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUudXBkYXRlKHN0b3ApO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmVcclxuICAgICAgICAgICAgICAgICAgLmFsbCgpXHJcbiAgICAgICAgICAgICAgICAgIC5maW5kKChlKSA9PiBlLnBvc2l0aW9uID09PSAwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oXHJcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcclxuICAgICAgICAgICAgICAgICAgJ0VQU0c6NDMyNidcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb29yZDogW251bWJlciwgbnVtYmVyXSA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgICAgICAgICAgICAgW2N1cnJlbnRDb29yZFswXSwgY3VycmVudENvb3JkWzFdXSxcclxuICAgICAgICAgICAgICAgICAgNlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHN0b3AudGV4dCA9IGNvb3JkLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICAgIHN0b3AuY29vcmRpbmF0ZXMgPSBjb29yZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS51cGRhdGUoc3RvcCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sIDI1MCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cIighc3RvcmUgfHwgc3RvcmUuc3RhdGVWaWV3LmVtcHR5KSAmJiAoZGVib3VuY2VkRW1wdHkkIHwgYXN5bmMpXCJcclxuICBzdHlsZT1cIm1hcmdpbjogMTBweFwiXHJcbj5cclxuICA8c2VjdGlvbiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgICA8aDQ+XHJcbiAgICAgIDxzdHJvbmc+e3tcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLnNlYXJjaFJlc3VsdHNUb29sLm5vUmVzdWx0cycgfCB0cmFuc2xhdGVcclxuICAgICAgfX08L3N0cm9uZz5cclxuICAgIDwvaDQ+XHJcbiAgICA8cD5cclxuICAgICAgPHN0cm9uZz57e1xyXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuZG9TZWFyY2gnIHwgdHJhbnNsYXRlXHJcbiAgICAgIH19PC9zdHJvbmc+XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5leGFtcGxlcycgfCB0cmFuc2xhdGUgfCBzYW5pdGl6ZUh0bWxcclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuPGlnby1mbGV4aWJsZVxyXG4gICpuZ0lmPVwiKGRlYm91bmNlZEVtcHR5JCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxyXG4gICN0b3BQYW5lbFxyXG4gIGluaXRpYWw9XCIxMDAlXCJcclxuICBpbml0aWFsTW9iaWxlPVwiMTAwJVwiXHJcbiAgY29sbGFwc2VkPVwiY2FsYygxMDAlIC0gNThweClcIlxyXG4gIGNvbGxhcHNlZE1vYmlsZT1cImNhbGMoMTAwJSAtIDU4cHgpXCJcclxuICBleHBhbmRlZD1cIjYwJVwiXHJcbiAgZXhwYW5kZWRNb2JpbGU9XCI2MCVcIlxyXG4gIFtzdGF0ZV09XCIoZmVhdHVyZSQgfCBhc3luYykgPyB0b3BQYW5lbFN0YXRlIDogJ2luaXRpYWwnXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpZ28tY29udGVudFwiPlxyXG4gICAgPGlnby1zZWFyY2gtcmVzdWx0c1xyXG4gICAgICBbc3RvcmVdPVwic3RvcmVcIlxyXG4gICAgICBbc2hvd0ljb25zXT1cInNob3dJY29uc1wiXHJcbiAgICAgIFt0ZXJtXT1cInRlcm1cIlxyXG4gICAgICBbdGVybVNwbGl0dGVyXT1cInRlcm1TcGxpdHRlclwiXHJcbiAgICAgIFtzZXR0aW5nc0NoYW5nZSRdPVwic2V0dGluZ3NDaGFuZ2UkXCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJmYWxzZVwiXHJcbiAgICAgIChyZXN1bHRGb2N1cyk9XCJvblJlc3VsdEZvY3VzKCRldmVudClcIlxyXG4gICAgICAocmVzdWx0U2VsZWN0KT1cIm9uUmVzdWx0U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAocmVzdWx0VW5mb2N1cyk9XCJvblJlc3VsdFVuZm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgIChyZXN1bHRNb3VzZWVudGVyKT1cIm9uUmVzdWx0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgIChyZXN1bHRNb3VzZWxlYXZlKT1cIm9uUmVzdWx0VW5mb2N1cygkZXZlbnQpXCJcclxuICAgICAgKG1vcmVSZXN1bHRzKT1cIm9uU2VhcmNoKCRldmVudClcIlxyXG4gICAgICBbbWFwXT1cIm1hcFwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvU2VhcmNoSXRlbVRvb2xiYXIgbGV0LXJlc3VsdD1cInJlc3VsdFwiPlxyXG4gICAgICAgIDxpZ28tc2VhcmNoLWFkZC1idXR0b25cclxuICAgICAgICAgIFttYXBdPVwibWFwXCJcclxuICAgICAgICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICAgICAgICBbc3RvcmVzXT1cInN0b3Jlc1wiXHJcbiAgICAgICAgICBbbGF5ZXJdPVwicmVzdWx0XCJcclxuICAgICAgICAgIFtzYXZlU2VhcmNoUmVzdWx0SW5MYXllcl09XCJzYXZlU2VhcmNoUmVzdWx0SW5MYXllclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvaWdvLXNlYXJjaC1hZGQtYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9pZ28tc2VhcmNoLXJlc3VsdHM+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgaWdvRmxleGlibGVGaWxsIGNsYXNzPVwiaWdvLWNvbnRlbnRcIj5cclxuICAgIDxpZ28tcGFuZWxcclxuICAgICAgW3RpdGxlXT1cImZlYXR1cmVUaXRsZVwiXHJcbiAgICAgICpuZ0lmPVwiZmVhdHVyZSQgfCBhc3luY1wiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVUb3BQYW5lbCgkZXZlbnQpXCJcclxuICAgICAgW2N1cnNvclBvaW50ZXJdPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBwYW5lbExlZnRCdXR0b25cclxuICAgICAgICBjbGFzcz1cImlnby1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRvcFBhbmVsKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICBbc3ZnSWNvbl09XCJcclxuICAgICAgICAgICAgKHRvcFBhbmVsU3RhdGUkIHwgYXN5bmMpID09PSAnY29sbGFwc2VkJyA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiZmVhdHVyZS5nZW9tZXRyeVwiXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgcGFuZWxSaWdodEJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiaWdvLWljb24tYnV0dG9uXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJcclxuICAgICAgICAgICgoaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQgfCBhc3luYylcclxuICAgICAgICAgICAgPyAnaWdvLmludGVncmF0aW9uLnNlYXJjaFJlc3VsdHNUb29sLnpvb21PbkZlYXR1cmVUb29sdGlwT3V0T2ZWaWV3J1xyXG4gICAgICAgICAgICA6ICdpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuem9vbU9uRmVhdHVyZVRvb2x0aXAnXHJcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICAoY2xpY2spPVwiem9vbVRvRmVhdHVyZUV4dGVudCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckIHwgYXN5bmMpID8gJyEnIDogJydcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXHJcbiAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckIHwgYXN5bmMpID09PSBmYWxzZVwiXHJcbiAgICAgICAgICBzdmdJY29uPVwibWFnbmlmeS1wbHVzLW91dGxpbmVcIlxyXG4gICAgICAgID48L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxpZ28tZmVhdHVyZS1kZXRhaWxzXHJcbiAgICAgICAgaWdvRmVhdHVyZURldGFpbHNEaXJlY3RpdmVcclxuICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlJCB8IGFzeW5jXCJcclxuICAgICAgICBbbWFwXT1cIm1hcFwiXHJcbiAgICAgICAgW3Rvb2xib3hdPVwidG9vbFN0YXRlLnRvb2xib3hcIlxyXG4gICAgICAgIChyb3V0aW5nRXZlbnQpPVwiZ2V0Um91dGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZ28tZmVhdHVyZS1kZXRhaWxzPlxyXG4gICAgPC9pZ28tcGFuZWw+XHJcbiAgPC9kaXY+XHJcbjwvaWdvLWZsZXhpYmxlPlxyXG4iXX0=
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy10b29sL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtdG9vbC9zZWFyY2gtcmVzdWx0cy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxpQkFBaUIsRUFFakIsYUFBYSxFQUNiLGNBQWMsRUFDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxPQUFPLEVBRVAsYUFBYSxFQUtiLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBNEIsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZ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QUFFLFNBQVM7S0FDaEIsQ0FBQztxQ0FpR29CLFFBQVE7UUFDTCxXQUFXO1FBQ2pCLFVBQVU7UUFDUCxTQUFTO1FBQ0gsY0FBYztRQUN2QixhQUFhO0dBaEduQiwwQkFBMEIsQ0EwcEJ0Qzs0RkExcEJZLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU07bU9BTXRDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQWdFRixhQUFhO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEVudGl0eVN0YXRlLFxyXG4gIEVudGl0eVN0b3JlLFxyXG4gIEZsZXhpYmxlQ29tcG9uZW50LFxyXG4gIEZsZXhpYmxlU3RhdGUsXHJcbiAgVG9vbENvbXBvbmVudCxcclxuICBnZXRFbnRpdHlUaXRsZVxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGRUFUVVJFLFxyXG4gIEZlYXR1cmUsXHJcbiAgRmVhdHVyZU1vdGlvbixcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgSWdvTWFwLFxyXG4gIFJlc2VhcmNoLFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCxcclxuICBmZWF0dXJlRnJvbU9sLFxyXG4gIGZlYXR1cmVUb09sLFxyXG4gIGZlYXR1cmVzQXJlT3V0T2ZWaWV3LFxyXG4gIGZlYXR1cmVzQXJlVG9vRGVlcEluVmlldyxcclxuICBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlLFxyXG4gIGdldENvbW1vblZlY3RvclN0eWxlLFxyXG4gIG1vdmVUb09sRmVhdHVyZXMsXHJcbiAgcm91bmRDb29yZFRvXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuXHJcbmltcG9ydCBvbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XHJcbmltcG9ydCBvbEZvcm1hdEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgb2xQb2ludCBmcm9tICdvbC9nZW9tL1BvaW50JztcclxuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xyXG5cclxuaW1wb3J0IHBvaW50T25GZWF0dXJlIGZyb20gJ0B0dXJmL3BvaW50LW9uLWZlYXR1cmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IERpcmVjdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aW9ucy9kaXJlY3Rpb25zLnN0YXRlJztcclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcclxuaW1wb3J0IHsgU2VhcmNoU3RhdGUgfSBmcm9tICcuLi9zZWFyY2guc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2wgdG8gYnJvd3NlIHRoZSBzZWFyY2ggcmVzdWx0c1xyXG4gKi9cclxuQFRvb2xDb21wb25lbnQoe1xyXG4gIG5hbWU6ICdzZWFyY2hSZXN1bHRzJyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5zZWFyY2hSZXN1bHRzJyxcclxuICBpY29uOiAnbWFnbmlmeSdcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiB0byBzaG93IGhpZGUgcmVzdWx0cyBpY29uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dJY29uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZSB0aGUgdG9wIHBhbmVsIGRlZmF1bHQgc3RhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0b3BQYW5lbFN0YXRlRGVmYXVsdDogc3RyaW5nID0gJ2V4cGFuZGVkJztcclxuXHJcbiAgcHJpdmF0ZSBoYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzYXZlU2VhcmNoUmVzdWx0SW5MYXllcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNob3dSZXN1bHRzR2VvbWV0cmllcyQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzaG93blJlc3VsdHNHZW9tZXRyaWVzOiBGZWF0dXJlW10gPSBbXTtcclxuICBwcml2YXRlIHNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllczogRmVhdHVyZVtdID0gW107XHJcbiAgcHJpdmF0ZSBmb2N1c2VkUmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFJlc3VsdD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuICBwdWJsaWMgaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBwcml2YXRlIGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgYWJzdHJhY3RGb2N1c2VkUmVzdWx0OiBGZWF0dXJlO1xyXG4gIHByaXZhdGUgYWJzdHJhY3RTZWxlY3RlZFJlc3VsdDogRmVhdHVyZTtcclxuXHJcbiAgcHVibGljIGRlYm91bmNlZEVtcHR5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcclxuICBwcml2YXRlIGRlYm91bmNlZEVtcHR5JCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcmUgaG9sZGluZyB0aGUgc2VhcmNoIHJlc3VsdHNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgc3RvcmUoKTogRW50aXR5U3RvcmU8U2VhcmNoUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCB0byBkaXNwbGF5IHRoZSByZXN1bHRzIG9uXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZlYXR1cmVUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZSA/IGdldEVudGl0eVRpdGxlKHRoaXMuZmVhdHVyZSkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZmVhdHVyZSQoKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZVZpZXdcclxuICAgICAgLmZpcnN0QnkkKChlKSA9PiBlLnN0YXRlLmZvY3VzZWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChcclxuICAgICAgICAgIChlbGVtZW50KSA9PlxyXG4gICAgICAgICAgICAodGhpcy5mZWF0dXJlID0gZWxlbWVudFxyXG4gICAgICAgICAgICAgID8gKGVsZW1lbnQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSlcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmVhdHVyZTogRmVhdHVyZTtcclxuXHJcbiAgcHVibGljIHRlcm0gPSAnJztcclxuICBwcml2YXRlIHNlYXJjaFRlcm0kJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwdWJsaWMgc2V0dGluZ3NDaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xyXG5cclxuICBwdWJsaWMgdG9wUGFuZWxTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZsZXhpYmxlU3RhdGU+KCdpbml0aWFsJyk7XHJcbiAgcHJpdmF0ZSB0b3BQYW5lbFN0YXRlJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdG9wUGFuZWxTdGF0ZSh2YWx1ZTogRmxleGlibGVTdGF0ZSkge1xyXG4gICAgdGhpcy50b3BQYW5lbFN0YXRlJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IHRvcFBhbmVsU3RhdGUoKTogRmxleGlibGVTdGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy50b3BQYW5lbFN0YXRlJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0ZXJtU3BsaXR0ZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm1TcGxpdHRlciQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdCA9IG5ldyBvbEZvcm1hdEdlb0pTT04oKTtcclxuXHJcbiAgZ2V0IHN0b3JlcygpOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hMYXllclN0b3JlcztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHNlYXJjaFN0YXRlOiBTZWFyY2hTdGF0ZSxcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgdG9vbFN0YXRlOiBUb29sU3RhdGUsXHJcbiAgICBwcml2YXRlIGRpcmVjdGlvblN0YXRlOiBEaXJlY3Rpb25TdGF0ZSxcclxuICAgIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24gPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZyhcclxuICAgICAgJ2hhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXIgPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZyhcclxuICAgICAgJ3NhdmVTZWFyY2hSZXN1bHRJbkxheWVyJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtJCQgPSB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm0kLnN1YnNjcmliZShcclxuICAgICAgKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHNlYXJjaFRlcm0gIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgc2VhcmNoVGVybSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgc2VhcmNoVGVybSAhPT0gJydcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGVybSA9IHNlYXJjaFRlcm07XHJcbiAgICAgICAgICB0aGlzLmRlYm91bmNlZEVtcHR5JC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaFRlcm0gPT09ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLmRlYm91bmNlZEVtcHR5JC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHJlcyBvZiB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwkKCkudmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcy5lbnRpdHkpLnNlbGVjdGVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2V4cGFuZGVkJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoU2V0dGluZ3NDaGFuZ2UkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2UkLm5leHQodHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRvcFBhbmVsU3RhdGUkJCA9IHRoaXMudG9wUGFuZWxTdGF0ZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgaWdvTGlzdCA9IHRoaXMuY29tcHV0ZUVsZW1lbnRSZWYoKVswXTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNvbXB1dGVFbGVtZW50UmVmKClbMV07XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gVG8gYmUgc3VyZSB0aGUgZmxleGlibGUgY29tcG9uZW50IGhhcyBiZWVuIGRpc3BsYXllZCB5ZXRcclxuICAgICAgICAgIGlmICghdGhpcy5pc1Njcm9sbGVkSW50b1ZpZXcoaWdvTGlzdCwgc2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRqdXN0VG9wUGFuZWwoaWdvTGlzdCwgc2VsZWN0ZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIEZsZXhpYmxlQ29tcG9uZW50LnRyYW5zaXRpb25UaW1lICsgNTApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbikge1xyXG4gICAgICBpZiAoIXRoaXMuc2VhcmNoU3RhdGUuZm9jdXNlZE9yUmVzb2x1dGlvbiQkKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5mb2N1c2VkT3JSZXNvbHV0aW9uJCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQsXHJcbiAgICAgICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJFxyXG4gICAgICAgIF0pLnN1YnNjcmliZSgoYnVuY2g6IFtTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sIG51bWJlcl0pID0+XHJcbiAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0RW1waGFzaXMoYnVuY2hbMF0sICdmb2N1c2VkJylcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRPclJlc29sdXRpb24kJCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRPclJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZFJlc3VsdCQsXHJcbiAgICAgICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJFxyXG4gICAgICAgIF0pLnN1YnNjcmliZSgoYnVuY2g6IFtTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sIG51bWJlcl0pID0+XHJcbiAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0RW1waGFzaXMoYnVuY2hbMF0sICdzZWxlY3RlZCcpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5tb25pdG9yUmVzdWx0T3V0T2ZWaWV3KCk7XHJcblxyXG4gICAgdGhpcy5zaG93UmVzdWx0c0dlb21ldHJpZXMkJCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQkLFxyXG4gICAgICB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwkKCksXHJcbiAgICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQsXHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRSZXN1bHQkLFxyXG4gICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm0kLFxyXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJFxyXG4gICAgXSkuc3Vic2NyaWJlKFxyXG4gICAgICAoXHJcbiAgICAgICAgYnVuY2g6IFtcclxuICAgICAgICAgIGJvb2xlYW4sXHJcbiAgICAgICAgICB7IGVudGl0eTogU2VhcmNoUmVzdWx0OyBzdGF0ZTogRW50aXR5U3RhdGUgfVtdLFxyXG4gICAgICAgICAgU2VhcmNoUmVzdWx0LFxyXG4gICAgICAgICAgU2VhcmNoUmVzdWx0LFxyXG4gICAgICAgICAgc3RyaW5nLFxyXG4gICAgICAgICAgbnVtYmVyXHJcbiAgICAgICAgXVxyXG4gICAgICApID0+IHtcclxuICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkID0gYnVuY2hbMF07XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGJ1bmNoWzFdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5jbGVhckZlYXR1cmVFbXBoYXNpcygnc2hvd24nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93blJlc3VsdHNHZW9tZXRyaWVzLm1hcCgocmVzdWx0KSA9PlxyXG4gICAgICAgICAgdGhpcy5tYXAucXVlcnlSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHJlc3VsdClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUb0hhbmRsZUdlb20gPSBzZWFyY2hSZXN1bHRzLmZpbHRlcihcclxuICAgICAgICAgIChyZXN1bHQpID0+XHJcbiAgICAgICAgICAgIHJlc3VsdC5lbnRpdHkubWV0YS5kYXRhVHlwZSA9PT0gRkVBVFVSRSAmJlxyXG4gICAgICAgICAgICByZXN1bHQuZW50aXR5LmRhdGEuZ2VvbWV0cnkgJiZcclxuICAgICAgICAgICAgIXJlc3VsdC5zdGF0ZS5zZWxlY3RlZCAmJlxyXG4gICAgICAgICAgICAhcmVzdWx0LnN0YXRlLmZvY3VzZWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBmZWF0dXJlVG9IYW5kbGVHZW9tLm1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCkge1xyXG4gICAgICAgICAgICByZXN1bHQuZW50aXR5LmRhdGEubWV0YS5zdHlsZSA9IGdldENvbW1vblZlY3RvclN0eWxlKFxyXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZTogcmVzdWx0LmVudGl0eS5kYXRhIGFzIEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZSxcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5lbnRpdHkuc3R5bGU/LmJhc2UgPyByZXN1bHQuZW50aXR5LnN0eWxlLmJhc2UgOiB7fVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93blJlc3VsdHNHZW9tZXRyaWVzLnB1c2gocmVzdWx0LmVudGl0eS5kYXRhIGFzIEZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLm1hcC5xdWVyeVJlc3VsdHNPdmVybGF5LmFkZEZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgcmVzdWx0LmVudGl0eS5kYXRhIGFzIEZlYXR1cmUsXHJcbiAgICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5idWlsZFJlc3VsdEVtcGhhc2lzKFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmVudGl0eSBhcyBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sXHJcbiAgICAgICAgICAgICAgICAnc2hvd24nXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkJCA9IHRoaXMuc3RvcmUuc3RhdGVWaWV3LmVtcHR5JFxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVtcHR5KSA9PiB0aGlzLmRlYm91bmNlZEVtcHR5JC5uZXh0KGVtcHR5KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vbml0b3JSZXN1bHRPdXRPZlZpZXcoKSB7XHJcbiAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckJCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5zdGF0ZSQsXHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRSZXN1bHQkXHJcbiAgICBdKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoYnVuY2gpID0+IHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFJlc3VsdCA9IGJ1bmNoWzFdIGFzIFNlYXJjaFJlc3VsdDxGZWF0dXJlPjtcclxuICAgICAgICBpZiAoIXNlbGVjdGVkUmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHQuZGF0YS5nZW9tZXRyeSkge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPbEZlYXR1cmUgPSBmZWF0dXJlVG9PbChcclxuICAgICAgICAgICAgc2VsZWN0ZWRSZXN1bHQuZGF0YSxcclxuICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT2xGZWF0dXJlRXh0ZW50ID0gY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQoXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZE9sRmVhdHVyZV0sXHJcbiAgICAgICAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JC5uZXh0KFxyXG4gICAgICAgICAgICBmZWF0dXJlc0FyZU91dE9mVmlldyh0aGlzLm1hcC5nZXRFeHRlbnQoKSwgc2VsZWN0ZWRPbEZlYXR1cmVFeHRlbnQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkUmVzdWx0RW1waGFzaXMoXHJcbiAgICByZXN1bHQ6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPixcclxuICAgIHRyaWdnZXI6ICdzZWxlY3RlZCcgfCAnZm9jdXNlZCcgfCAnc2hvd24nIHwgdW5kZWZpbmVkXHJcbiAgKSB7XHJcbiAgICBpZiAodHJpZ2dlciAhPT0gJ3Nob3duJykge1xyXG4gICAgICB0aGlzLmNsZWFyRmVhdHVyZUVtcGhhc2lzKHRyaWdnZXIpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5kYXRhLmdlb21ldHJ5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG15T2xGZWF0dXJlID0gZmVhdHVyZVRvT2wocmVzdWx0LmRhdGEsIHRoaXMubWFwLnByb2plY3Rpb24pO1xyXG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IG15T2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICBpZiAoXHJcbiAgICAgIGZlYXR1cmVzQXJlVG9vRGVlcEluVmlldyhcclxuICAgICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlcixcclxuICAgICAgICBvbEdlb21ldHJ5LmdldEV4dGVudCgpIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgICAgIDAuMDAyNVxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgZXh0ZW50ID0gb2xHZW9tZXRyeS5nZXRFeHRlbnQoKTtcclxuICAgICAgY29uc3QgeCA9IGV4dGVudFswXSArIChleHRlbnRbMl0gLSBleHRlbnRbMF0pIC8gMjtcclxuICAgICAgY29uc3QgeSA9IGV4dGVudFsxXSArIChleHRlbnRbM10gLSBleHRlbnRbMV0pIC8gMjtcclxuICAgICAgY29uc3QgZmVhdHVyZTEgPSBuZXcgb2xGZWF0dXJlKHtcclxuICAgICAgICBuYW1lOiBgJHt0cmlnZ2VyfUFic3RyYWN0UmVzdWx0J2AsXHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBvbFBvaW50KFt4LCB5XSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGFic3RyYWN0UmVzdWx0ID0gZmVhdHVyZUZyb21PbChmZWF0dXJlMSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcblxyXG4gICAgICBsZXQgY29tcHV0ZWRTdHlsZTtcclxuICAgICAgbGV0IHpJbmRleE9mZnNldCA9IDA7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRyaWdnZXIpIHtcclxuICAgICAgICBjYXNlICdmb2N1c2VkJzpcclxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgIHsgZmVhdHVyZTogYWJzdHJhY3RSZXN1bHQgfSxcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzLFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgekluZGV4T2Zmc2V0ID0gMjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3Nob3duJzpcclxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTdHlsZShcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICB7IGZlYXR1cmU6IGFic3RyYWN0UmVzdWx0IH0sXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGUsXHJcbiAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5iYXNlID8gcmVzdWx0LnN0eWxlLmJhc2UgOiB7fVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc2VsZWN0ZWQnOlxyXG4gICAgICAgICAgY29tcHV0ZWRTdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgeyBmZWF0dXJlOiBhYnN0cmFjdFJlc3VsdCB9LFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlU2VsZWN0aW9uLFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uc2VsZWN0aW9uID8gcmVzdWx0LnN0eWxlLnNlbGVjdGlvbiA6IHt9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB6SW5kZXhPZmZzZXQgPSAxO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgYWJzdHJhY3RSZXN1bHQubWV0YS5zdHlsZSA9IGNvbXB1dGVkU3R5bGU7XHJcbiAgICAgIGFic3RyYWN0UmVzdWx0Lm1ldGEuc3R5bGUuc2V0WkluZGV4KDIwMDAgKyB6SW5kZXhPZmZzZXQpO1xyXG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKFxyXG4gICAgICAgIGFic3RyYWN0UmVzdWx0LFxyXG4gICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuZmVhdHVyZU1vdGlvbi5mb2N1c1xyXG4gICAgICApO1xyXG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ2ZvY3VzZWQnKSB7XHJcbiAgICAgICAgdGhpcy5hYnN0cmFjdEZvY3VzZWRSZXN1bHQgPSBhYnN0cmFjdFJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ3NlbGVjdGVkJykge1xyXG4gICAgICAgIHRoaXMuYWJzdHJhY3RTZWxlY3RlZFJlc3VsdCA9IGFic3RyYWN0UmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnc2hvd24nKSB7XHJcbiAgICAgICAgdGhpcy5zaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXMucHVzaChhYnN0cmFjdFJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xlYXJGZWF0dXJlRW1waGFzaXModHJpZ2dlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyRmVhdHVyZUVtcGhhc2lzKHRyaWdnZXI6ICdzZWxlY3RlZCcgfCAnZm9jdXNlZCcgfCAnc2hvd24nKSB7XHJcbiAgICBpZiAodHJpZ2dlciA9PT0gJ2ZvY3VzZWQnICYmIHRoaXMuYWJzdHJhY3RGb2N1c2VkUmVzdWx0KSB7XHJcbiAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LnJlbW92ZUZlYXR1cmUodGhpcy5hYnN0cmFjdEZvY3VzZWRSZXN1bHQpO1xyXG4gICAgICB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGlmICh0cmlnZ2VyID09PSAnc2VsZWN0ZWQnICYmIHRoaXMuYWJzdHJhY3RTZWxlY3RlZFJlc3VsdCkge1xyXG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHRoaXMuYWJzdHJhY3RTZWxlY3RlZFJlc3VsdCk7XHJcbiAgICAgIHRoaXMuYWJzdHJhY3RTZWxlY3RlZFJlc3VsdCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGlmICh0cmlnZ2VyID09PSAnc2hvd24nKSB7XHJcbiAgICAgIHRoaXMuc2hvd25SZXN1bHRzRW1waGFzaXNHZW9tZXRyaWVzLm1hcCgoc2hvd25SZXN1bHQpID0+XHJcbiAgICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShzaG93blJlc3VsdClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy50b3BQYW5lbFN0YXRlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQpIHtcclxuICAgICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNob3dSZXN1bHRzR2VvbWV0cmllcyQkKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdHNHZW9tZXRyaWVzJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdldFJvdXRlJCQpIHtcclxuICAgICAgdGhpcy5nZXRSb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZWRFbXB0eSQkKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCBhIGZlYXR1cmUgdG8gdGhlIG1hcCB3aGVuIGl0J3MgYmVpbmcgZm9jdXNlZFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqIEBwYXJhbSByZXN1bHQgQSBzZWFyY2ggcmVzdWx0IHRoYXQgY291bGQgYmUgYSBmZWF0dXJlXHJcbiAgICovXHJcbiAgb25SZXN1bHRGb2N1cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xyXG4gICAgdGhpcy5mb2N1c2VkUmVzdWx0JC5uZXh0KHJlc3VsdCk7XHJcbiAgICBpZiAocmVzdWx0Lm1ldGEuZGF0YVR5cGUgPT09IEZFQVRVUkUgJiYgcmVzdWx0LmRhdGEuZ2VvbWV0cnkpIHtcclxuICAgICAgcmVzdWx0LmRhdGEubWV0YS5zdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgeyBmZWF0dXJlOiByZXN1bHQuZGF0YSBhcyBGZWF0dXJlIHwgb2xGZWF0dXJlPE9sR2VvbWV0cnk+IH0sXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzLFxyXG4gICAgICAgICAgcmVzdWx0LnN0eWxlPy5mb2N1cyA/IHJlc3VsdC5zdHlsZS5mb2N1cyA6IHt9XHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgZmVhdHVyZSA9XHJcbiAgICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZChcclxuICAgICAgICAgIHJlc3VsdC5tZXRhLmlkXHJcbiAgICAgICAgKTtcclxuICAgICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgICBmZWF0dXJlLnNldFN0eWxlKHJlc3VsdC5kYXRhLm1ldGEuc3R5bGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKFxyXG4gICAgICAgIHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUsXHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5mZWF0dXJlTW90aW9uLmZvY3VzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlc3VsdFVuZm9jdXMocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgaWYgKHJlc3VsdC5tZXRhLmRhdGFUeXBlICE9PSBGRUFUVVJFKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdG9yZS5zdGF0ZS5nZXQocmVzdWx0KS5zZWxlY3RlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICBjb25zdCBmZWF0dXJlID1cclxuICAgICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5kYXRhU291cmNlLm9sLmdldEZlYXR1cmVCeUlkKFxyXG4gICAgICAgICAgcmVzdWx0Lm1ldGEuaWRcclxuICAgICAgICApO1xyXG4gICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICB7IGZlYXR1cmU6IHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT4gfSxcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcclxuICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5mb2N1cyA/IHJlc3VsdC5zdHlsZS5mb2N1cyA6IHt9XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmZWF0dXJlLnNldFN0eWxlKHN0eWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCBhIGZlYXR1cmUgdG8gdGhlIG1hcCB3aGVuIGl0J3MgYmVpbmcgc2VsZWN0ZWRcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZSBvciBzb21lIGxheWVyIG9wdGlvbnNcclxuICAgKi9cclxuICBvblJlc3VsdFNlbGVjdChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xyXG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuZGF0YVNvdXJjZS5vbC5jbGVhcigpO1xyXG4gICAgdGhpcy50cnlBZGRGZWF0dXJlVG9NYXAocmVzdWx0LCB0aGlzLnNlYXJjaFN0YXRlLmZlYXR1cmVNb3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5zZWFyY2hTdGF0ZS5zZXRTZWxlY3RlZFJlc3VsdChyZXN1bHQpO1xyXG5cclxuICAgIGlmICh0aGlzLnRvcFBhbmVsU3RhdGUgPT09ICdpbml0aWFsJykge1xyXG4gICAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlRGVmYXVsdCAhPT0gJ2NvbGxhcHNlZCcpIHtcclxuICAgICAgICB0aGlzLnRvcFBhbmVsU3RhdGUgPSAnZXhwYW5kZWQnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdjb2xsYXBzZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudG9wUGFuZWxTdGF0ZSA9PT0gJ2V4cGFuZGVkJykge1xyXG4gICAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzBdO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY29tcHV0ZUVsZW1lbnRSZWYoKVsxXTtcclxuICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpZ29MaXN0LCBzZWxlY3RlZCkpIHtcclxuICAgICAgICB0aGlzLmFkanVzdFRvcFBhbmVsKGlnb0xpc3QsIHNlbGVjdGVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgcmVzZWFyY2g6IFJlc2VhcmNoOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9KSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gZXZlbnQucmVzdWx0cztcclxuICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSB0aGlzLnN0b3JlLmVudGl0aWVzJC52YWx1ZVxyXG4gICAgICAuZmlsdGVyKChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkgPT4gcmVzdWx0LnNvdXJjZSAhPT0gZXZlbnQucmVzZWFyY2guc291cmNlKVxyXG4gICAgICAuY29uY2F0KHJlc3VsdHMpO1xyXG5cclxuICAgIHRoaXMuc3RvcmUubG9hZChuZXdSZXN1bHRzKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHJlcyBvZiB0aGlzLnN0b3JlLmFsbCgpKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN0b3JlLnN0YXRlLmdldChyZXMpLmZvY3VzZWQgPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLnN0b3JlLnN0YXRlLmdldChyZXMpLnNlbGVjdGVkICE9PSB0cnVlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUudXBkYXRlKHJlcywgeyBmb2N1c2VkOiBmYWxzZSB9LCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lnby1saXN0Jyk7XHJcbiAgICAgIGxldCBtb3JlUmVzdWx0cztcclxuICAgICAgZXZlbnQucmVzZWFyY2gucmVxdWVzdC5zdWJzY3JpYmUoKHNvdXJjZSkgPT4ge1xyXG4gICAgICAgIGlmICghc291cmNlWzBdIHx8ICFzb3VyY2VbMF0uc291cmNlKSB7XHJcbiAgICAgICAgICBtb3JlUmVzdWx0cyA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VbMF0uc291cmNlLmdldElkKCkgPT09ICdpY2hlcmNoZScpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKCcuaWNoZXJjaGUgLm1vcmVSZXN1bHRzJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VbMF0uc291cmNlLmdldElkKCkgPT09ICdpbGF5ZXInKSB7XHJcbiAgICAgICAgICBtb3JlUmVzdWx0cyA9IGlnb0xpc3QucXVlcnlTZWxlY3RvcignLmlsYXllciAubW9yZVJlc3VsdHMnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ25vbWluYXRpbScpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKCcubm9taW5hdGltIC5tb3JlUmVzdWx0cycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBtb3JlUmVzdWx0cyA9IGlnb0xpc3QucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgJy4nICsgc291cmNlWzBdLnNvdXJjZS5nZXRJZCgpICsgJyAubW9yZVJlc3VsdHMnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgbW9yZVJlc3VsdHMgIT09IG51bGwgJiZcclxuICAgICAgICAgICF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpZ29MaXN0LCBtb3JlUmVzdWx0cylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGlnb0xpc3Quc2Nyb2xsVG9wID1cclxuICAgICAgICAgICAgbW9yZVJlc3VsdHMub2Zmc2V0VG9wICtcclxuICAgICAgICAgICAgbW9yZVJlc3VsdHMub2Zmc2V0SGVpZ2h0IC1cclxuICAgICAgICAgICAgaWdvTGlzdC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0sIDI1MCk7XHJcbiAgfVxyXG5cclxuICBjb21wdXRlRWxlbWVudFJlZigpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lnby1zZWFyY2gtcmVzdWx0cy1pdGVtJyk7XHJcbiAgICBjb25zdCBpZ29MaXN0ID1cclxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZ28tbGlzdCcpWzBdO1xyXG4gICAgbGV0IHNlbGVjdGVkSXRlbTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaXRlbXNbaV0uY2xhc3NOYW1lLmluY2x1ZGVzKCdpZ28tbGlzdC1pdGVtLXNlbGVjdGVkJykpIHtcclxuICAgICAgICBzZWxlY3RlZEl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtpZ29MaXN0LCBzZWxlY3RlZEl0ZW1dO1xyXG4gIH1cclxuXHJcbiAgYWRqdXN0VG9wUGFuZWwoZWxlbVNvdXJjZSwgZWxlbSkge1xyXG4gICAgaWYgKCF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtU291cmNlLCBlbGVtKSkge1xyXG4gICAgICBlbGVtU291cmNlLnNjcm9sbFRvcCA9XHJcbiAgICAgICAgZWxlbS5vZmZzZXRUb3AgK1xyXG4gICAgICAgIGVsZW0uY2hpbGRyZW5bMF0ub2Zmc2V0SGVpZ2h0IC1cclxuICAgICAgICBlbGVtU291cmNlLmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZVRvcFBhbmVsKGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50ICYmIChldmVudC50YXJnZXQgYXMgYW55KT8uY2xhc3NOYW1lICE9PSAnaWdvLXBhbmVsLXRpdGxlJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlID09PSAnZXhwYW5kZWQnKSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2NvbGxhcHNlZCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2V4cGFuZGVkJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbVRvRmVhdHVyZUV4dGVudCgpIHtcclxuICAgIGlmICh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkpIHtcclxuICAgICAgY29uc3QgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmZvcm1hdC5yZWFkRmVhdHVyZSh0aGlzLmZlYXR1cmUsIHtcclxuICAgICAgICBkYXRhUHJvamVjdGlvbjogdGhpcy5mZWF0dXJlLnByb2plY3Rpb24sXHJcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb25Db2RlXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb3ZlVG9PbEZlYXR1cmVzKFxyXG4gICAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLFxyXG4gICAgICAgIFtsb2NhbE9sRmVhdHVyZV0sXHJcbiAgICAgICAgRmVhdHVyZU1vdGlvbi5ab29tXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcnkgdG8gYWRkIGEgZmVhdHVyZSB0byB0aGUgbWFwIG92ZXJsYXlcclxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZVxyXG4gICAqIEBwYXJhbSBtb3Rpb24gQSBGZWF0dXJlTW90aW9uIHRvIHRyaWdnZXIgd2hlbiBhZGRpbmcgdGhlIHNlYXJjaHJlc3VsdCB0byB0aGUgbWFwIHNlYXJjaCBvdmVybGF5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cnlBZGRGZWF0dXJlVG9NYXAoXHJcbiAgICByZXN1bHQ6IFNlYXJjaFJlc3VsdCxcclxuICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbiA9IEZlYXR1cmVNb3Rpb24uRGVmYXVsdFxyXG4gICkge1xyXG4gICAgaWYgKHJlc3VsdC5tZXRhLmRhdGFUeXBlICE9PSBGRUFUVVJFKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmZWF0dXJlID0gKHJlc3VsdCBhcyBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4pLmRhdGE7XHJcblxyXG4gICAgLy8gU29tZXRoaW1lcyBmZWF0dXJlcyBoYXZlIG5vIGdlb21ldHJ5LiBJdCBoYXBwZW5zIHdpdGggc29tZSBHZXRGZWF0dXJlSW5mb1xyXG4gICAgaWYgKCFmZWF0dXJlLmdlb21ldHJ5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBmZWF0dXJlLm1ldGEuc3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxyXG4gICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgIHt9LFxyXG4gICAgICAgIHsgZmVhdHVyZSB9LFxyXG4gICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlU2VsZWN0aW9uLFxyXG4gICAgICAgIHJlc3VsdC5zdHlsZT8uc2VsZWN0aW9uID8gcmVzdWx0LnN0eWxlLnNlbGVjdGlvbiA6IHt9XHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuYWRkRmVhdHVyZShmZWF0dXJlLCBtb3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pIHtcclxuICAgIGNvbnN0IHBhZGRpbmcgPSA2O1xyXG4gICAgY29uc3QgZG9jVmlld1RvcCA9IGVsZW1Tb3VyY2Uuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgZG9jVmlld0JvdHRvbSA9IGRvY1ZpZXdUb3AgKyBlbGVtU291cmNlLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICBjb25zdCBlbGVtVG9wID0gZWxlbS5vZmZzZXRUb3A7XHJcbiAgICBjb25zdCBlbGVtQm90dG9tID0gZWxlbVRvcCArIGVsZW0uY2xpZW50SGVpZ2h0ICsgcGFkZGluZztcclxuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um91dGUoKSB7XHJcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnZGlyZWN0aW9ucycpO1xyXG4gICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLmNsZWFyU3RvcHMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgcm91dGluZ0Nvb3JkTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmdldFJvdXRlJCQpIHtcclxuICAgICAgICB0aGlzLmdldFJvdXRlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFJvdXRlJCQgPVxyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoaW5pdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgIXJvdXRpbmdDb29yZExvYWRlZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICByb3V0aW5nQ29vcmRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmVcclxuICAgICAgICAgICAgICAgIC5hbGwoKVxyXG4gICAgICAgICAgICAgICAgLmZpbmQoKGUpID0+IGUucG9zaXRpb24gPT09IDEpO1xyXG4gICAgICAgICAgICAgIGxldCBjb29yZDtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlLmdlb21ldHJ5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcpIHtcclxuICAgICAgICAgICAgICAgICAgY29vcmQgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBwb2ludE9uRmVhdHVyZSh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkpO1xyXG4gICAgICAgICAgICAgICAgICBjb29yZCA9IFtcclxuICAgICAgICAgICAgICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBzdG9wLnRleHQgPSB0aGlzLmZlYXR1cmVUaXRsZTtcclxuICAgICAgICAgICAgICBzdG9wLmNvb3JkaW5hdGVzID0gY29vcmQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLnVwZGF0ZShzdG9wKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBvcyA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9wID0gdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlXHJcbiAgICAgICAgICAgICAgICAgIC5hbGwoKVxyXG4gICAgICAgICAgICAgICAgICAuZmluZCgoZSkgPT4gZS5wb3NpdGlvbiA9PT0gMCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29vcmQgPSBvbFByb2oudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnByb2plY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICdFUFNHOjQzMjYnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29vcmQ6IFtudW1iZXIsIG51bWJlcl0gPSByb3VuZENvb3JkVG8oXHJcbiAgICAgICAgICAgICAgICAgIFtjdXJyZW50Q29vcmRbMF0sIGN1cnJlbnRDb29yZFsxXV0sXHJcbiAgICAgICAgICAgICAgICAgIDZcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBzdG9wLnRleHQgPSBjb29yZC5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgICAgICBzdG9wLmNvb3JkaW5hdGVzID0gY29vcmQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUudXBkYXRlKHN0b3ApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoIXN0b3JlIHx8IHN0b3JlLnN0YXRlVmlldy5lbXB0eSkgJiYgKGRlYm91bmNlZEVtcHR5JCB8IGFzeW5jKVwiXHJcbiAgc3R5bGU9XCJtYXJnaW46IDEwcHhcIlxyXG4+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG4gICAgPGg0PlxyXG4gICAgICA8c3Ryb25nPnt7XHJcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5ub1Jlc3VsdHMnIHwgdHJhbnNsYXRlXHJcbiAgICAgIH19PC9zdHJvbmc+XHJcbiAgICA8L2g0PlxyXG4gICAgPHA+XHJcbiAgICAgIDxzdHJvbmc+e3tcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLnNlYXJjaFJlc3VsdHNUb29sLmRvU2VhcmNoJyB8IHRyYW5zbGF0ZVxyXG4gICAgICB9fTwvc3Ryb25nPlxyXG4gICAgPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuZXhhbXBsZXMnIHwgdHJhbnNsYXRlIHwgc2FuaXRpemVIdG1sXHJcbiAgICAgIFwiXHJcbiAgICA+PC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcbjxpZ28tZmxleGlibGVcclxuICAqbmdJZj1cIihkZWJvdW5jZWRFbXB0eSQgfCBhc3luYykgPT09IGZhbHNlXCJcclxuICAjdG9wUGFuZWxcclxuICBpbml0aWFsPVwiMTAwJVwiXHJcbiAgaW5pdGlhbE1vYmlsZT1cIjEwMCVcIlxyXG4gIGNvbGxhcHNlZD1cImNhbGMoMTAwJSAtIDU4cHgpXCJcclxuICBjb2xsYXBzZWRNb2JpbGU9XCJjYWxjKDEwMCUgLSA1OHB4KVwiXHJcbiAgZXhwYW5kZWQ9XCI2MCVcIlxyXG4gIGV4cGFuZGVkTW9iaWxlPVwiNjAlXCJcclxuICBbc3RhdGVdPVwiKGZlYXR1cmUkIHwgYXN5bmMpID8gdG9wUGFuZWxTdGF0ZSA6ICdpbml0aWFsJ1wiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiaWdvLWNvbnRlbnRcIj5cclxuICAgIDxpZ28tc2VhcmNoLXJlc3VsdHNcclxuICAgICAgW3N0b3JlXT1cInN0b3JlXCJcclxuICAgICAgW3Nob3dJY29uc109XCJzaG93SWNvbnNcIlxyXG4gICAgICBbdGVybV09XCJ0ZXJtXCJcclxuICAgICAgW3Rlcm1TcGxpdHRlcl09XCJ0ZXJtU3BsaXR0ZXJcIlxyXG4gICAgICBbc2V0dGluZ3NDaGFuZ2UkXT1cInNldHRpbmdzQ2hhbmdlJFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZmFsc2VcIlxyXG4gICAgICAocmVzdWx0Rm9jdXMpPVwib25SZXN1bHRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgKHJlc3VsdFNlbGVjdCk9XCJvblJlc3VsdFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgKHJlc3VsdFVuZm9jdXMpPVwib25SZXN1bHRVbmZvY3VzKCRldmVudClcIlxyXG4gICAgICAocmVzdWx0TW91c2VlbnRlcik9XCJvblJlc3VsdEZvY3VzKCRldmVudClcIlxyXG4gICAgICAocmVzdWx0TW91c2VsZWF2ZSk9XCJvblJlc3VsdFVuZm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgIChtb3JlUmVzdWx0cyk9XCJvblNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgW21hcF09XCJtYXBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2lnb1NlYXJjaEl0ZW1Ub29sYmFyIGxldC1yZXN1bHQ9XCJyZXN1bHRcIj5cclxuICAgICAgICA8aWdvLXNlYXJjaC1hZGQtYnV0dG9uXHJcbiAgICAgICAgICBbbWFwXT1cIm1hcFwiXHJcbiAgICAgICAgICBbc3RvcmVdPVwic3RvcmVcIlxyXG4gICAgICAgICAgW3N0b3Jlc109XCJzdG9yZXNcIlxyXG4gICAgICAgICAgW2xheWVyXT1cInJlc3VsdFwiXHJcbiAgICAgICAgICBbc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXJdPVwic2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2lnby1zZWFyY2gtYWRkLWJ1dHRvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaWdvLXNlYXJjaC1yZXN1bHRzPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGlnb0ZsZXhpYmxlRmlsbCBjbGFzcz1cImlnby1jb250ZW50XCI+XHJcbiAgICA8aWdvLXBhbmVsXHJcbiAgICAgIFt0aXRsZV09XCJmZWF0dXJlVGl0bGVcIlxyXG4gICAgICAqbmdJZj1cImZlYXR1cmUkIHwgYXN5bmNcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVG9wUGFuZWwoJGV2ZW50KVwiXHJcbiAgICAgIFtjdXJzb3JQb2ludGVyXT1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgcGFuZWxMZWZ0QnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJpZ28taWNvbi1idXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVUb3BQYW5lbCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgW3N2Z0ljb25dPVwiXHJcbiAgICAgICAgICAgICh0b3BQYW5lbFN0YXRlJCB8IGFzeW5jKSA9PT0gJ2NvbGxhcHNlZCcgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWRvd24nXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID48L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImZlYXR1cmUuZ2VvbWV0cnlcIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIHBhbmVsUmlnaHRCdXR0b25cclxuICAgICAgICBjbGFzcz1cImlnby1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAoKGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckIHwgYXN5bmMpXHJcbiAgICAgICAgICAgID8gJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC56b29tT25GZWF0dXJlVG9vbHRpcE91dE9mVmlldydcclxuICAgICAgICAgICAgOiAnaWdvLmludGVncmF0aW9uLnNlYXJjaFJlc3VsdHNUb29sLnpvb21PbkZlYXR1cmVUb29sdGlwJ1xyXG4gICAgICAgICAgKSB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInpvb21Ub0ZlYXR1cmVFeHRlbnQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW21hdEJhZGdlXT1cIihpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKSA/ICchJyA6ICcnXCJcclxuICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgc3ZnSWNvbj1cIm1hZ25pZnktcGx1cy1vdXRsaW5lXCJcclxuICAgICAgICA+PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8aWdvLWZlYXR1cmUtZGV0YWlsc1xyXG4gICAgICAgIGlnb0ZlYXR1cmVEZXRhaWxzRGlyZWN0aXZlXHJcbiAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZSQgfCBhc3luY1wiXHJcbiAgICAgICAgW21hcF09XCJtYXBcIlxyXG4gICAgICAgIFt0b29sYm94XT1cInRvb2xTdGF0ZS50b29sYm94XCJcclxuICAgICAgICAocm91dGluZ0V2ZW50KT1cImdldFJvdXRlKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWdvLWZlYXR1cmUtZGV0YWlscz5cclxuICAgIDwvaWdvLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG48L2lnby1mbGV4aWJsZT5cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { EntityStore, EntityStoreFilterCustomFuncStrategy } from '@igo2/common';
|
|
3
3
|
import { ConfigService, StorageService } from '@igo2/core';
|
|
4
|
-
import { FeatureWorkspace, SearchSourceService } from '@igo2/geo';
|
|
4
|
+
import { FeatureMotion, FeatureWorkspace, SearchSourceService } from '@igo2/geo';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
import { MapState } from '../map';
|
|
7
7
|
import { WorkspaceState } from '../workspace/workspace.state';
|
|
@@ -25,6 +25,15 @@ export class SearchState {
|
|
|
25
25
|
searchOverlayStyleFocus = {};
|
|
26
26
|
focusedOrResolution$$;
|
|
27
27
|
selectedOrResolution$$;
|
|
28
|
+
/**
|
|
29
|
+
* Default feature motion are:
|
|
30
|
+
* on selection = FeatureMotion.Default and
|
|
31
|
+
* on focus = FeatureMotion.None
|
|
32
|
+
*/
|
|
33
|
+
featureMotion = {
|
|
34
|
+
selected: FeatureMotion.Default,
|
|
35
|
+
focus: FeatureMotion.None
|
|
36
|
+
};
|
|
28
37
|
searchTermSplitter$ = new BehaviorSubject('|');
|
|
29
38
|
searchTerm$ = new BehaviorSubject(undefined);
|
|
30
39
|
searchType$ = new BehaviorSubject(undefined);
|
|
@@ -35,7 +44,7 @@ export class SearchState {
|
|
|
35
44
|
/**
|
|
36
45
|
* Store that holds the search results
|
|
37
46
|
*/
|
|
38
|
-
store = new
|
|
47
|
+
store = new EntityStore([]);
|
|
39
48
|
/**
|
|
40
49
|
* Search types currently enabled in the search source service
|
|
41
50
|
*/
|
|
@@ -142,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
142
151
|
providedIn: 'root'
|
|
143
152
|
}]
|
|
144
153
|
}], ctorParameters: function () { return [{ type: i1.SearchSourceService }, { type: i2.StorageService }, { type: i3.WorkspaceState }, { type: i2.ConfigService }, { type: i4.MapState }]; } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUVMLG1DQUFtQyxFQUVuQyx1QkFBdUIsRUFDeEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUlMLGdCQUFnQixFQUloQixtQkFBbUIsRUFDcEIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUU5RDs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBa0RaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFyREgsaUJBQWlCLEdBQTRCLEVBQUUsQ0FBQztJQUNoRCxrQkFBa0IsR0FBNkIsRUFBRSxDQUFDO0lBQ2xELDJCQUEyQixHQUE2QixFQUFFLENBQUM7SUFDM0QsdUJBQXVCLEdBQTZCLEVBQUUsQ0FBQztJQUV2RCxxQkFBcUIsQ0FBZTtJQUNwQyxzQkFBc0IsQ0FBZTtJQUVuQyxtQkFBbUIsR0FBNEIsSUFBSSxlQUFlLENBQ3pFLEdBQUcsQ0FDSixDQUFDO0lBRU8sV0FBVyxHQUE0QixJQUFJLGVBQWUsQ0FDakUsU0FBUyxDQUNWLENBQUM7SUFFTyxXQUFXLEdBQTRCLElBQUksZUFBZSxDQUNqRSxTQUFTLENBQ1YsQ0FBQztJQUVPLGVBQWUsR0FBNkIsSUFBSSxlQUFlLENBQ3RFLEtBQUssQ0FDTixDQUFDO0lBRU8s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QUM7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFvQjtRQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsOEJBQThCLENBQUMsS0FBSztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7d0dBaktVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBFbnRpdHlSZWNvcmQsXHJcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXHJcbiAgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zLFxyXG4gIEVudGl0eVN0b3JlV2l0aFN0cmF0ZWd5XHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnMsXHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgRmVhdHVyZVdvcmtzcGFjZSxcclxuICBPdmVybGF5U3R5bGVPcHRpb25zLFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBTZWFyY2hTb3VyY2UsXHJcbiAgU2VhcmNoU291cmNlU2VydmljZVxyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VTdGF0ZSB9IGZyb20gJy4uL3dvcmtzcGFjZS93b3Jrc3BhY2Uuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIHNlYXJjaCBtb2R1bGVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFN0YXRlIHtcclxuICBwdWJsaWMgc2VhcmNoTGF5ZXJTdG9yZXM6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPltdID0gW107XHJcbiAgcHVibGljIHNlYXJjaE92ZXJsYXlTdHlsZTogQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zID0ge307XHJcbiAgcHVibGljIHNlYXJjaE92ZXJsYXlTdHlsZVNlbGVjdGlvbjogQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zID0ge307XHJcbiAgcHVibGljIHNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzOiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnMgPSB7fTtcclxuXHJcbiAgcHVibGljIGZvY3VzZWRPclJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHB1YmxpYyBzZWxlY3RlZE9yUmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHJlYWRvbmx5IHNlYXJjaFRlcm1TcGxpdHRlciQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcclxuICAgICd8J1xyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHNlYXJjaFRlcm0kOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB1bmRlZmluZWRcclxuICApO1xyXG5cclxuICByZWFkb25seSBzZWFyY2hUeXBlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VhcmNoRGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgZmFsc2VcclxuICApO1xyXG5cclxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG5cclxuICByZWFkb25seSBzZWFyY2hTZXR0aW5nc0NoYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IHNlbGVjdGVkUmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFJlc3VsdD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcmUgdGhhdCBob2xkcyB0aGUgc2VhcmNoIHJlc3VsdHNcclxuICAgKi9cclxuICByZWFkb25seSBzdG9yZSA9IG5ldyBFbnRpdHlTdG9yZVdpdGhTdHJhdGVneTxTZWFyY2hSZXN1bHQ+KFtdKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIHR5cGVzIGN1cnJlbnRseSBlbmFibGVkIGluIHRoZSBzZWFyY2ggc291cmNlIHNlcnZpY2VcclxuICAgKi9cclxuICBnZXQgc2VhcmNoVHlwZXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU291cmNlU2VydmljZVxyXG4gICAgICAuZ2V0RW5hYmxlZFNvdXJjZXMoKVxyXG4gICAgICAubWFwKChzb3VyY2U6IFNlYXJjaFNvdXJjZSkgPT4gKHNvdXJjZS5jb25zdHJ1Y3RvciBhcyBhbnkpLnR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlYXJjaFNvdXJjZVNlcnZpY2U6IFNlYXJjaFNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgd29ya3NwYWNlU3RhdGU6IFdvcmtzcGFjZVN0YXRlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGVcclxuICApIHtcclxuICAgIGNvbnN0IHNlYXJjaE92ZXJsYXlTdHlsZTogT3ZlcmxheVN0eWxlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3NlYXJjaE92ZXJsYXlTdHlsZScpO1xyXG4gICAgaWYgKHNlYXJjaE92ZXJsYXlTdHlsZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaE92ZXJsYXlTdHlsZSA9IHNlYXJjaE92ZXJsYXlTdHlsZS5iYXNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE92ZXJsYXlTdHlsZVNlbGVjdGlvbiA9IHNlYXJjaE92ZXJsYXlTdHlsZS5zZWxlY3Rpb247XHJcbiAgICAgIHRoaXMuc2VhcmNoT3ZlcmxheVN0eWxlRm9jdXMgPSBzZWFyY2hPdmVybGF5U3R5bGUuZm9jdXM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxyXG4gICAgICAnc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmIChzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCQubmV4dChzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3kodGhpcy5jcmVhdGVDdXN0b21GaWx0ZXJUZXJtU3RyYXRlZ3koKSwgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHdrc1NvdXJjZSA9IHRoaXMuc2VhcmNoU291cmNlU2VydmljZVxyXG4gICAgICAuZ2V0U291cmNlcygpXHJcbiAgICAgIC5maW5kKChzb3VyY2UpID0+IHNvdXJjZS5nZXRJZCgpID09PSAnd29ya3NwYWNlJyk7XHJcbiAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoYWJsZVdrcyA9IGUuZmlsdGVyKFxyXG4gICAgICAgIChmdykgPT5cclxuICAgICAgICAgIGZ3IGluc3RhbmNlb2YgRmVhdHVyZVdvcmtzcGFjZSAmJlxyXG4gICAgICAgICAgZncubGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uuc2VhcmNoSW5kZXhFbmFibGVkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VhcmNoU291cmNlU2VydmljZS5zZXRXb3Jrc3BhY2VzKHdrc1NvdXJjZSwgc2VhcmNoYWJsZVdrcyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9uaXRvckxheWVyRGVsZXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9uaXRvckxheWVyRGVsZXRpb24oKSB7XHJcbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTGF5ZXJTdG9yZXMuZm9yRWFjaCgoc3RvcmUpID0+IHtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBsYXllcnMuZmluZCgobCkgPT4gbC5pZCA9PT0gc3RvcmUubGF5ZXIuaWQpO1xyXG4gICAgICAgIGlmICghbGF5ZXIpIHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWFyY2hMYXllclN0b3Jlcy5pbmRleE9mKHN0b3JlKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTGF5ZXJTdG9yZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUN1c3RvbUZpbHRlclRlcm1TdHJhdGVneSgpOiBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSB7XHJcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2VGdW5jID0gKHJlY29yZDogRW50aXR5UmVjb3JkPFNlYXJjaFJlc3VsdD4pID0+IHtcclxuICAgICAgcmV0dXJuIHJlY29yZC5lbnRpdHkubWV0YS5zY29yZSA9PT0gMTAwO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBuZXcgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3koe1xyXG4gICAgICBmaWx0ZXJDbGF1c2VGdW5jXHJcbiAgICB9IGFzIEVudGl0eVN0b3JlU3RyYXRlZ3lGdW5jT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBjdXN0b20gc3RyYXRlZ3lcclxuICAgKlxyXG4gICAqL1xyXG4gIGFjdGl2YXRlQ3VzdG9tRmlsdGVyVGVybVN0cmF0ZWd5KCkge1xyXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLnN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxyXG4gICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxyXG4gICAgKTtcclxuICAgIGlmIChzdHJhdGVneSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHN0cmF0ZWd5LmFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIGN1c3RvbSBzdHJhdGVneVxyXG4gICAqXHJcbiAgICovXHJcbiAgZGVhY3RpdmF0ZUN1c3RvbUZpbHRlclRlcm1TdHJhdGVneSgpIHtcclxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5zdG9yZS5nZXRTdHJhdGVneU9mVHlwZShcclxuICAgICAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3lcclxuICAgICk7XHJcbiAgICBpZiAoc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzdHJhdGVneS5kZWFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkJC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoVGVybShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFR5cGUoc2VhcmNoVHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlYXJjaFNvdXJjZVNlcnZpY2UuZW5hYmxlU291cmNlc0J5VHlwZShzZWFyY2hUeXBlKTtcclxuICAgIHRoaXMuc2VhcmNoVHlwZSQubmV4dChzZWFyY2hUeXBlKTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFNldHRpbmdzQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZWFyY2hTZXR0aW5nc0NoYW5nZSQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVzdWx0JC5uZXh0KHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hSZXN1bHRzR2VvbWV0cnlTdGF0dXModmFsdWUpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJywgdmFsdWUpO1xyXG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUVMLFdBQVcsRUFDWCxtQ0FBbUMsRUFFcEMsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUdMLGFBQWEsRUFFYixnQkFBZ0IsRUFJaEIsbUJBQW1CLEVBQ3BCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFVOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sV0FBVztJQTREWjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBL0RILGlCQUFpQixHQUE0QixFQUFFLENBQUM7SUFDaEQsa0JBQWtCLEdBQTZCLEVBQUUsQ0FBQztJQUNsRCwyQkFBMkIsR0FBNkIsRUFBRSxDQUFDO0lBQzNELHVCQUF1QixHQUE2QixFQUFFLENBQUM7SUFFdkQscUJBQXFCLENBQWU7SUFDcEMsc0JBQXNCLENBQWU7SUFFNUM7Ozs7T0FJRztJQUNJLGFBQWEsR0FBd0I7UUFDMUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxPQUFPO1FBQy9CLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSTtLQUMxQixDQUFDO0lBRU8sbUJBQW1CLEdBQTRCLElBQUksZUFBZSxDQUN6RSxHQUFHLENBQ0osQ0FBQztJQUVPLFdBQVcsR0FBNEIsSUFBSSxlQUFlLENBQ2pFLFNBQVMs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QUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQW9CO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFLO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzt3R0EzS1UsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEVudGl0eVJlY29yZCxcclxuICBFbnRpdHlTdG9yZSxcclxuICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSxcclxuICBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnNcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyxcclxuICBGZWF0dXJlLFxyXG4gIEZlYXR1cmVNb3Rpb24sXHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIEZlYXR1cmVXb3Jrc3BhY2UsXHJcbiAgT3ZlcmxheVN0eWxlT3B0aW9ucyxcclxuICBTZWFyY2hSZXN1bHQsXHJcbiAgU2VhcmNoU291cmNlLFxyXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2VcclxufSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwJztcclxuaW1wb3J0IHsgV29ya3NwYWNlU3RhdGUgfSBmcm9tICcuLi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlJztcclxuXHJcbi8qKlxyXG4gKiBEZWZpbmUgdGhlIEZlYXR1cmVNb3Rpb24gdG8gYXBwbHkgd2hlbiBhZGRpbmcgdGhlIFNlYXJjaFJlc3VsdCB0byB0aGUgbWFwIGFzIGFuIG92ZXJsYXkuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEZlYXR1cmVNb3Rpb24ge1xyXG4gIHNlbGVjdGVkPzogRmVhdHVyZU1vdGlvbjtcclxuICBmb2N1cz86IEZlYXR1cmVNb3Rpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBzZWFyY2ggbW9kdWxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hTdGF0ZSB7XHJcbiAgcHVibGljIHNlYXJjaExheWVyU3RvcmVzOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWFyY2hPdmVybGF5U3R5bGU6IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyA9IHt9O1xyXG4gIHB1YmxpYyBzZWFyY2hPdmVybGF5U3R5bGVTZWxlY3Rpb246IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyA9IHt9O1xyXG4gIHB1YmxpYyBzZWFyY2hPdmVybGF5U3R5bGVGb2N1czogQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zID0ge307XHJcblxyXG4gIHB1YmxpYyBmb2N1c2VkT3JSZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgc2VsZWN0ZWRPclJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGZlYXR1cmUgbW90aW9uIGFyZTpcclxuICAgKiBvbiBzZWxlY3Rpb24gPSBGZWF0dXJlTW90aW9uLkRlZmF1bHQgYW5kXHJcbiAgICogb24gZm9jdXMgPSBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgKi9cclxuICBwdWJsaWMgZmVhdHVyZU1vdGlvbjogU2VhcmNoRmVhdHVyZU1vdGlvbiA9IHtcclxuICAgIHNlbGVjdGVkOiBGZWF0dXJlTW90aW9uLkRlZmF1bHQsXHJcbiAgICBmb2N1czogRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgfTtcclxuXHJcbiAgcmVhZG9ubHkgc2VhcmNoVGVybVNwbGl0dGVyJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgJ3wnXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHNlYXJjaFR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB1bmRlZmluZWRcclxuICApO1xyXG5cclxuICByZWFkb25seSBzZWFyY2hEaXNhYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICBmYWxzZVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcblxyXG4gIHJlYWRvbmx5IHNlYXJjaFNldHRpbmdzQ2hhbmdlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRSZXN1bHQkOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUmVzdWx0PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB1bmRlZmluZWRcclxuICApO1xyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSB0aGF0IGhvbGRzIHRoZSBzZWFyY2ggcmVzdWx0c1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHN0b3JlID0gbmV3IEVudGl0eVN0b3JlPFNlYXJjaFJlc3VsdD4oW10pO1xyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggdHlwZXMgY3VycmVudGx5IGVuYWJsZWQgaW4gdGhlIHNlYXJjaCBzb3VyY2Ugc2VydmljZVxyXG4gICAqL1xyXG4gIGdldCBzZWFyY2hUeXBlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXHJcbiAgICAgIC5nZXRFbmFibGVkU291cmNlcygpXHJcbiAgICAgIC5tYXAoKHNvdXJjZTogU2VhcmNoU291cmNlKSA9PiAoc291cmNlLmNvbnN0cnVjdG9yIGFzIGFueSkudHlwZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VhcmNoU291cmNlU2VydmljZTogU2VhcmNoU291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZVxyXG4gICkge1xyXG4gICAgY29uc3Qgc2VhcmNoT3ZlcmxheVN0eWxlOiBPdmVybGF5U3R5bGVPcHRpb25zID1cclxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnc2VhcmNoT3ZlcmxheVN0eWxlJyk7XHJcbiAgICBpZiAoc2VhcmNoT3ZlcmxheVN0eWxlKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoT3ZlcmxheVN0eWxlID0gc2VhcmNoT3ZlcmxheVN0eWxlLmJhc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoT3ZlcmxheVN0eWxlU2VsZWN0aW9uID0gc2VhcmNoT3ZlcmxheVN0eWxlLnNlbGVjdGlvbjtcclxuICAgICAgdGhpcy5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyA9IHNlYXJjaE92ZXJsYXlTdHlsZS5mb2N1cztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXHJcbiAgICAgICdzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJC5uZXh0KHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdG9yZS5hZGRTdHJhdGVneSh0aGlzLmNyZWF0ZUN1c3RvbUZpbHRlclRlcm1TdHJhdGVneSgpLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3Qgd2tzU291cmNlID0gdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXHJcbiAgICAgIC5nZXRTb3VyY2VzKClcclxuICAgICAgLmZpbmQoKHNvdXJjZSkgPT4gc291cmNlLmdldElkKCkgPT09ICd3b3Jrc3BhY2UnKTtcclxuICAgIHRoaXMud29ya3NwYWNlU3RhdGUuc3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBjb25zdCBzZWFyY2hhYmxlV2tzID0gZS5maWx0ZXIoXHJcbiAgICAgICAgKGZ3KSA9PlxyXG4gICAgICAgICAgZncgaW5zdGFuY2VvZiBGZWF0dXJlV29ya3NwYWNlICYmXHJcbiAgICAgICAgICBmdy5sYXllci5vcHRpb25zLndvcmtzcGFjZS5zZWFyY2hJbmRleEVuYWJsZWRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlLnNldFdvcmtzcGFjZXMod2tzU291cmNlLCBzZWFyY2hhYmxlV2tzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb25pdG9yTGF5ZXJEZWxldGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yTGF5ZXJEZWxldGlvbigpIHtcclxuICAgIHRoaXMubWFwU3RhdGUubWFwLmxheWVycyQuc3Vic2NyaWJlKChsYXllcnMpID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2hMYXllclN0b3Jlcy5mb3JFYWNoKChzdG9yZSkgPT4ge1xyXG4gICAgICAgIGxldCBsYXllciA9IGxheWVycy5maW5kKChsKSA9PiBsLmlkID09PSBzdG9yZS5sYXllci5pZCk7XHJcbiAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlYXJjaExheWVyU3RvcmVzLmluZGV4T2Yoc3RvcmUpO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hMYXllclN0b3Jlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ3VzdG9tRmlsdGVyVGVybVN0cmF0ZWd5KCk6IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5IHtcclxuICAgIGNvbnN0IGZpbHRlckNsYXVzZUZ1bmMgPSAocmVjb3JkOiBFbnRpdHlSZWNvcmQ8U2VhcmNoUmVzdWx0PikgPT4ge1xyXG4gICAgICByZXR1cm4gcmVjb3JkLmVudGl0eS5tZXRhLnNjb3JlID09PSAxMDA7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG5ldyBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSh7XHJcbiAgICAgIGZpbHRlckNsYXVzZUZ1bmNcclxuICAgIH0gYXMgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIGN1c3RvbSBzdHJhdGVneVxyXG4gICAqXHJcbiAgICovXHJcbiAgYWN0aXZhdGVDdXN0b21GaWx0ZXJUZXJtU3RyYXRlZ3koKSB7XHJcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuc3RvcmUuZ2V0U3RyYXRlZ3lPZlR5cGUoXHJcbiAgICAgIEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5XHJcbiAgICApO1xyXG4gICAgaWYgKHN0cmF0ZWd5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgc3RyYXRlZ3kuYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYWN0aXZhdGUgY3VzdG9tIHN0cmF0ZWd5XHJcbiAgICpcclxuICAgKi9cclxuICBkZWFjdGl2YXRlQ3VzdG9tRmlsdGVyVGVybVN0cmF0ZWd5KCkge1xyXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLnN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxyXG4gICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxyXG4gICAgKTtcclxuICAgIGlmIChzdHJhdGVneSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHN0cmF0ZWd5LmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZVNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZVNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQkLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm06IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KHNlYXJjaFRlcm0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoVHlwZShzZWFyY2hUeXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoU291cmNlU2VydmljZS5lbmFibGVTb3VyY2VzQnlUeXBlKHNlYXJjaFR5cGUpO1xyXG4gICAgdGhpcy5zZWFyY2hUeXBlJC5uZXh0KHNlYXJjaFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoU2V0dGluZ3NDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFNldHRpbmdzQ2hhbmdlJC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSZXN1bHQocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSZXN1bHQkLm5leHQocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFJlc3VsdHNHZW9tZXRyeVN0YXR1cyh2YWx1ZSkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ3NlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB0aGlzLnNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQkLm5leHQodmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
13
13
|
exports: []
|
|
14
14
|
}]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3N0b3JhZ2Uvc3RvcmFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLG1CQUFtQjt3R0FBbkIsbUJBQW1CO3lHQUFuQixtQkFBbUI7eUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGV4cG9ydHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29BcHBTdG9yYWdlTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
13
13
|
exports: []
|
|
14
14
|
}]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3Rvb2wvdG9vbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLGdCQUFnQjt3R0FBaEIsZ0JBQWdCO3lHQUFoQixnQkFBZ0I7eUdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGV4cG9ydHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29BcHBUb29sTW9kdWxlIHt9XHJcbiJdfQ==
|
package/esm2022/public_api.mjs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/integration.module';
|
|
5
5
|
export * from './lib/about/about.module';
|
|
6
|
+
export * from './lib/geometry-form/geometry-form.module';
|
|
6
7
|
export * from './lib/analytics/analytics.module';
|
|
7
8
|
export * from './lib/storage/storage.module';
|
|
8
9
|
export * from './lib/context/context.module';
|
|
@@ -18,6 +19,7 @@ export * from './lib/print/print.module';
|
|
|
18
19
|
export * from './lib/search/search.module';
|
|
19
20
|
export * from './lib/tool/tool.module';
|
|
20
21
|
export * from './lib/about';
|
|
22
|
+
export * from './lib/geometry-form';
|
|
21
23
|
export * from './lib/analytics';
|
|
22
24
|
export * from './lib/context';
|
|
23
25
|
export * from './lib/catalog';
|
|
@@ -33,4 +35,4 @@ export * from './lib/print';
|
|
|
33
35
|
export * from './lib/search';
|
|
34
36
|
export * from './lib/tool';
|
|
35
37
|
export * from './lib/storage';
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRvb2xzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZWdyYXRpb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWJvdXQvYWJvdXQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VvbWV0cnktZm9ybS9nZW9tZXRyeS1mb3JtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuYWx5dGljcy9hbmFseXRpY3MubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmFnZS9zdG9yYWdlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRleHQvY29udGV4dC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRhbG9nL2NhdGFsb2cubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcmF3L2RyYXcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd29ya3NwYWNlL3dvcmtzcGFjZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWx0ZXIvZmlsdGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXAvbWFwLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lYXN1cmUvbWVhc3VyZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmludC9wcmludC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWFyY2gvc2VhcmNoLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rvb2wvdG9vbC5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWJvdXQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nZW9tZXRyeS1mb3JtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5hbHl0aWNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGFsb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3Rpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJhdyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd29ya3NwYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wb3J0LWV4cG9ydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lYXN1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmludCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rvb2wnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yYWdlJztcclxuIl19
|