@smartbit4all/ng-client 3.1.34 → 3.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/esm2020/lib/smart-client/smart-component-api-client.mjs +13 -1
  2. package/esm2020/lib/smart-filter-editor/api/api/filter.service.mjs +198 -0
  3. package/esm2020/lib/smart-filter-editor/api/configuration.mjs +91 -0
  4. package/esm2020/lib/smart-filter-editor/api/encoder.mjs +19 -0
  5. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +16 -0
  6. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +13 -0
  7. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +9 -0
  8. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +13 -0
  9. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionData.mjs +2 -0
  10. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +19 -0
  11. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionField.mjs +2 -0
  12. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +13 -0
  13. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +13 -0
  14. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +25 -0
  15. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionList.mjs +2 -0
  16. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +2 -0
  17. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +31 -0
  18. package/esm2020/lib/smart-filter-editor/api/param.mjs +2 -0
  19. package/esm2020/lib/smart-filter-editor/api/variables.mjs +9 -0
  20. package/esm2020/lib/smart-filter-editor/project.mjs +4 -0
  21. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +54 -0
  22. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +42 -0
  23. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +109 -0
  24. package/esm2020/lib/smart-filter-editor/smart-filter-editor.model.mjs +2 -0
  25. package/esm2020/lib/smart-filter-editor/smart-filter-editor.module.mjs +53 -0
  26. package/esm2020/lib/smart-filter-editor/smart-filter-editor.service.mjs +43 -0
  27. package/esm2020/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +28 -0
  28. package/esm2020/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +107 -0
  29. package/esm2020/lib/smart-ng-client.module.mjs +6 -2
  30. package/esm2020/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +2 -2
  31. package/esm2020/lib/smart-table/tables/table.mjs +7 -1
  32. package/esm2020/projects.mjs +2 -1
  33. package/fesm2015/smartbit4all-ng-client.mjs +811 -79
  34. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  35. package/fesm2020/smartbit4all-ng-client.mjs +793 -79
  36. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  37. package/lib/smart-filter-editor/api/api/filter.service.d.ts +57 -0
  38. package/lib/smart-filter-editor/api/configuration.d.ts +104 -0
  39. package/lib/smart-filter-editor/api/encoder.d.ts +11 -0
  40. package/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.d.ts +16 -0
  41. package/lib/smart-filter-editor/api/model/filterExpressionBuilderField.d.ts +27 -0
  42. package/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.d.ts +39 -0
  43. package/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.d.ts +29 -0
  44. package/lib/smart-filter-editor/api/model/filterExpressionData.d.ts +29 -0
  45. package/lib/smart-filter-editor/api/model/filterExpressionDataType.d.ts +19 -0
  46. package/lib/smart-filter-editor/api/model/filterExpressionField.d.ts +38 -0
  47. package/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.d.ts +17 -0
  48. package/lib/smart-filter-editor/api/model/filterExpressionFieldList.d.ts +21 -0
  49. package/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.d.ts +25 -0
  50. package/lib/smart-filter-editor/api/model/filterExpressionList.d.ts +18 -0
  51. package/lib/smart-filter-editor/api/model/filterExpressionOperandData.d.ts +26 -0
  52. package/lib/smart-filter-editor/api/model/filterExpressionOperation.d.ts +31 -0
  53. package/lib/smart-filter-editor/api/param.d.ts +37 -0
  54. package/lib/smart-filter-editor/api/variables.d.ts +8 -0
  55. package/lib/smart-filter-editor/project.d.ts +3 -0
  56. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.d.ts +17 -0
  57. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.d.ts +18 -0
  58. package/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.d.ts +28 -0
  59. package/lib/smart-filter-editor/smart-filter-editor.model.d.ts +4 -0
  60. package/lib/smart-filter-editor/smart-filter-editor.module.d.ts +16 -0
  61. package/lib/smart-filter-editor/smart-filter-editor.service.d.ts +25 -0
  62. package/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.d.ts +13 -0
  63. package/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.d.ts +24 -0
  64. package/lib/smart-ng-client.module.d.ts +3 -2
  65. package/package.json +1 -1
  66. package/projects.d.ts +1 -0
  67. package/smartbit4all-ng-client-3.1.36.tgz +0 -0
  68. package/src/lib/smart-filter-editor/api/README.md +226 -0
  69. package/smartbit4all-ng-client-3.1.34.tgz +0 -0
@@ -0,0 +1,43 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./api/api/filter.service";
5
+ export class SmartFilterEditorService {
6
+ constructor(service) {
7
+ this.service = service;
8
+ this.modelChanged = new Subject();
9
+ this.submit = new Subject();
10
+ this.reSubscribeToChange = new Subject();
11
+ }
12
+ async load() {
13
+ this.model = await this.service.load(this.config.uuid, this.config.identifier).toPromise();
14
+ this.modelChanged.next();
15
+ }
16
+ async peformWidgetAction(request) {
17
+ this.model = await this.service
18
+ .performWidgetAction(this.config.uuid, this.config.identifier, request)
19
+ .toPromise();
20
+ this.modelChanged.next();
21
+ }
22
+ getModel() {
23
+ return this.model;
24
+ }
25
+ async performUiActionRequest(uiActionRequest, widgetId, nodeId) {
26
+ await this.peformWidgetAction(uiActionRequest);
27
+ }
28
+ async handleSpecificDemandsAsynchronously(uiAction, uiActionRequest) {
29
+ return {
30
+ shouldPerformAction: true,
31
+ uiActionRequest: uiActionRequest,
32
+ };
33
+ }
34
+ getAdditionalParams(uiAction) {
35
+ throw new Error('Method not implemented.');
36
+ }
37
+ }
38
+ SmartFilterEditorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterEditorService, deps: [{ token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ SmartFilterEditorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterEditorService });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterEditorService, decorators: [{
41
+ type: Injectable
42
+ }], ctorParameters: function () { return [{ type: i1.FilterService }]; } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZmlsdGVyLWVkaXRvci9zbWFydC1maWx0ZXItZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFhL0IsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQyxZQUFvQixPQUFzQjtRQUF0QixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBSjFDLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUMsV0FBTSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRU4sQ0FBQztJQUM5QyxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUF3QjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU87YUFDNUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO2FBQ3RFLFNBQVMsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsS0FBSyxDQUFDLHNCQUFzQixDQUMxQixlQUFnQyxFQUNoQyxRQUE2QixFQUM3QixNQUEyQjtRQUUzQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1DQUFtQyxDQUN2QyxRQUFrQixFQUNsQixlQUFnQztRQUVoQyxPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixlQUFlLEVBQUUsZUFBZTtTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUNELG1CQUFtQixDQUFDLFFBQWtCO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDOztxSEExQ1Usd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlckVkaXRvckNvbmZpZyB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWVkaXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uUmVxdWVzdCB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvdWlBY3Rpb25SZXF1ZXN0JztcclxuaW1wb3J0IHtcclxuICBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMsXHJcbiAgVWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlLFxyXG4gIFVzZVVpQWN0aW9uLFxyXG59IGZyb20gJy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3VpQWN0aW9uJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsIH0gZnJvbSAnLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4vYXBpL2FwaS9maWx0ZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgaW1wbGVtZW50cyBVc2VVaUFjdGlvbiB7XHJcbiAgY29uZmlnITogU21hcnRGaWx0ZXJFZGl0b3JDb25maWc7XHJcbiAgbW9kZWw/OiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWw7XHJcbiAgbW9kZWxDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBzdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHJlU3Vic2NyaWJlVG9DaGFuZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IEZpbHRlclNlcnZpY2UpIHt9XHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLnNlcnZpY2UubG9hZCh0aGlzLmNvbmZpZy51dWlkLCB0aGlzLmNvbmZpZy5pZGVudGlmaWVyKS50b1Byb21pc2UoKTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBlZm9ybVdpZGdldEFjdGlvbihyZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpIHtcclxuICAgIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLnNlcnZpY2VcclxuICAgICAgLnBlcmZvcm1XaWRnZXRBY3Rpb24odGhpcy5jb25maWcudXVpZCwgdGhpcy5jb25maWcuaWRlbnRpZmllciwgcmVxdWVzdClcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZWQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcclxuICB9XHJcbiAgYXN5bmMgcGVyZm9ybVVpQWN0aW9uUmVxdWVzdChcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgd2lkZ2V0SWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICBub2RlSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWRcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgYXdhaXQgdGhpcy5wZWZvcm1XaWRnZXRBY3Rpb24odWlBY3Rpb25SZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2hvdWxkUGVyZm9ybUFjdGlvbjogdHJ1ZSxcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0OiB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICB9O1xyXG4gIH1cclxuICBnZXRBZGRpdGlvbmFsUGFyYW1zKHVpQWN0aW9uOiBVaUFjdGlvbik6IFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../smart-filter-editor.service";
4
+ import * as i2 from "../../../../smart-icon/smart-icon/smart-icon.component";
5
+ import * as i3 from "@angular/common";
6
+ export class SmartFilterParamComponent {
7
+ constructor(service) {
8
+ this.service = service;
9
+ }
10
+ ngOnInit() { }
11
+ onItemClick(item) {
12
+ this.data.serviceToUse.peformWidgetAction({
13
+ code: 'ADD_FILTER_EXPRESSION',
14
+ params: {
15
+ model: item,
16
+ },
17
+ });
18
+ }
19
+ }
20
+ SmartFilterParamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamComponent, deps: [{ token: i1.SmartFilterEditorService }], target: i0.ɵɵFactoryTarget.Component });
21
+ SmartFilterParamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartFilterParamComponent, selector: "app-target-group-filter-param", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"targetGroupFilterParamContainer\">\r\n <div\r\n class=\"targetGroupFilterItem\"\r\n *ngFor=\"let data of data?.group\"\r\n (click)=\"onItemClick(data)\"\r\n >\r\n <smart-icon icon=\"Ic24_Chevron_Right\" color=\"gray\"></smart-icon>\r\n <div class=\"mat-caption\">\r\n {{ data.label }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"], components: [{ type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'app-target-group-filter-param', template: "<div class=\"targetGroupFilterParamContainer\">\r\n <div\r\n class=\"targetGroupFilterItem\"\r\n *ngFor=\"let data of data?.group\"\r\n (click)=\"onItemClick(data)\"\r\n >\r\n <smart-icon icon=\"Ic24_Chevron_Right\" color=\"gray\"></smart-icon>\r\n <div class=\"mat-caption\">\r\n {{ data.label }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"] }]
25
+ }], ctorParameters: function () { return [{ type: i1.SmartFilterEditorService }]; }, propDecorators: { data: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLXBhcmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZpbHRlci1lZGl0b3Ivc21hcnQtZmlsdGVyLXBhcmFtcy9jb21wb25lbnRzL3NtYXJ0LWZpbHRlci1wYXJhbS9zbWFydC1maWx0ZXItcGFyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZmlsdGVyLWVkaXRvci9zbWFydC1maWx0ZXItcGFyYW1zL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLXBhcmFtL3NtYXJ0LWZpbHRlci1wYXJhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTekQsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUFvQixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUFHLENBQUM7SUFFekQsUUFBUSxLQUFVLENBQUM7SUFFbkIsV0FBVyxDQUFDLElBQWtDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBeUMsQ0FBQyxrQkFBa0IsQ0FBQztZQUN0RSxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7c0hBZFUseUJBQXlCOzBHQUF6Qix5QkFBeUIsK0ZDVHRDLHlXQVlBOzJGREhhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSwrQkFBK0I7K0dBS2hDLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zbWFydC1maWx0ZXItZWRpdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlckZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyRmllbGQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdGFyZ2V0LWdyb3VwLWZpbHRlci1wYXJhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWZpbHRlci1wYXJhbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLXBhcmFtLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGEhOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIG9uSXRlbUNsaWNrKGl0ZW06IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyRmllbGQpOiB2b2lkIHtcclxuICAgICh0aGlzLmRhdGEuc2VydmljZVRvVXNlIGFzIFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSkucGVmb3JtV2lkZ2V0QWN0aW9uKHtcclxuICAgICAgY29kZTogJ0FERF9GSUxURVJfRVhQUkVTU0lPTicsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiBpdGVtLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YXJnZXRHcm91cEZpbHRlclBhcmFtQ29udGFpbmVyXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJ0YXJnZXRHcm91cEZpbHRlckl0ZW1cIlxyXG4gICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YT8uZ3JvdXBcIlxyXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGRhdGEpXCJcclxuICA+XHJcbiAgICA8c21hcnQtaWNvbiBpY29uPVwiSWMyNF9DaGV2cm9uX1JpZ2h0XCIgY29sb3I9XCJncmF5XCI+PC9zbWFydC1pY29uPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+XHJcbiAgICAgIHt7IGRhdGEubGFiZWwgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,107 @@
1
+ import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import { SmartFilterParamComponent } from './components/smart-filter-param/smart-filter-param.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../component-factory-service/component-factory-service.service";
6
+ import * as i2 from "../../smart-icon/smart-icon/smart-icon.component";
7
+ import * as i3 from "../../smart-expandable-section/expandable-section.component";
8
+ import * as i4 from "@angular/common";
9
+ export class SmartFilterParamsComponent {
10
+ // filterComponentRef?: ComponentRef<SmartFilterComponent>;
11
+ // filter?: SmartFilter;
12
+ constructor(cfService) {
13
+ this.cfService = cfService;
14
+ this._destroy$ = new Subject();
15
+ this.expandableSections = [];
16
+ }
17
+ ngOnInit() {
18
+ this.service.modelChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
19
+ this.setUp(this.service.model);
20
+ });
21
+ }
22
+ ngOnDestroy() {
23
+ this._destroy$.next();
24
+ this._destroy$.complete();
25
+ }
26
+ setUp(model) {
27
+ this.filterBuilder = model.model;
28
+ // this.constructFilter();
29
+ this.constructExpandableSections();
30
+ }
31
+ constructExpandableSections() {
32
+ if (this.filterBuilder.groups) {
33
+ this.expandableSections = this.filterBuilder.groups.map((filterExpressionBuilderGroup) => {
34
+ return {
35
+ title: filterExpressionBuilderGroup.label,
36
+ cssClass: 'filterExpressionBuilderGroup',
37
+ customComponent: SmartFilterParamComponent,
38
+ data: {
39
+ group: filterExpressionBuilderGroup.fields,
40
+ serviceToUse: this.service,
41
+ },
42
+ inputName: 'data',
43
+ isExpanded: true,
44
+ };
45
+ });
46
+ }
47
+ // if (this.service.model?.externalFilterGroup) {
48
+ // this.expandableSectionsFromExcel = {
49
+ // title: this.service.model.externalFilterGroup.label!,
50
+ // cssClass: 'filterExpressionBuilderGroup',
51
+ // customComponent: SmartFilterParamComponent,
52
+ // data: {
53
+ // group: this.service.model.externalFilterGroup.fields,
54
+ // },
55
+ // inputName: 'data',
56
+ // isExpanded: true,
57
+ // };
58
+ // }
59
+ }
60
+ // constructFilter(): void {
61
+ // if (this.filter && this.filterComponentRef) {
62
+ // return;
63
+ // }
64
+ // // this.filter = {
65
+ // // data: this.service.model?.groupFilter?.filters! as FilterExpressionField[],
66
+ // // type: SmartFilterType.Simple,
67
+ // // showPossibleActions: false,
68
+ // // };
69
+ // this.filterVcRef?.clear();
70
+ // this.filterComponentRef = this.cfService.createComponent(
71
+ // this.filterVcRef!,
72
+ // SmartFilterComponent,
73
+ // new Map<string, any>([['filter', this.filter]])
74
+ // );
75
+ // this.filterComponentRef.instance?.service.change
76
+ // .pipe(takeUntil(this._destroy$))
77
+ // .subscribe(() => {
78
+ // let uiAction: UiAction = this.service.model?.filterGroupsAction!;
79
+ // uiAction.params = {
80
+ // filter: {
81
+ // filters: this.filterComponentRef?.instance.service.filter?.data,
82
+ // },
83
+ // };
84
+ // // let uiActionModel: UiActionModel = {
85
+ // // serviceToUse: this.service,
86
+ // // uiAction,
87
+ // // };
88
+ // // this.uiActionService.uiActionModel = uiActionModel;
89
+ // // this.uiActionService.execute(uiAction);
90
+ // });
91
+ // }
92
+ addDataSource() {
93
+ // this.service.addDataSource();
94
+ }
95
+ }
96
+ SmartFilterParamsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamsComponent, deps: [{ token: i1.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component });
97
+ SmartFilterParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: { service: "service" }, viewQueries: [{ propertyName: "filterVcRef", first: true, predicate: ["smartFilter"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"targetGroupFilterParamsContainer\">\r\n <ng-template #smartFilter></ng-template>\r\n <div class=\"dataSource-options\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"], components: [{ type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i3.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamsComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: 'smart-filter-group-params', template: "<div class=\"targetGroupFilterParamsContainer\">\r\n <ng-template #smartFilter></ng-template>\r\n <div class=\"dataSource-options\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"] }]
101
+ }], ctorParameters: function () { return [{ type: i1.ComponentFactoryService }]; }, propDecorators: { service: [{
102
+ type: Input
103
+ }], filterVcRef: [{
104
+ type: ViewChild,
105
+ args: ['smartFilter', { read: ViewContainerRef }]
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7QUFRekcsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQywyREFBMkQ7SUFDM0Qsd0JBQXdCO0lBRXhCLFlBQW9CLFNBQWtDO1FBQWxDLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBWjlDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUlqRCx1QkFBa0IsR0FBOEIsRUFBRSxDQUFDO0lBUU0sQ0FBQztJQUUxRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBcUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLDBCQUEwQjtRQUUxQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWMsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyw0QkFBMEQsRUFBRSxFQUFFO2dCQUM3RCxPQUFPO29CQUNMLEtBQUssRUFBRSw0QkFBNEIsQ0FBQyxLQUFNO29CQUMxQyxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxlQUFlLEVBQUUseUJBQXlCO29CQUMxQyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLDRCQUE0QixDQUFDLE1BQU07d0JBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTztxQkFDM0I7b0JBQ0QsU0FBUyxFQUFFLE1BQU07b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQixDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUNELGlEQUFpRDtRQUNqRCx5Q0FBeUM7UUFDekMsNERBQTREO1FBQzVELGdEQUFnRDtRQUNoRCxrREFBa0Q7UUFDbEQsY0FBYztRQUNkLDhEQUE4RDtRQUM5RCxTQUFTO1FBQ1QseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4QixPQUFPO1FBQ1AsSUFBSTtJQUNOLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsa0RBQWtEO0lBQ2xELGNBQWM7SUFDZCxNQUFNO0lBRU4sdUJBQXVCO0lBQ3ZCLHFGQUFxRjtJQUNyRix1Q0FBdUM7SUFDdkMscUNBQXFDO0lBQ3JDLFVBQVU7SUFFViwrQkFBK0I7SUFFL0IsOERBQThEO0lBQzlELHlCQUF5QjtJQUN6Qiw0QkFBNEI7SUFDNUIsc0RBQXNEO0lBQ3RELE9BQU87SUFFUCxxREFBcUQ7SUFDckQsdUNBQXVDO0lBQ3ZDLHlCQUF5QjtJQUN6QiwwRUFBMEU7SUFDMUUsNEJBQTRCO0lBQzVCLG9CQUFvQjtJQUNwQiw2RUFBNkU7SUFDN0UsYUFBYTtJQUNiLFdBQVc7SUFFWCxnREFBZ0Q7SUFDaEQseUNBQXlDO0lBQ3pDLHVCQUF1QjtJQUN2QixjQUFjO0lBRWQsK0RBQStEO0lBQy9ELG1EQUFtRDtJQUNuRCxVQUFVO0lBQ1YsSUFBSTtJQUVKLGFBQWE7UUFDWCxnQ0FBZ0M7SUFDbEMsQ0FBQzs7dUhBMUdVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHdMQVFILGdCQUFnQiw2QkN4QnBELHdwQ0E2QkE7MkZEYmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLDJCQUEyQjs4R0FNNUIsT0FBTztzQkFBZixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEV4cGFuZGFibGVTZWN0aW9uIH0gZnJvbSAnLi4vLi4vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL2V4cGFuZGFibGUtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zbWFydC1maWx0ZXIvYXBpL2ZpbHRlci9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlck1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cCB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlckdyb3VwJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyLWVkaXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zbWFydC1maWx0ZXItcGFyYW0vc21hcnQtZmlsdGVyLXBhcmFtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyVWlNb2RlbCB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1maWx0ZXItZ3JvdXAtcGFyYW1zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlclBhcmFtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgc2VydmljZSE6IFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZTtcclxuICBmaWx0ZXJCdWlsZGVyPzogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJNb2RlbDtcclxuXHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PltdID0gW107XHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc21hcnRGaWx0ZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBmaWx0ZXJWY1JlZj86IFZpZXdDb250YWluZXJSZWY7XHJcbiAgLy8gZmlsdGVyQ29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPFNtYXJ0RmlsdGVyQ29tcG9uZW50PjtcclxuICAvLyBmaWx0ZXI/OiBTbWFydEZpbHRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5tb2RlbENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFVwKHRoaXMuc2VydmljZS5tb2RlbCEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRVcChtb2RlbDogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlckJ1aWxkZXIgPSBtb2RlbC5tb2RlbDtcclxuICAgIC8vIHRoaXMuY29uc3RydWN0RmlsdGVyKCk7XHJcblxyXG4gICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEV4cGFuZGFibGVTZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbHRlckJ1aWxkZXIhLmdyb3Vwcykge1xyXG4gICAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9ucyA9IHRoaXMuZmlsdGVyQnVpbGRlciEuZ3JvdXBzLm1hcChcclxuICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cDogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IGZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAubGFiZWwhLFxyXG4gICAgICAgICAgICBjc3NDbGFzczogJ2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAnLFxyXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICBncm91cDogZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cC5maWVsZHMsXHJcbiAgICAgICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGlucHV0TmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICBpc0V4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5zZXJ2aWNlLm1vZGVsPy5leHRlcm5hbEZpbHRlckdyb3VwKSB7XHJcbiAgICAvLyAgIHRoaXMuZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsID0ge1xyXG4gICAgLy8gICAgIHRpdGxlOiB0aGlzLnNlcnZpY2UubW9kZWwuZXh0ZXJuYWxGaWx0ZXJHcm91cC5sYWJlbCEsXHJcbiAgICAvLyAgICAgY3NzQ2xhc3M6ICdmaWx0ZXJFeHByZXNzaW9uQnVpbGRlckdyb3VwJyxcclxuICAgIC8vICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICAvLyAgICAgZGF0YToge1xyXG4gICAgLy8gICAgICAgZ3JvdXA6IHRoaXMuc2VydmljZS5tb2RlbC5leHRlcm5hbEZpbHRlckdyb3VwLmZpZWxkcyxcclxuICAgIC8vICAgICB9LFxyXG4gICAgLy8gICAgIGlucHV0TmFtZTogJ2RhdGEnLFxyXG4gICAgLy8gICAgIGlzRXhwYW5kZWQ6IHRydWUsXHJcbiAgICAvLyAgIH07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAvLyBjb25zdHJ1Y3RGaWx0ZXIoKTogdm9pZCB7XHJcbiAgLy8gICBpZiAodGhpcy5maWx0ZXIgJiYgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYpIHtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIC8vIHRoaXMuZmlsdGVyID0ge1xyXG4gIC8vICAgLy8gICBkYXRhOiB0aGlzLnNlcnZpY2UubW9kZWw/Lmdyb3VwRmlsdGVyPy5maWx0ZXJzISBhcyBGaWx0ZXJFeHByZXNzaW9uRmllbGRbXSxcclxuICAvLyAgIC8vICAgdHlwZTogU21hcnRGaWx0ZXJUeXBlLlNpbXBsZSxcclxuICAvLyAgIC8vICAgc2hvd1Bvc3NpYmxlQWN0aW9uczogZmFsc2UsXHJcbiAgLy8gICAvLyB9O1xyXG5cclxuICAvLyAgIHRoaXMuZmlsdGVyVmNSZWY/LmNsZWFyKCk7XHJcblxyXG4gIC8vICAgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgLy8gICAgIHRoaXMuZmlsdGVyVmNSZWYhLFxyXG4gIC8vICAgICBTbWFydEZpbHRlckNvbXBvbmVudCxcclxuICAvLyAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snZmlsdGVyJywgdGhpcy5maWx0ZXJdXSlcclxuICAvLyAgICk7XHJcblxyXG4gIC8vICAgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYuaW5zdGFuY2U/LnNlcnZpY2UuY2hhbmdlXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICAgIGxldCB1aUFjdGlvbjogVWlBY3Rpb24gPSB0aGlzLnNlcnZpY2UubW9kZWw/LmZpbHRlckdyb3Vwc0FjdGlvbiE7XHJcbiAgLy8gICAgICAgdWlBY3Rpb24ucGFyYW1zID0ge1xyXG4gIC8vICAgICAgICAgZmlsdGVyOiB7XHJcbiAgLy8gICAgICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVyQ29tcG9uZW50UmVmPy5pbnN0YW5jZS5zZXJ2aWNlLmZpbHRlcj8uZGF0YSxcclxuICAvLyAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgLy8gbGV0IHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgLy8gICAgICAgLy8gICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAvLyAgICAgICAvLyAgIHVpQWN0aW9uLFxyXG4gIC8vICAgICAgIC8vIH07XHJcblxyXG4gIC8vICAgICAgIC8vIHRoaXMudWlBY3Rpb25TZXJ2aWNlLnVpQWN0aW9uTW9kZWwgPSB1aUFjdGlvbk1vZGVsO1xyXG4gIC8vICAgICAgIC8vIHRoaXMudWlBY3Rpb25TZXJ2aWNlLmV4ZWN1dGUodWlBY3Rpb24pO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIGFkZERhdGFTb3VyY2UoKSB7XHJcbiAgICAvLyB0aGlzLnNlcnZpY2UuYWRkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFyZ2V0R3JvdXBGaWx0ZXJQYXJhbXNDb250YWluZXJcIj5cclxuICA8bmctdGVtcGxhdGUgI3NtYXJ0RmlsdGVyPjwvbmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2Utb3B0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYnRuc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YVNvdXJjZS1idG5cIj5Lw7xsc8WRIGFkYXRiw6F6aXM8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYnRuIGRhdGFTb3VyY2UtYnRuLWRpc2FibGVkXCI+QmVsc8WRIGFkYXRiw6F6aXM8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYWRkLWRhdGFiYXNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLWFkZC1kYXRhYmFzZS10aXRsZVwiPlxyXG4gICAgICAgIDxzbWFydC1pY29uIGljb249XCJJYzI0X1ZpZXdfVGFibGVcIiBjb2xvcj1cInN1Y2Vzc1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICBBZGF0YsOhemlzXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uIHRpdGxlPVwiYWRkXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGREYXRhU291cmNlKClcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBpY29uPVwiSWMyNF9QbHVzX0NpcmNsZVwiIGNvbG9yPVwic3VjY2Vzc1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic2VjdGlvbnNcIj5cclxuICAgIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cclxuICAgICAgY2xhc3M9XCJleGNlbFwiXHJcbiAgICAgICpuZ0lmPVwiZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsXCJcclxuICAgICAgW2RhdGFdPVwiZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsIVwiXHJcbiAgICA+PC9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24+XHJcbiAgICA8c21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uXHJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBleHBhbmRhYmxlU2VjdGlvbnNcIlxyXG4gICAgPjwvc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -17,6 +17,7 @@ import { SmartFilterModule } from './smart-filter/smart-filter.module';
17
17
  import { SmartGridModule } from './smart-grid/smart-grid.module';
18
18
  import { SmartNavbarModule } from './smart-navbar/smart-navbar.module';
19
19
  import { SmartTabGroupModule } from './smart-tab-group/smart-tab-group.module';
20
+ import { SmartFilterEditorModule } from './smart-filter-editor/smart-filter-editor.module';
20
21
  import * as i0 from "@angular/core";
21
22
  export class SmartNgClientModule {
22
23
  }
@@ -35,7 +36,8 @@ SmartNgClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
35
36
  SmartTabGroupModule,
36
37
  SmarttableModule,
37
38
  SmartExpandableSectionModule,
38
- SmartComponentLayoutModule], exports: [ComponentFactoryServiceModule,
39
+ SmartComponentLayoutModule,
40
+ SmartFilterEditorModule], exports: [ComponentFactoryServiceModule,
39
41
  SmartComponentLayoutModule,
40
42
  SmartdialogModule,
41
43
  SmartExpandableSectionModule,
@@ -66,6 +68,7 @@ SmartNgClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
66
68
  SmarttableModule,
67
69
  SmartExpandableSectionModule,
68
70
  SmartComponentLayoutModule,
71
+ SmartFilterEditorModule,
69
72
  ], ComponentFactoryServiceModule,
70
73
  SmartComponentLayoutModule,
71
74
  SmartdialogModule,
@@ -100,6 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
100
103
  SmarttableModule,
101
104
  SmartExpandableSectionModule,
102
105
  SmartComponentLayoutModule,
106
+ SmartFilterEditorModule,
103
107
  ],
104
108
  exports: [
105
109
  ComponentFactoryServiceModule,
@@ -121,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
121
125
  providers: [SmartNgClientService],
122
126
  }]
123
127
  }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmctY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW5nLWNsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUF3Qy9FLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFyQ2YsMEJBQTBCLGFBRXZDLGFBQWE7UUFDYixlQUFlO1FBQ2YsNkJBQTZCO1FBQzdCLHNCQUFzQjtRQUN0QixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixlQUFlO1FBQ2YsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsMEJBQTBCLGFBRzFCLDZCQUE2QjtRQUM3QiwwQkFBMEI7UUFDMUIsaUJBQWlCO1FBQ2pCLDRCQUE0QjtRQUM1QixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGVBQWU7UUFDZixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsZ0JBQWdCO1FBQ2hCLHNCQUFzQjtRQUN0QiwwQkFBMEI7UUFDMUIsZUFBZTtpSEFJTixtQkFBbUIsYUFGbkIsQ0FBQyxvQkFBb0IsQ0FBQyxZQWxDeEI7WUFDUCxhQUFhO1lBQ2IsZUFBZTtZQUNmLDZCQUE2QjtZQUM3QixzQkFBc0I7WUFDdEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsNEJBQTRCO1lBQzVCLDBCQUEwQjtTQUMzQixFQUVDLDZCQUE2QjtRQUM3QiwwQkFBMEI7UUFDMUIsaUJBQWlCO1FBQ2pCLDRCQUE0QjtRQUM1QixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGVBQWU7UUFDZixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsZ0JBQWdCO1FBQ2hCLHNCQUFzQjtRQUV0QixlQUFlOzJGQUlOLG1CQUFtQjtrQkF0Qy9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDUCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsNkJBQTZCO3dCQUM3QixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsNkJBQTZCO3dCQUM3QiwwQkFBMEI7d0JBQzFCLGlCQUFpQjt3QkFDakIsNEJBQTRCO3dCQUM1QixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLGVBQWU7cUJBQ2hCO29CQUNELFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvbk1vZHVsZSB9IGZyb20gJy4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1jbGllbnQvc21hcnQtZmlsZS11cGxvYWRlci9zbWFydC1maWxlLXVwbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtYXJ0TmdDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1uZy1jbGllbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUgfSBmcm9tICcuL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnR0YWJsZU1vZHVsZSB9IGZyb20gJy4vc21hcnQtdGFibGUvc21hcnR0YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydHRyZWVNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LXRyZWUvc21hcnR0cmVlLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0Zm9ybU1vZHVsZSB9IGZyb20gJy4vc21hcnQtZm9ybS9zbWFydGZvcm0ubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSB9IGZyb20gJy4vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydEljb25Nb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWljb24vc21hcnQtaWNvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydENvbXBvbmVudExheW91dE1vZHVsZSB9IGZyb20gJy4vc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRkaWFsb2dNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWRpYWxvZy9zbWFydGRpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlck1vZHVsZSB9IGZyb20gJy4vc21hcnQtZmlsdGVyL3NtYXJ0LWZpbHRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydEdyaWRNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWdyaWQvc21hcnQtZ3JpZC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhck1vZHVsZSB9IGZyb20gJy4vc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydFRhYkdyb3VwTW9kdWxlIH0gZnJvbSAnLi9zbWFydC10YWItZ3JvdXAvc21hcnQtdGFiLWdyb3VwLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1NtYXJ0RmlsZVVwbG9hZGVyQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxyXG4gICAgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2VNb2R1bGUsXHJcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxyXG4gICAgU21hcnRkaWFsb2dNb2R1bGUsXHJcbiAgICBTbWFydEZpbHRlck1vZHVsZSxcclxuICAgIFNtYXJ0Zm9ybU1vZHVsZSxcclxuICAgIFNtYXJ0R3JpZE1vZHVsZSxcclxuICAgIFNtYXJ0SWNvbk1vZHVsZSxcclxuICAgIFNtYXJ0TmF2YmFyTW9kdWxlLFxyXG4gICAgU21hcnRTZXNzaW9uTW9kdWxlLFxyXG4gICAgU21hcnRUYWJHcm91cE1vZHVsZSxcclxuICAgIFNtYXJ0dGFibGVNb2R1bGUsXHJcbiAgICBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlLFxyXG4gICAgU21hcnRDb21wb25lbnRMYXlvdXRNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDb21wb25lbnRGYWN0b3J5U2VydmljZU1vZHVsZSxcclxuICAgIFNtYXJ0Q29tcG9uZW50TGF5b3V0TW9kdWxlLFxyXG4gICAgU21hcnRkaWFsb2dNb2R1bGUsXHJcbiAgICBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlLFxyXG4gICAgU21hcnRGaWx0ZXJNb2R1bGUsXHJcbiAgICBTbWFydGZvcm1Nb2R1bGUsXHJcbiAgICBTbWFydEdyaWRNb2R1bGUsXHJcbiAgICBTbWFydEljb25Nb2R1bGUsXHJcbiAgICBTbWFydE5hdmJhck1vZHVsZSxcclxuICAgIFNtYXJ0U2Vzc2lvbk1vZHVsZSxcclxuICAgIFNtYXJ0VGFiR3JvdXBNb2R1bGUsXHJcbiAgICBTbWFydHRhYmxlTW9kdWxlLFxyXG4gICAgU21hcnRWaWV3Q29udGV4dE1vZHVsZSxcclxuICAgIFNtYXJ0RmlsZVVwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgU21hcnR0cmVlTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbU21hcnROZ0NsaWVudFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnROZ0NsaWVudE1vZHVsZSB7fVxyXG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmctY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LW5nLWNsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7QUF5QzNGLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkF0Q2YsMEJBQTBCLGFBRXZDLGFBQWE7UUFDYixlQUFlO1FBQ2YsNkJBQTZCO1FBQzdCLHNCQUFzQjtRQUN0QixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixlQUFlO1FBQ2YsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLHVCQUF1QixhQUd2Qiw2QkFBNkI7UUFDN0IsMEJBQTBCO1FBQzFCLGlCQUFpQjtRQUNqQiw0QkFBNEI7UUFDNUIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixlQUFlO1FBQ2YsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsMEJBQTBCO1FBQzFCLGVBQWU7aUhBSU4sbUJBQW1CLGFBRm5CLENBQUMsb0JBQW9CLENBQUMsWUFuQ3hCO1lBQ1AsYUFBYTtZQUNiLGVBQWU7WUFDZiw2QkFBNkI7WUFDN0Isc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGVBQWU7WUFDZixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLDRCQUE0QjtZQUM1QiwwQkFBMEI7WUFDMUIsdUJBQXVCO1NBQ3hCLEVBRUMsNkJBQTZCO1FBQzdCLDBCQUEwQjtRQUMxQixpQkFBaUI7UUFDakIsNEJBQTRCO1FBQzVCLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsZUFBZTtRQUNmLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBRXRCLGVBQWU7MkZBSU4sbUJBQW1CO2tCQXZDL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZiw2QkFBNkI7d0JBQzdCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLHVCQUF1QjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDZCQUE2Qjt3QkFDN0IsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLDRCQUE0Qjt3QkFDNUIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixlQUFlO3FCQUNoQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTbWFydFNlc3Npb25Nb2R1bGUgfSBmcm9tICcuL3Nlc3Npb24vc21hcnQtc2Vzc2lvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtY2xpZW50L3NtYXJ0LWZpbGUtdXBsb2FkZXIvc21hcnQtZmlsZS11cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydE5nQ2xpZW50U2VydmljZSB9IGZyb20gJy4vc21hcnQtbmctY2xpZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0TW9kdWxlIH0gZnJvbSAnLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0dGFibGVNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LXRhYmxlL3NtYXJ0dGFibGUubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnR0cmVlTW9kdWxlIH0gZnJvbSAnLi9zbWFydC10cmVlL3NtYXJ0dHJlZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1Nb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWZvcm0vc21hcnRmb3JtLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24ubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRJY29uTW9kdWxlIH0gZnJvbSAnLi9zbWFydC1pY29uL3NtYXJ0LWljb24ubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRDb21wb25lbnRMYXlvdXRNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvc21hcnQtY29tcG9uZW50LWxheW91dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZU1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0ZGlhbG9nTW9kdWxlIH0gZnJvbSAnLi9zbWFydC1kaWFsb2cvc21hcnRkaWFsb2cubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LWZpbHRlci9zbWFydC1maWx0ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRHcmlkTW9kdWxlIH0gZnJvbSAnLi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJNb2R1bGUgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIubW9kdWxlJztcclxuaW1wb3J0IHsgU21hcnRUYWJHcm91cE1vZHVsZSB9IGZyb20gJy4vc21hcnQtdGFiLWdyb3VwL3NtYXJ0LXRhYi1ncm91cC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlckVkaXRvck1vZHVsZSB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWVkaXRvci9zbWFydC1maWx0ZXItZWRpdG9yLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1NtYXJ0RmlsZVVwbG9hZGVyQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxyXG4gICAgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2VNb2R1bGUsXHJcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxyXG4gICAgU21hcnRkaWFsb2dNb2R1bGUsXHJcbiAgICBTbWFydEZpbHRlck1vZHVsZSxcclxuICAgIFNtYXJ0Zm9ybU1vZHVsZSxcclxuICAgIFNtYXJ0R3JpZE1vZHVsZSxcclxuICAgIFNtYXJ0SWNvbk1vZHVsZSxcclxuICAgIFNtYXJ0TmF2YmFyTW9kdWxlLFxyXG4gICAgU21hcnRTZXNzaW9uTW9kdWxlLFxyXG4gICAgU21hcnRUYWJHcm91cE1vZHVsZSxcclxuICAgIFNtYXJ0dGFibGVNb2R1bGUsXHJcbiAgICBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlLFxyXG4gICAgU21hcnRDb21wb25lbnRMYXlvdXRNb2R1bGUsXHJcbiAgICBTbWFydEZpbHRlckVkaXRvck1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlTW9kdWxlLFxyXG4gICAgU21hcnRDb21wb25lbnRMYXlvdXRNb2R1bGUsXHJcbiAgICBTbWFydGRpYWxvZ01vZHVsZSxcclxuICAgIFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUsXHJcbiAgICBTbWFydEZpbHRlck1vZHVsZSxcclxuICAgIFNtYXJ0Zm9ybU1vZHVsZSxcclxuICAgIFNtYXJ0R3JpZE1vZHVsZSxcclxuICAgIFNtYXJ0SWNvbk1vZHVsZSxcclxuICAgIFNtYXJ0TmF2YmFyTW9kdWxlLFxyXG4gICAgU21hcnRTZXNzaW9uTW9kdWxlLFxyXG4gICAgU21hcnRUYWJHcm91cE1vZHVsZSxcclxuICAgIFNtYXJ0dGFibGVNb2R1bGUsXHJcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxyXG4gICAgU21hcnRGaWxlVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBTbWFydHRyZWVNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtTbWFydE5nQ2xpZW50U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE5nQ2xpZW50TW9kdWxlIHt9XHJcbiJdfQ==
@@ -15,7 +15,7 @@ export class DefaultActionsPopupComponent {
15
15
  defaultActionButtonClicked(button) {
16
16
  let actionsOfRow = this.row?.actions;
17
17
  if (actionsOfRow) {
18
- let uiAction = actionsOfRow.filter((action) => action.code === button.args[0].code);
18
+ let uiAction = actionsOfRow.find((action) => action.code === button.args[0].code);
19
19
  if (button.callback) {
20
20
  button.callback(button.args, this.row, uiAction);
21
21
  }
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
35
35
  }], row: [{
36
36
  type: Input
37
37
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxPQUFPLEVBQW9CLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU2hGLE1BQU0sT0FBTyw0QkFBNEI7SUFPdkM7UUFKZ0IscUJBQWdCLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBSW5ELENBQUM7SUFFaEIsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDBCQUEwQixDQUFDLE1BQXdCO1FBQ2pELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO1FBQ3JDLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQ2hDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFPLENBQUMsSUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUQsQ0FBQztZQUNGLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbEQ7U0FDRjtJQUNILENBQUM7O3lIQXZCVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw4TUFDUyxjQUFjLDZCQ2JoRSx3YUFTQTsyRkRHYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMkJBQTJCOzBFQUs2QixPQUFPO3NCQUF4RSxTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtnQkFHdkQsT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5cclxuaW1wb3J0IHsgU21hcnRUYWJsZUJ1dHRvbiwgU21hcnRUYWJsZUJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9zbWFydHRhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgR3JpZFJvdyB9IGZyb20gJy4uLy4uLy4uL3NtYXJ0LWdyaWQvYXBpL2dyaWQtYXBpL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZGVmYXVsdC1hY3Rpb25zLXBvcHVwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdEFjdGlvbnNNZW51VHJpZ2dlcicsIHsgcmVhZDogTWF0TWVudVRyaWdnZXIgfSkgdHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9IFNtYXJ0VGFibGVCdXR0b25UeXBlLlNFUEFSQVRPUjtcclxuICBASW5wdXQoKSBidXR0b25zITogU21hcnRUYWJsZUJ1dHRvbltdO1xyXG4gIEBJbnB1dCgpIHJvdyE6IEdyaWRSb3c7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgb3BlbkRlZmF1bHRBY3Rpb25zTWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJpZ2dlci5vcGVuTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgZGVmYXVsdEFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogdm9pZCB7XHJcbiAgICBsZXQgYWN0aW9uc09mUm93ID0gdGhpcy5yb3c/LmFjdGlvbnM7XHJcbiAgICBpZiAoYWN0aW9uc09mUm93KSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbiA9IGFjdGlvbnNPZlJvdy5maWx0ZXIoXHJcbiAgICAgICAgKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlID09PSBidXR0b24hLmFyZ3MhWzBdLmNvZGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKGJ1dHRvbi5jYWxsYmFjaykge1xyXG4gICAgICAgIGJ1dHRvbi5jYWxsYmFjayhidXR0b24uYXJncywgdGhpcy5yb3csIHVpQWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNkZWZhdWx0QWN0aW9uc01lbnVUcmlnZ2VyIFttYXRNZW51VHJpZ2dlckZvcl09XCJkZWZhdWx0QWN0aW9uc01lbnVcIj48L2Rpdj5cclxuPG1hdC1tZW51ICNkZWZhdWx0QWN0aW9uc01lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNcIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJidG4udHlwZSA9PT0gJ05PUk1BTCdcIiAoY2xpY2spPVwiZGVmYXVsdEFjdGlvbkJ1dHRvbkNsaWNrZWQoYnRuKVwiIG1hdC1tZW51LWl0ZW0+XHJcbiAgICAgIHt7IGJ0bi5sYWJlbCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJidG4udHlwZSA9PT0gQUNUSU9OX1NFUEVSQVRPUlwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxPQUFPLEVBQW9CLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU2hGLE1BQU0sT0FBTyw0QkFBNEI7SUFPdkM7UUFKZ0IscUJBQWdCLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBSW5ELENBQUM7SUFFaEIsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDBCQUEwQixDQUFDLE1BQXdCO1FBQ2pELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO1FBQ3JDLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksUUFBUSxHQUF5QixZQUFZLENBQUMsSUFBSSxDQUNwRCxDQUFDLE1BQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTyxDQUFDLElBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzVELENBQUM7WUFDRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDOzt5SEF2QlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsOE1BQ1MsY0FBYyw2QkNiaEUsd2FBU0E7MkZER2EsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDJCQUEyQjswRUFLNkIsT0FBTztzQkFBeEUsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7Z0JBR3ZELE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuXHJcbmltcG9ydCB7IFNtYXJ0VGFibGVCdXR0b24sIFNtYXJ0VGFibGVCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vc21hcnR0YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyaWRSb3cgfSBmcm9tICcuLi8uLi8uLi9zbWFydC1ncmlkL2FwaS9ncmlkLWFwaS9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRlZmF1bHQtYWN0aW9ucy1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRBY3Rpb25zTWVudVRyaWdnZXInLCB7IHJlYWQ6IE1hdE1lbnVUcmlnZ2VyIH0pIHRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9TRVBFUkFUT1IgPSBTbWFydFRhYmxlQnV0dG9uVHlwZS5TRVBBUkFUT1I7XHJcbiAgQElucHV0KCkgYnV0dG9ucyE6IFNtYXJ0VGFibGVCdXR0b25bXTtcclxuICBASW5wdXQoKSByb3chOiBHcmlkUm93O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIGRlZmF1bHRBY3Rpb25CdXR0b25DbGlja2VkKGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IHZvaWQge1xyXG4gICAgbGV0IGFjdGlvbnNPZlJvdyA9IHRoaXMucm93Py5hY3Rpb25zO1xyXG4gICAgaWYgKGFjdGlvbnNPZlJvdykge1xyXG4gICAgICBsZXQgdWlBY3Rpb246IFVpQWN0aW9uIHwgdW5kZWZpbmVkID0gYWN0aW9uc09mUm93LmZpbmQoXHJcbiAgICAgICAgKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlID09PSBidXR0b24hLmFyZ3MhWzBdLmNvZGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKGJ1dHRvbi5jYWxsYmFjaykge1xyXG4gICAgICAgIGJ1dHRvbi5jYWxsYmFjayhidXR0b24uYXJncywgdGhpcy5yb3csIHVpQWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNkZWZhdWx0QWN0aW9uc01lbnVUcmlnZ2VyIFttYXRNZW51VHJpZ2dlckZvcl09XCJkZWZhdWx0QWN0aW9uc01lbnVcIj48L2Rpdj5cclxuPG1hdC1tZW51ICNkZWZhdWx0QWN0aW9uc01lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNcIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJidG4udHlwZSA9PT0gJ05PUk1BTCdcIiAoY2xpY2spPVwiZGVmYXVsdEFjdGlvbkJ1dHRvbkNsaWNrZWQoYnRuKVwiIG1hdC1tZW51LWl0ZW0+XHJcbiAgICAgIHt7IGJ0bi5sYWJlbCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJidG4udHlwZSA9PT0gQUNUSU9OX1NFUEVSQVRPUlwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
@@ -418,6 +418,12 @@ export class Table {
418
418
  let actionCodesFromRow = row?.actions.map((action) => action.code);
419
419
  let filteredActions = this.smartTable.defaultActions?.filter((action) => actionCodesFromRow.includes(action.code));
420
420
  if (filteredActions && filteredActions.length > 0) {
421
+ if (filteredActions.length === 1) {
422
+ if (this.smartTable.onRowDoubleClick) {
423
+ this.smartTable.onRowDoubleClick(row);
424
+ return;
425
+ }
426
+ }
421
427
  this.defaultActionMenuComponents
422
428
  .toArray()
423
429
  .find((comp) => comp.row.id === row.id)
@@ -454,4 +460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
454
460
  }], smartTable: [{
455
461
  type: Input
456
462
  }] } });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFHTCxvQkFBb0IsRUFFcEIsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQixlQUFlLEVBQ2YsY0FBYyxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUczRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQzs7O0FBS25ILE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRFLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBSkksQ0FBQztJQU01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T0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRixJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQ3pFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSyxDQUFDLENBQzFDLENBQUM7U0FDSDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2tHQWhpQlUsS0FBSztzRkFBTCxLQUFLLGlOQUVGLGNBQWMsc0dBQ1UsZ0JBQWdCLDhEQUl4Qyw0QkFBNEIsZ0RBVGhDLEVBQUU7MkZBRUQsS0FBSztrQkFIakIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjs4R0FHK0IsUUFBUTtzQkFBckMsWUFBWTt1QkFBQyxjQUFjO2dCQUU1QixLQUFLO3NCQURKLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUt4RCwyQkFBMkI7c0JBRDFCLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUdwQixZQUFZO3NCQUFqQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRVgsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0VGFibGUsXHJcbiAgU21hcnRUYWJsZUJ1dHRvbixcclxuICBTbWFydFRhYmxlQnV0dG9uVHlwZSxcclxuICBTbWFydFRhYmxlSGVhZGVyLFxyXG4gIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUsXHJcbiAgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbixcclxuICBTbWFydFRhYmxlT3JkZXIsXHJcbiAgU21hcnRUYWJsZVR5cGUsXHJcbn0gZnJvbSAnLi4vc21hcnR0YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZWZhdWx0LWFjdGlvbnMtcG9wdXAvZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkcmVuKE1hdE1lbnVUcmlnZ2VyKSB0cmlnZ2VycyE6IFF1ZXJ5TGlzdDxNYXRNZW51VHJpZ2dlcj47XHJcbiAgQFZpZXdDaGlsZHJlbignZXhwYW5kZWRBcmVhJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgdmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmW107XHJcbiAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudClcclxuICBkZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8RGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ215VGFibGUnKSBteVRhYmxlQ2hpbGQhOiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBzbWFydFRhYmxlITogU21hcnRUYWJsZTxhbnk+O1xyXG4gIHRhYmxlVHlwZSA9IFNtYXJ0VGFibGVUeXBlO1xyXG4gIHNtYXJ0VGFibGVCdXR0b25UeXBlID0gU21hcnRUYWJsZUJ1dHRvblR5cGU7XHJcbiAgaGlnaGxpZ2h0ZWRSb3dzOiBhbnlbXSA9IFtdO1xyXG4gIHNvcnRFdmVudDogU3ViamVjdDxTbWFydFRhYmxlSGVhZGVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnkgfCBudWxsO1xyXG5cclxuICBlbGVtZW50PzogYW55O1xyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSkge31cclxuXHJcbiAgcHVibGljIGFzeW5jVHJhbnNsYXRpb25SZXN1bHQgPSAodHJhbnNsYXRvcjogYW55LCBwYXJhbTogc3RyaW5nKSA9PiB0cmFuc2xhdG9yKHBhcmFtKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9TRVBFUkFUT1IgPSAnX2FjdGlvblNlcGFyYXRvcl8nO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc29ydGFibGUpIHRoaXMuc29ydEV2ZW50ID0gbmV3IFN1YmplY3QoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uUm93Q2xpY2soZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgIHRoaXMub25Sb3dDbGljayhlbGVtZW50KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIGlmICghdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2sgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLlJPV19TRUxFQ1QpIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNtYXJ0VGFibGUoc21hcnRUYWJsZTogU21hcnRUYWJsZTxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUgPSBzbWFydFRhYmxlO1xyXG4gICAgdGhpcy5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJSb3dzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5teVRhYmxlQ2hpbGQucmVuZGVyUm93cygpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dEb3VibGVDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMgJiYgdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uQXNjID8/ICdrZXlib2FyZF9hcnJvd19kb3duJ1xyXG4gICAgICAgIDogdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaGFzU29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIHJldHVybiB0YWJsZUhlYWRlcj8ub3JkZXJOdW1iZXIgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZ2V0U29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBgZmlsdGVyXyR7dGFibGVIZWFkZXIub3JkZXJOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldEljb24odmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBpY29uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaWNvbjtcclxuICB9XHJcblxyXG4gIGdldENvbG9yKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogVGhlbWVQYWxldHRlIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbigpOiB0eXBlb2YgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbiB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KFxyXG4gICAgICAgIC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubWFwKChyb3c6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSEpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cclxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXJvdykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtcclxuICAgICAgcm93LnBvc2l0aW9uICsgMVxyXG4gICAgfWA7XHJcbiAgfVxyXG5cclxuICBpc0hpZ2hsaWdodGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluY2x1ZGVzKHJvdyk7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodE9uUm93Q2xpY2spIHtcclxuICAgICAgaWYgKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZXhwYW5kYWJsZSAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5vblRvZ2dsZShyb3cpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uUm93RG91YmxlQ2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblRvZ2dsZShlbGVtZW50OiBhbnksIGV2ZW50PzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1NtYXJ0VGFibGVSb3dFeHBhbmRlciBub3QgZm91bmQhLiBQbGVhc2UgcHJvdmlkZSBhIFNtYXJ0VGFibGVSb3dFeHBhbmRlciBpbXBsZW1lbnRhdGlvbi4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgb2xkSW5kZXggPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuZXhwYW5kZWRFbGVtZW50XHJcbiAgICApO1xyXG4gICAgaWYgKG9sZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBvbGRJbmRleCk7XHJcbiAgICAgIHJlZlswXS5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRlZEVsZW1lbnQgPSB0aGlzLmV4cGFuZGVkRWxlbWVudCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xyXG5cclxuICAgIGxldCBuZXdJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHJvd0RhdGFSZXNwb25zZTtcclxuXHJcbiAgICBpZiAobmV3SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuYXN5bmNPbkV4cGFuZCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgICAgdGhpcy52Y1JlZj8uZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hLFxyXG4gICAgICAgICAgTG9hZGluZ0NvbXBvbmVudCxcclxuICAgICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByb3dEYXRhUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNtYXJ0VGFibGUucm93RXhwYW5kZXI/LmV4cGFuZEFzeW5jKG5ld0luZGV4KTtcclxuXHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMudmNSZWYhLmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdITtcclxuICAgICAgICByZWYuY2xlYXIoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgdGhpcy52Y1JlZj8uZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hLFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5leHBhbmRlZENvbXBvbmVudCxcclxuICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydyb3dEYXRhJywgcm93RGF0YVJlc3BvbnNlXV0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzICYmXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aCA9PT0gdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3NcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy50b2dnbGUoZWxlbWVudCk7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZC5uZXh0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25TZWxlY3Rpb24oZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93TWVudUJ1dHRvbihlbGVtZW50OiBhbnksIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnMpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lISkubGVuZ3RoO1xyXG5cclxuICAgICAgICByZXR1cm4gbGVuZ3RoID4gMDtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBUaGUgdHlwZSBvZiBwcm9wZXJ0eSAke2J1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWV9IGlzIG5vdCBhIGxpc3QuYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBoZWFkZXJzID0gaGVhZGVyLnNwbGl0KCcuJyk7XHJcbiAgICBpZiAoaGVhZGVycy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gZWxlbWVudDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGhlYWRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGhlYWRlcnNbaW5kZXhdO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWVbZWxlbWVudF07XHJcbiAgICAgICAgaWYgKCF2YWx1ZSAmJiBpbmRleCAhPT0gaGVhZGVycy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZWxlbWVudFtoZWFkZXJdO1xyXG4gIH1cclxuXHJcbiAgc2hvd0J1dHRvbihidXR0b246IFNtYXJ0VGFibGVCdXR0b24sIGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGJ1dHRvbi5zaG93QnV0dG9uSWYpIHtcclxuICAgICAgcmV0dXJuIGJ1dHRvbi5zaG93QnV0dG9uSWYoZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoXHJcbiAgICAgICAgZWxlbWVudCxcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gc2VsZWN0YWJsZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGFibGUgPT09IG51bGwgPyBmYWxzZSA6ICFzZWxlY3RhYmxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKSA/PyBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luYWxQcm9wZXJ0eShoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlci5zdWJzdHJpbmcoJ2RhdGEuJy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlYWRlcjtcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VSZXNvdXJjZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoISgnaWNvbnMnIGluIGVsZW1lbnQpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpO1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVsZW1lbnQuaWNvbnMpLnNvbWUoKGtleSkgPT4ga2V5ID09PSBwcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlSWNvbihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5pZGVudGlmaWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmNvbG9yID8/ICdwcmltYXJ5JztcclxuICB9XHJcblxyXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUocm93OiBhbnkpIHtcclxuICAgIGxldCBhY3Rpb25Db2Rlc0Zyb21Sb3cgPSByb3c/LmFjdGlvbnMubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25zID0gdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT5cclxuICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZpbHRlcmVkQWN0aW9ucyAmJiBmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50c1xyXG4gICAgICAgIC50b0FycmF5KClcclxuICAgICAgICAuZmluZCgoY29tcDogRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCkgPT4gY29tcC5yb3cuaWQgPT09IHJvdy5pZClcclxuICAgICAgICA/Lm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQ6IGFueSk6IFNtYXJ0VGFibGVCdXR0b25bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgYWN0aW9uQ29kZXNGcm9tUm93ID0gZWxlbWVudD8uYWN0aW9ucy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlKTtcclxuICAgIGlmIChhY3Rpb25Db2Rlc0Zyb21Sb3cpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucz8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+XHJcbiAgICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
463
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFHTCxvQkFBb0IsRUFFcEIsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQixlQUFlLEVBQ2YsY0FBYyxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUczRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQzs7O0FBS25ILE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRFLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBSkksQ0FBQztJQU01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LEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxFQUFFLHNCQUFzQixFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBWTtRQUNsQyxJQUFJLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLElBQUksa0JBQWtCLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FDekUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUMsQ0FDMUMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7a0dBdGlCVSxLQUFLO3NGQUFMLEtBQUssaU5BRUYsY0FBYyxzR0FDVSxnQkFBZ0IsOERBSXhDLDRCQUE0QixnREFUaEMsRUFBRTsyRkFFRCxLQUFLO2tCQUhqQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiOzhHQUcrQixRQUFRO3NCQUFyQyxZQUFZO3VCQUFDLGNBQWM7Z0JBRTVCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3hELDJCQUEyQjtzQkFEMUIsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBR3BCLFlBQVk7c0JBQWpDLFNBQVM7dUJBQUMsU0FBUztnQkFFWCxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRUYWJsZSxcclxuICBTbWFydFRhYmxlQnV0dG9uLFxyXG4gIFNtYXJ0VGFibGVCdXR0b25UeXBlLFxyXG4gIFNtYXJ0VGFibGVIZWFkZXIsXHJcbiAgU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSxcclxuICBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uLFxyXG4gIFNtYXJ0VGFibGVPcmRlcixcclxuICBTbWFydFRhYmxlVHlwZSxcclxufSBmcm9tICcuLi9zbWFydHRhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIGVsZW1lbnQ/OiBhbnk7XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5JTkhFUklURUQpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLm9uUm93Q2xpY2soZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVCkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU21hcnRUYWJsZShzbWFydFRhYmxlOiBTbWFydFRhYmxlPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUYWJsZSA9IHNtYXJ0VGFibGU7XHJcbiAgICB0aGlzLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFibGVDaGlsZC5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZSgpOiB0eXBlb2YgU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZTtcclxuICB9XHJcblxyXG4gIHNvcnRCdXR0b25DbGlja2VkKGV2ZW50OiBhbnksIGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNvcnRFdmVudC5uZXh0KGhlYWRlcik7XHJcbiAgfVxyXG5cclxuICBjdXN0b21CdXR0b25DbGlja2VkKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbixcclxuICAgIGVsZW1lbnQ6IGFueSxcclxuICAgIGJ0bj86IGFueSxcclxuICAgIGNsb3NlPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKGJ1dHRvbi50eXBlID09PSBTbWFydFRhYmxlQnV0dG9uVHlwZS5NRU5VICYmIGJ0biA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFidXR0b24uY2FsbGJhY2spIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdXR0b24gd2l0aCBuYW1lICR7YnV0dG9uLmxhYmVsIHx8IGJ1dHRvbi5pY29ufSBkb2VzIG5vdCBoYXZlIGEgY2FsbGJhY2shYCk7XHJcbiAgICB9XHJcbiAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uLmFyZ3MsIGVsZW1lbnQsIGJ0bik7XHJcbiAgICBpZiAoY2xvc2UpIHtcclxuICAgICAgbGV0IG9wZW5NZW51cyA9IHRoaXMudHJpZ2dlcnMuZmlsdGVyKFxyXG4gICAgICAgIChtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXIpID0+IG1hdE1lbnVUcmlnZ2VyLm1lbnVPcGVuXHJcbiAgICAgICk7XHJcbiAgICAgIG9wZW5NZW51cy5mb3JFYWNoKChtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXIpID0+IHtcclxuICAgICAgICBtYXRNZW51VHJpZ2dlci5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1NvcnRhYmxlKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU29ydGFibGVUYWJsZSA9IHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZTtcclxuICAgIGlmIChpc1NvcnRhYmxlVGFibGUpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlci5pc1NvcnRhYmxlICE9PSB1bmRlZmluZWQgPyBoZWFkZXIuaXNTb3J0YWJsZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRTb3J0SWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICBpZiAodGFibGVIZWFkZXIgJiYgdGFibGVIZWFkZXIub3JkZXIpIHtcclxuICAgICAgcmV0dXJuIHRhYmxlSGVhZGVyLm9yZGVyID09PSBTbWFydFRhYmxlT3JkZXIuQVNDXHJcbiAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuc29ydEljb25Bc2MgPz8gJ2tleWJvYXJkX2Fycm93X2Rvd24nXHJcbiAgICAgICAgOiB0aGlzLnNtYXJ0VGFibGUuc29ydEljb25EZXNjID8/ICdrZXlib2FyZF9hcnJvd191cCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBoYXNTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRhYmxlSGVhZGVyPy5vcmRlck51bWJlciAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBnZXRTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICBpZiAodGFibGVIZWFkZXIgJiYgdGFibGVIZWFkZXIub3JkZXJOdW1iZXIpIHtcclxuICAgICAgcmV0dXJuIGBmaWx0ZXJfJHt0YWJsZUhlYWRlci5vcmRlck51bWJlcn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiwgaGVhZGVySW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29ucyA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnM7XHJcblxyXG4gICAgbGV0IGljb246IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VzdG9tVGFibGVIZWFkZXJJY29ucyEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhW2ldO1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlTnVsbCAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyID4gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpY29uO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBUaGVtZVBhbGV0dGUge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBjb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VzdG9tVGFibGVIZWFkZXJJY29ucyEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhW2ldO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciA8IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcblxyXG4gIHRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uKCk6IHR5cGVvZiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uIHtcclxuICAgIHJldHVybiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cclxuICB0b2dnbGVBbGxSb3dzKCkge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuY2xlYXIoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24oZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3QoXHJcbiAgICAgICAgLi4udGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5tYXAoKHJvdzogYW55KSA9PlxyXG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KHJvdywgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5ISlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3QoLi4udGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbih0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBUaGUgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBvbiB0aGUgcGFzc2VkIHJvdyAqL1xyXG4gIGNoZWNrYm94TGFiZWwocm93PzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghcm93KSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHt0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5pc1NlbGVjdGVkKHJvdykgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IHJvdyAke1xyXG4gICAgICByb3cucG9zaXRpb24gKyAxXHJcbiAgICB9YDtcclxuICB9XHJcblxyXG4gIGlzSGlnaGxpZ2h0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5jbHVkZXMocm93KTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5leHBhbmRhYmxlICYmICF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLm9uVG9nZ2xlKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Sb3dEb3VibGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVG9nZ2xlKGVsZW1lbnQ6IGFueSwgZXZlbnQ/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnU21hcnRUYWJsZVJvd0V4cGFuZGVyIG5vdCBmb3VuZCEuIFBsZWFzZSBwcm92aWRlIGEgU21hcnRUYWJsZVJvd0V4cGFuZGVyIGltcGxlbWVudGF0aW9uLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvbGRJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcbiAgICBpZiAob2xkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG9sZEluZGV4KTtcclxuICAgICAgcmVmWzBdLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcm93RGF0YVJlc3BvbnNlO1xyXG5cclxuICAgIGlmIChuZXdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5hc3luY09uRXhwYW5kKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJvd0RhdGFSZXNwb25zZSA9IGF3YWl0IHRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcj8uZXhwYW5kQXN5bmMobmV3SW5kZXgpO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hO1xyXG4gICAgICAgIHJlZi5jbGVhcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3Jvd0RhdGEnLCByb3dEYXRhUmVzcG9uc2VdXSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MgJiZcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93c1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LnRvZ2dsZShlbGVtZW50KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbihlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZW51QnV0dG9uKGVsZW1lbnQ6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUhKS5sZW5ndGg7XHJcblxyXG4gICAgICAgIHJldHVybiBsZW5ndGggPiAwO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSB0eXBlIG9mIHByb3BlcnR5ICR7YnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZX0gaXMgbm90IGEgbGlzdC5gKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IGhlYWRlcnMgPSBoZWFkZXIuc3BsaXQoJy4nKTtcclxuICAgIGlmIChoZWFkZXJzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbGVtZW50O1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaGVhZGVycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gaGVhZGVyc1tpbmRleF07XHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtlbGVtZW50XTtcclxuICAgICAgICBpZiAoIXZhbHVlICYmIGluZGV4ICE9PSBoZWFkZXJzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50W2hlYWRlcl07XHJcbiAgfVxyXG5cclxuICBzaG93QnV0dG9uKGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbiwgZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYnV0dG9uLnNob3dCdXR0b25JZikge1xyXG4gICAgICByZXR1cm4gYnV0dG9uLnNob3dCdXR0b25JZihlbGVtZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0YWJsZSA9IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShcclxuICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBzZWxlY3RhYmxlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0YWJsZSA9PT0gbnVsbCA/IGZhbHNlIDogIXNlbGVjdGFibGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbj8uaXNTZWxlY3RlZChcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApID8/IGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcmlnaW5hbFByb3BlcnR5KGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gaGVhZGVyLnN1YnN0cmluZygnZGF0YS4nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZVJlc291cmNlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghKCdpY29ucycgaW4gZWxlbWVudCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnR5ID0gdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcik7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZWxlbWVudC5pY29ucykuc29tZSgoa2V5KSA9PiBrZXkgPT09IHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VJY29uKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmlkZW50aWZpZXI7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlQ29sb3IoZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gZWxlbWVudC5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV0uY29sb3IgPz8gJ3ByaW1hcnknO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRlZmF1bHRBY3Rpb25zTWVudShyb3c6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IHJvdz8uYWN0aW9ucy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlKTtcclxuICAgIGxldCBmaWx0ZXJlZEFjdGlvbnMgPSB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnM/LmZpbHRlcigoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PlxyXG4gICAgICBhY3Rpb25Db2Rlc0Zyb21Sb3cuaW5jbHVkZXMoYWN0aW9uLmNvZGUhKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyZWRBY3Rpb25zICYmIGZpbHRlcmVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayhyb3cpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50c1xyXG4gICAgICAgIC50b0FycmF5KClcclxuICAgICAgICAuZmluZCgoY29tcDogRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCkgPT4gY29tcC5yb3cuaWQgPT09IHJvdy5pZClcclxuICAgICAgICA/Lm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQ6IGFueSk6IFNtYXJ0VGFibGVCdXR0b25bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgYWN0aW9uQ29kZXNGcm9tUm93ID0gZWxlbWVudD8uYWN0aW9ucy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlKTtcclxuICAgIGlmIChhY3Rpb25Db2Rlc0Zyb21Sb3cpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucz8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+XHJcbiAgICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -21,4 +21,5 @@ export * from './lib/smart-tab-group/projects';
21
21
  export * from './lib/smart-table/projects';
22
22
  export * from './lib/smart-tree/projects';
23
23
  export * from './lib/view-context/projects';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNtYXJ0LW5nLWNsaWVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5nLWNsaWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbmctY2xpZW50Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWNsaWVudC9zbWFydC1maWxlLXVwbG9hZGVyL3NtYXJ0LWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtY2xpZW50L3Byb2plY3RzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXNzaW9uL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWRpYWxvZy9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1ncmlkL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5hdmJhci9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LW5hdmlnYXRpb24vcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1zdWJqZWN0L3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtdGFiLWdyb3VwL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtdGFibGUvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC10cmVlL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlldy1jb250ZXh0L3Byb2plY3RzJztcclxuIl19
24
+ export * from './lib/smart-filter-editor/project';
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc21hcnQtbmctY2xpZW50XHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbmctY2xpZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1uZy1jbGllbnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtY2xpZW50L3NtYXJ0LWZpbGUtdXBsb2FkZXIvc21hcnQtZmlsZS11cGxvYWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1jbGllbnQvcHJvamVjdHMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nlc3Npb24vcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtZGlhbG9nL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtZmlsdGVyL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtZm9ybS9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LWdyaWQvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1pY29uL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbmF2YmFyL3Byb2plY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc21hcnQtbmF2aWdhdGlvbi9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LXN1YmplY3QvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC10YWItZ3JvdXAvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC10YWJsZS9wcm9qZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NtYXJ0LXRyZWUvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi92aWV3LWNvbnRleHQvcHJvamVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3Byb2plY3QnO1xyXG4iXX0=