@bizdoc/core 1.16.2 → 1.16.5

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 (79) hide show
  1. package/assets/system/Microsoft_Azure.svg +23 -0
  2. package/assets/system/QAD.svg +359 -0
  3. package/assets/system/sap.svg +1 -0
  4. package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +112 -0
  5. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +138 -37
  6. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +30 -27
  7. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +34 -24
  8. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +33 -7
  9. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +5 -4
  10. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +4 -4
  11. package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +5 -5
  12. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +5 -5
  13. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +5 -5
  14. package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +3 -3
  15. package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
  16. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +13 -18
  17. package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +3 -3
  18. package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +3 -3
  19. package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +3 -3
  20. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +34 -9
  21. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +16 -16
  22. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +5 -9
  23. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +5 -4
  24. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +4 -4
  25. package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +3 -3
  26. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +4 -4
  27. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +10 -9
  28. package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +5 -5
  29. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +11 -4
  30. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +3 -4
  31. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +19 -7
  32. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +4 -4
  33. package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +3 -3
  34. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +4 -5
  35. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +4 -4
  36. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +4 -11
  37. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +3 -10
  38. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +11 -9
  39. package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +11 -9
  40. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  41. package/esm2020/lib/bizdoc.module.mjs +1 -3
  42. package/esm2020/lib/core/layout/input.field.mjs +3 -2
  43. package/esm2020/lib/core/models.mjs +1 -1
  44. package/esm2020/lib/core/translations.mjs +8 -2
  45. package/esm2020/lib/shared.module.mjs +3 -1
  46. package/esm2020/lib/system.module.mjs +10 -10
  47. package/esm2020/lib/views/cube/sum.component.mjs +1 -1
  48. package/esm2020/public-api.mjs +1 -1
  49. package/fesm2015/bizdoc-core.mjs +647 -450
  50. package/fesm2015/bizdoc-core.mjs.map +1 -1
  51. package/fesm2020/bizdoc-core.mjs +644 -447
  52. package/fesm2020/bizdoc-core.mjs.map +1 -1
  53. package/lib/admin/configuration-designer/cube-axes-filter.component.d.ts +35 -0
  54. package/lib/admin/configuration-designer/designer-element.component.d.ts +23 -12
  55. package/lib/admin/configuration-designer/designer.base.d.ts +40 -16
  56. package/lib/admin/configuration-designer/designer.component.d.ts +2 -1
  57. package/lib/admin/configuration-designer/elements/action.component.d.ts +15 -1
  58. package/lib/admin/configuration-designer/elements/anomaly-rule.component.d.ts +2 -2
  59. package/lib/admin/configuration-designer/elements/box-form.component.d.ts +2 -2
  60. package/lib/admin/configuration-designer/elements/configuration-datasource.component.d.ts +2 -2
  61. package/lib/admin/configuration-designer/elements/folder.component.d.ts +11 -1
  62. package/lib/admin/configuration-designer/elements/form.component.d.ts +3 -1
  63. package/lib/admin/configuration-designer/elements/report.component.d.ts +3 -1
  64. package/lib/admin/configuration-designer/elements/return-to-role-action.component.d.ts +2 -2
  65. package/lib/admin/configuration-designer/elements/role.component.d.ts +2 -0
  66. package/lib/admin/configuration-designer/elements/state.component.d.ts +4 -0
  67. package/lib/admin/configuration-designer/elements/utility.component.d.ts +0 -1
  68. package/lib/admin/configuration-designer/elements/view.component.d.ts +0 -1
  69. package/lib/admin/configuration-designer/elements/widget.component.d.ts +5 -2
  70. package/lib/admin/configuration-designer/icon-picker.component.d.ts +2 -1
  71. package/lib/core/layout/input.field.d.ts +1 -1
  72. package/lib/core/models.d.ts +5 -4
  73. package/lib/core/translations.d.ts +6 -0
  74. package/lib/system.module.d.ts +41 -41
  75. package/lib/views/cube/sum.component.d.ts +3 -3
  76. package/package.json +1 -1
  77. package/public-api.d.ts +1 -1
  78. package/esm2020/lib/admin/configuration-designer/privileges.component.mjs +0 -60
  79. package/lib/admin/configuration-designer/privileges.component.d.ts +0 -26
@@ -1,57 +1,60 @@
1
1
  import { Directive, Inject } from "@angular/core";
2
- import { Validators } from "@angular/forms";
3
- import { isArray } from "../../core/functions";
2
+ import { isArray, isString } from "../../core/functions";
3
+ import { Subject } from "rxjs";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  export class DesignerRef {
7
7
  constructor(_designer, _element) {
8
8
  this._designer = _designer;
9
9
  this._element = _element;
10
+ this._lock$ = new Subject();
10
11
  }
11
12
  get designer() { return this._designer; }
12
13
  get element() { return this._element; }
13
14
  get options() { return this._element.options; }
15
+ get lockChange() { return this._lock$.asObservable(); }
14
16
  }
15
17
  /** */
16
- export class DesignerElementComponent {
18
+ export class DesignerElementComponentBase {
17
19
  constructor(_fb, _ref) {
18
20
  this._fb = _fb;
19
21
  this._ref = _ref;
20
22
  }
21
23
  get options() { return this.model.options; }
22
- ngOnInit() {
23
- }
24
24
  drop(event, collection) {
25
25
  const element = collection.at(event.previousIndex);
26
26
  collection.removeAt(event.previousIndex);
27
27
  collection.insert(event.currentIndex, element);
28
28
  }
29
29
  }
30
- DesignerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponent, deps: [{ token: i1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
31
- DesignerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementComponent, ngImport: i0 });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponent, decorators: [{
30
+ DesignerElementComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponentBase, deps: [{ token: i1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
31
+ DesignerElementComponentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementComponentBase, ngImport: i0 });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponentBase, decorators: [{
33
33
  type: Directive
34
34
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: DesignerRef, decorators: [{
35
35
  type: Inject,
36
36
  args: [DesignerRef]
37
37
  }] }]; } });
38
- export class DesignerTypeElementComponent extends DesignerElementComponent {
39
- setPrivilieges(obj) {
40
- this.form.get('privileges').patchValue(obj);
41
- }
42
- setOptions(obj) {
43
- this.form.get('options').patchValue(obj);
44
- }
45
- ngOnInit() {
46
- if (this.editMode) {
47
- const options = this._fb.group({});
48
- this.model.arguments?.forEach(a => options.addControl(a.name, this._fb.control(null, a.required ? Validators.required : null)));
49
- this.form.addControl('options', options, { emitEvent: false });
50
- this.model.privileges && this.form.addControl('privileges', this._fb.group({
51
- rule: null,
52
- roles: this._fb.control([]),
53
- }), { emitEvent: false });
54
- }
38
+ export class DesignerTypeElementComponent extends DesignerElementComponentBase {
39
+ _arrayOf(val) {
40
+ if (!val)
41
+ return [];
42
+ if (isString(val))
43
+ return [val];
44
+ return val;
45
+ }
46
+ disable(...names) {
47
+ names.forEach(n => this.form.get(n).disable({ emitEvent: false }));
48
+ }
49
+ enable(...names) {
50
+ names.forEach(n => this.form.get(n).enable({ emitEvent: false }));
51
+ }
52
+ unlockResource() { }
53
+ lockResource(resources) {
54
+ if (this.model.resource)
55
+ this.disable(...resources);
56
+ else
57
+ this.enable(...resources);
55
58
  }
56
59
  }
57
60
  DesignerTypeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
@@ -71,7 +74,7 @@ export function programName(name) {
71
74
  replace(NON_NAME_CHAR, '_');
72
75
  }
73
76
  /** */
74
- export class DesignerCubeElementComponent extends DesignerElementComponent {
77
+ export class DesignerCubeElementComponent extends DesignerElementComponentBase {
75
78
  constructor(fb, ref) {
76
79
  super(fb, ref);
77
80
  this.cubes = ref.designer.cubes;
@@ -121,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
121
124
  type: Inject,
122
125
  args: [DesignerRef]
123
126
  }] }]; } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUUvQyxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixTQUF3QixFQUNsQyxRQUFzQjtRQURaLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBYztJQUFJLENBQUM7SUFDckMsSUFBSSxRQUFRLEtBQW1CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxPQUFPLEtBQWtCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxPQUFPLEtBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDbkQ7QUFVRCxNQUFNO0FBRU4sTUFBTSxPQUFnQix3QkFBd0I7SUFNNUMsWUFBc0IsR0FBZ0IsRUFDTCxJQUFpQjtRQUQ1QixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUNsRCxDQUFDO0lBTEQsSUFBSSxPQUFPLEtBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFNOUMsUUFBUTtJQUNSLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBNkIsRUFBRSxVQUFxQjtRQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFD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QTRCOzJGQUE1Qiw0QkFBNEI7a0JBRGpELFNBQVM7b0ZBaUNvQixXQUFXOzBCQUFwQyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIEN1YmVWaWV3LCBGaWVsZEluZm8sIEd1aWRlU3RlcCwgUG9zaXRpb25Qb2xpY3kgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuZXhwb3J0IGNsYXNzIERlc2lnbmVyUmVmPE8gPSBhbnk+IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXNpZ25lcjogRGVzaWduZXJNb2RlbCxcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRNb2RlbCkgeyB9XHJcbiAgZ2V0IGRlc2lnbmVyKCk6IERlc2lnbmVySW5mbyB7IHJldHVybiB0aGlzLl9kZXNpZ25lcjsgfVxyXG4gIGdldCBlbGVtZW50KCk6IEVsZW1lbnRJbmZvIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7IH1cclxuICBnZXQgb3B0aW9ucygpOiBPIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQub3B0aW9uczsgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEluZm8ge1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG59XHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxUID0gYW55PiB7XHJcbiAgYXJndW1lbnRzOiBib29sZWFuO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8VD47XHJcbiAgZ2V0IG9wdGlvbnMoKTogVCB7IHJldHVybiB0aGlzLm1vZGVsLm9wdGlvbnMgfVxyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoRGVzaWduZXJSZWYpIHByb3RlY3RlZCBfcmVmOiBEZXNpZ25lclJlZikge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8Rm9ybUdyb3VwPiwgY29sbGVjdGlvbjogRm9ybUFycmF5KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gY29sbGVjdGlvbi5hdChldmVudC5wcmV2aW91c0luZGV4KTtcclxuICAgIGNvbGxlY3Rpb24ucmVtb3ZlQXQoZXZlbnQucHJldmlvdXNJbmRleCk7XHJcbiAgICBjb2xsZWN0aW9uLmluc2VydChldmVudC5jdXJyZW50SW5kZXgsIGVsZW1lbnQpO1xyXG4gIH1cclxufVxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8VD4ge1xyXG4gIHNldFByaXZpbGllZ2VzKG9iajogUHJpdmlsZWdlc01vZGVsKSB7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdwcml2aWxlZ2VzJykucGF0Y2hWYWx1ZShvYmopO1xyXG4gIH1cclxuICBzZXRPcHRpb25zKG9iajogVCkge1xyXG4gICAgdGhpcy5mb3JtLmdldCgnb3B0aW9ucycpLnBhdGNoVmFsdWUob2JqKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZmIuZ3JvdXAoe30pO1xyXG4gICAgICB0aGlzLm1vZGVsLmFyZ3VtZW50cz8uZm9yRWFjaChhID0+IG9wdGlvbnMuYWRkQ29udHJvbChhLm5hbWUsIHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgYS5yZXF1aXJlZCA/IFZhbGlkYXRvcnMucmVxdWlyZWQgOiBudWxsKSkpO1xyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnb3B0aW9ucycsIG9wdGlvbnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5tb2RlbC5wcml2aWxlZ2VzICYmIHRoaXMuZm9ybS5hZGRDb250cm9sKCdwcml2aWxlZ2VzJyxcclxuICAgICAgICB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgICAgICBydWxlOiBudWxsLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nW10+KFtdKSxcclxuICAgICAgICB9KSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgTkFNRV9DSEFSID0gL1tBLVpdKy9nLFxyXG4gIE5PTl9OQU1FX0NIQVIgPSAvW15cXHddKy9nO1xyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcHJvZ3JhbU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG5hbWUuXHJcbiAgICByZXBsYWNlKCcgJywgJy0nKS5cclxuICAgIHJlcGxhY2UoTkFNRV9DSEFSLCAoYywgaSkgPT4gKGkgPiAwICYmIG5hbWUuY2hhckF0KGkgLSAxKSAhPT0gJy0nID8gJy0nIDogJycpICsgYy50b0xvd2VyQ2FzZSgpKS5cclxuICAgIHJlcGxhY2UoTk9OX05BTUVfQ0hBUiwgJ18nKTtcclxufVxyXG5cclxuLyoqICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzaWduZXJDdWJlRWxlbWVudENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgY3ViZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgY3ViZTogRWxlbWVudE1vZGVsO1xyXG4gIHNlY29uZGFyeUF4ZXM6IEN1YmVBeGlzW107XHJcbiAgdGhpcmRBeGVzOiBDdWJlQXhpc1tdO1xyXG4gIGZvcnRoQXhlczogQ3ViZUF4aXNbXTtcclxuICBwcm90ZWN0ZWQgX3NlY29uZGFyeUF4ZXMoYXhpczogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICghYXhpcykgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWNvbmRhcnlBeGVzID0gdGhpcy5jdWJlLmF4ZXMuZmlsdGVyKGEgPT4gaXNBcnJheShheGlzKSA/IGF4aXMuaW5kZXhPZihhLm5hbWUpIDwgMCA6IGF4aXMgIT09IGEubmFtZSk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfdGhpcmRBeGVzKGF4aXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAoIWF4aXMpIHJldHVybjtcclxuICAgIHRoaXMudGhpcmRBeGVzID0gdGhpcy5zZWNvbmRhcnlBeGVzLmZpbHRlcihhID0+IGlzQXJyYXkoYXhpcykgPyBheGlzLmluZGV4T2YoYS5uYW1lKSA8IDAgOiBhLm5hbWUgIT09IGF4aXMpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX2ZvcnRoQXhlcyhheGlzOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKCFheGlzKSByZXR1cm47XHJcbiAgICB0aGlzLmZvcnRoQXhlcyA9IHRoaXMudGhpcmRBeGVzLmZpbHRlcihhID0+IGlzQXJyYXkoYXhpcykgPyBheGlzLmluZGV4T2YoYS5uYW1lKSA8IDAgOiBhLm5hbWUgIT09IGF4aXMpO1xyXG4gIH1cclxuICBjdWJlU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuY3ViZSA9IGV2dC52YWx1ZTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2N1YmUnKS5zZXRWYWx1ZSgoZXZ0LnZhbHVlIGFzIEVsZW1lbnRNb2RlbCkubmFtZSk7XHJcbiAgfVxyXG4gIHhBeGlzU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3NlY29uZGFyeUF4ZXMoZXZ0LnZhbHVlKTtcclxuICB9XHJcbiAgc2VyaWVzU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3RoaXJkQXhlcyhldnQudmFsdWUpO1xyXG4gIH1cclxuICBmb3J0aFNlbGVjdGVkKGV2dDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICB0aGlzLl9mb3J0aEF4ZXMoZXZ0LnZhbHVlKTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcmVmOiBEZXNpZ25lclJlZikge1xyXG4gICAgc3VwZXIoZmIsIHJlZik7XHJcbiAgICB0aGlzLmN1YmVzID0gcmVmLmRlc2lnbmVyLmN1YmVzO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGN1YmVJZCA9IHRoaXMub3B0aW9uc1snY3ViZSddO1xyXG4gICAgdGhpcy5jdWJlID0gIWN1YmVJZCA/IHRoaXMuY3ViZXNbMF0gYXMgRWxlbWVudE1vZGVsIDogdGhpcy5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlSWQpIGFzIEVsZW1lbnRNb2RlbDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pIHtcclxuICAgICAgdGhpcy5fc2Vjb25kYXJ5QXhlcyh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pO1xyXG4gICAgICB0aGlzLm9wdGlvbnNbJ3NlcmllcyddICYmIHRoaXMuX3RoaXJkQXhlcyh0aGlzLm9wdGlvbnNbJ3NlcmllcyddKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lckluZm8ge1xyXG4gIHR5cGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudEluZm9bXTtcclxuICByZXBvcnRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudEluZm9bXTtcclxuICBjdWJlczogRWxlbWVudEluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudEluZm9bXTtcclxuICByb2xlczogRWxlbWVudEluZm9bXTtcclxuICBydWxlczogRWxlbWVudEluZm9bXTtcclxuICB2aWV3czogRWxlbWVudEluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50SW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJNb2RlbCB7XHJcbiAgdHlwZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFR5cGVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBndWlkZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcmVwb3J0czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0UmVwb3J0czogVGVtcGxhdGVJbmZvW107XHJcbiAgZm9ybXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEZvcm1zOiBUZW1wbGF0ZUluZm9bXTtcclxuICBjdWJlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Q3ViZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHV0aWxpdGllczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VXRpbGl0aWVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb2xkZXJzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJvbGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJ1bGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSdWxlczogVGVtcGxhdGVJbmZvW107XHJcbiAgdmlld3M6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFZpZXdzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRXaWRnZXRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBhY3Rpb25zOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRBY3Rpb25zOiBUZW1wbGF0ZUluZm9bXTtcclxuICBzdGF0ZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUluZm8ge1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBhcmd1bWVudHM/OiBGaWVsZEluZm9bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRNb2RlbDxUID0gYW55PiB7XHJcbiAgb3JkaW5hbD86IG51bWJlcjtcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIGNvbmZpZ3VyYXRpb25GaWxlPzogc3RyaW5nO1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgcmVzb3VyY2U/OiBib29sZWFuO1xyXG4gIGNvcHlPZj86IHN0cmluZztcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgZHJhZnQ/OiBib29sZWFuO1xyXG4gIGVtcHR5PzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogVDtcclxuICBhcmd1bWVudHM/OiBGaWVsZEluZm9bXTtcclxuICBwcml2aWxlZ2VzPzogUHJpdmlsZWdlc01vZGVsO1xyXG4gIGFub21hbHk/OiBBbm9tYWx5UG9saWN5O1xyXG4gIGFzc2lnbmFibGU/OiBib29sZWFuO1xyXG4gIHBvc2l0aW9uPzogUG9zaXRpb25Qb2xpY3k7XHJcbiAgZGF0YVR5cGU/OiBzdHJpbmc7XHJcbiAgc3RlcHM6IEd1aWRlU3RlcFtdO1xyXG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcclxuICBheGVzPzogQ3ViZUF4aXNbXTtcclxuICB2aWV3cz86IEN1YmVWaWV3W107XHJcbiAgaW5kaWNlcz86IEN1YmVJbmRleFtdO1xyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBydWxlcz86IFBlcm1pc3Npb25Nb2RlbFtdO1xyXG4gIHBvc2l0aW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwYXR0ZXJucz86IFBhdHRlcm5Nb2RlbFtdO1xyXG59XHJcbmV4cG9ydCB0eXBlIEFub21hbHlQb2xpY3kgPSAnUG9zaXRpb25zJyB8ICdSZWNpcGllbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGF4ZXM6IEF4ZXNNYXA7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbk1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcml2aWxlZ2VzTW9kZWwge1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUtsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUMvQixNQUFNLE9BQU8sV0FBVztJQUV0QixZQUFvQixTQUF3QixFQUNsQyxRQUFzQjtRQURaLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUZoQyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVJLENBQUM7SUFDckMsSUFBSSxRQUFRLEtBQW1CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxPQUFPLEtBQWtCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxPQUFPLEtBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4RDtBQWdCRCxNQUFNO0FBRU4sTUFBTSxPQUFnQiw0QkFBNEI7SUFLaEQsWUFBc0IsR0FBZ0IsRUFDTCxJQUFpQjtRQUQ1QixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUNsRCxDQUFDO0lBSkQsSUFBSSxPQUFPLEtBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFD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ZWN0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlQXhpcywgQ3ViZUZpbHRlciwgQ3ViZUluZGV4LCBDdWJlVmlldywgRmllbGRJbmZvLCBGb2xkZXJDb2x1bW4sIEd1aWRlU3RlcCwgUG9zaXRpb25Qb2xpY3kgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lclJlZjxPID0gYW55PiB7XHJcbiAgX2xvY2skID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXNpZ25lcjogRGVzaWduZXJNb2RlbCxcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRNb2RlbCkgeyB9XHJcbiAgZ2V0IGRlc2lnbmVyKCk6IERlc2lnbmVySW5mbyB7IHJldHVybiB0aGlzLl9kZXNpZ25lcjsgfVxyXG4gIGdldCBlbGVtZW50KCk6IEVsZW1lbnRJbmZvIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7IH1cclxuICBnZXQgb3B0aW9ucygpOiBPIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQub3B0aW9uczsgfVxyXG4gIGdldCBsb2NrQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fbG9jayQuYXNPYnNlcnZhYmxlKCk7IH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRJbmZvPE8gPSBhbnk+IHtcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgZHJhZnQ/OiBib29sZWFuO1xyXG4gIGVtcHR5PzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxUPiB7XHJcbiAgbW9kZWw6IEVsZW1lbnRJbmZvPFQ+O1xyXG4gIG1vZGU6IERlc2lnbk1vZGU7XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG59XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGVzaWduTW9kZSA9ICdlZGl0JyB8ICd3aWRnZXQnO1xyXG4vKiogKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnRCYXNlPFQgPSBhbnk+IGltcGxlbWVudHMgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQ+IHtcclxuICBtb2RlOiBEZXNpZ25Nb2RlO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8VD47XHJcbiAgZ2V0IG9wdGlvbnMoKTogVCB7IHJldHVybiB0aGlzLm1vZGVsLm9wdGlvbnMgfVxyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoRGVzaWduZXJSZWYpIHByb3RlY3RlZCBfcmVmOiBEZXNpZ25lclJlZikge1xyXG4gIH1cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxGb3JtR3JvdXA+LCBjb2xsZWN0aW9uOiBGb3JtQXJyYXkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBjb2xsZWN0aW9uLmF0KGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG4gICAgY29sbGVjdGlvbi5yZW1vdmVBdChldmVudC5wcmV2aW91c0luZGV4KTtcclxuICAgIGNvbGxlY3Rpb24uaW5zZXJ0KGV2ZW50LmN1cnJlbnRJbmRleCwgZWxlbWVudCk7XHJcbiAgfVxyXG59XHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzaWduZXJUeXBlRWxlbWVudENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIERlc2lnbmVyRWxlbWVudENvbXBvbmVudEJhc2U8VD4ge1xyXG4gIHByb3RlY3RlZCBfYXJyYXlPZih2YWw6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAoIXZhbCkgcmV0dXJuIFtdO1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbCkpIHJldHVybiBbdmFsXTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG4gIGRpc2FibGUoLi4ubmFtZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBuYW1lcy5mb3JFYWNoKG4gPT4gdGhpcy5mb3JtLmdldChuKS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XHJcbiAgfVxyXG4gIGVuYWJsZSguLi5uYW1lczogc3RyaW5nW10pIHtcclxuICAgIG5hbWVzLmZvckVhY2gobiA9PiB0aGlzLmZvcm0uZ2V0KG4pLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xyXG4gIH1cclxuICB1bmxvY2tSZXNvdXJjZSgpIHsgfVxyXG4gIGxvY2tSZXNvdXJjZShyZXNvdXJjZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5yZXNvdXJjZSlcclxuICAgICAgdGhpcy5kaXNhYmxlKC4uLnJlc291cmNlcyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZW5hYmxlKC4uLnJlc291cmNlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBOQU1FX0NIQVIgPSAvW0EtWl0rL2csXHJcbiAgTk9OX05BTUVfQ0hBUiA9IC9bXlxcd10rL2c7XHJcbi8qKlxyXG4gKiBcclxuICogQHBhcmFtIG5hbWVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9ncmFtTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICByZXR1cm4gbmFtZS5cclxuICAgIHJlcGxhY2UoJyAnLCAnLScpLlxyXG4gICAgcmVwbGFjZShOQU1FX0NIQVIsIChjLCBpKSA9PiAoaSA+IDAgJiYgbmFtZS5jaGFyQXQoaSAtIDEpICE9PSAnLScgPyAnLScgOiAnJykgKyBjLnRvTG93ZXJDYXNlKCkpLlxyXG4gICAgcmVwbGFjZShOT05fTkFNRV9DSEFSLCAnXycpO1xyXG59XHJcblxyXG4vKiogKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNpZ25lckN1YmVFbGVtZW50Q29tcG9uZW50PFQgPSBhbnk+IGV4dGVuZHMgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50QmFzZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgY3ViZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgY3ViZTogRWxlbWVudE1vZGVsO1xyXG4gIHNlY29uZGFyeUF4ZXM6IEN1YmVBeGlzW107XHJcbiAgdGhpcmRBeGVzOiBDdWJlQXhpc1tdO1xyXG4gIGZvcnRoQXhlczogQ3ViZUF4aXNbXTtcclxuICBwcm90ZWN0ZWQgX3NlY29uZGFyeUF4ZXMoYXhpczogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICghYXhpcykgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWNvbmRhcnlBeGVzID0gdGhpcy5jdWJlLmF4ZXMuZmlsdGVyKGEgPT4gaXNBcnJheShheGlzKSA/IGF4aXMuaW5kZXhPZihhLm5hbWUpIDwgMCA6IGF4aXMgIT09IGEubmFtZSk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfdGhpcmRBeGVzKGF4aXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAoIWF4aXMpIHJldHVybjtcclxuICAgIHRoaXMudGhpcmRBeGVzID0gdGhpcy5zZWNvbmRhcnlBeGVzLmZpbHRlcihhID0+IGlzQXJyYXkoYXhpcykgPyBheGlzLmluZGV4T2YoYS5uYW1lKSA8IDAgOiBhLm5hbWUgIT09IGF4aXMpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX2ZvcnRoQXhlcyhheGlzOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKCFheGlzKSByZXR1cm47XHJcbiAgICB0aGlzLmZvcnRoQXhlcyA9IHRoaXMudGhpcmRBeGVzLmZpbHRlcihhID0+IGlzQXJyYXkoYXhpcykgPyBheGlzLmluZGV4T2YoYS5uYW1lKSA8IDAgOiBhLm5hbWUgIT09IGF4aXMpO1xyXG4gIH1cclxuICBjdWJlU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuY3ViZSA9IGV2dC52YWx1ZTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2N1YmUnKS5zZXRWYWx1ZSgoZXZ0LnZhbHVlIGFzIEVsZW1lbnRNb2RlbCkubmFtZSk7XHJcbiAgfVxyXG4gIHhBeGlzU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3NlY29uZGFyeUF4ZXMoZXZ0LnZhbHVlKTtcclxuICB9XHJcbiAgc2VyaWVzU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3RoaXJkQXhlcyhldnQudmFsdWUpO1xyXG4gIH1cclxuICBmb3J0aFNlbGVjdGVkKGV2dDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICB0aGlzLl9mb3J0aEF4ZXMoZXZ0LnZhbHVlKTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcmVmOiBEZXNpZ25lclJlZikge1xyXG4gICAgc3VwZXIoZmIsIHJlZik7XHJcbiAgICB0aGlzLmN1YmVzID0gcmVmLmRlc2lnbmVyLmN1YmVzO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGN1YmVJZCA9IHRoaXMub3B0aW9uc1snY3ViZSddO1xyXG4gICAgdGhpcy5jdWJlID0gIWN1YmVJZCA/IHRoaXMuY3ViZXNbMF0gYXMgRWxlbWVudE1vZGVsIDogdGhpcy5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlSWQpIGFzIEVsZW1lbnRNb2RlbDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pIHtcclxuICAgICAgdGhpcy5fc2Vjb25kYXJ5QXhlcyh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pO1xyXG4gICAgICB0aGlzLm9wdGlvbnNbJ3NlcmllcyddICYmIHRoaXMuX3RoaXJkQXhlcyh0aGlzLm9wdGlvbnNbJ3NlcmllcyddKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lckluZm8ge1xyXG4gIHR5cGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudEluZm9bXTtcclxuICByZXBvcnRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudEluZm9bXTtcclxuICBjdWJlczogRWxlbWVudEluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudEluZm9bXTtcclxuICByb2xlczogRWxlbWVudEluZm9bXTtcclxuICBydWxlczogRWxlbWVudEluZm9bXTtcclxuICB2aWV3czogRWxlbWVudEluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50SW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJNb2RlbCB7XHJcbiAgdHlwZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFR5cGVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBndWlkZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcmVwb3J0czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0UmVwb3J0czogVGVtcGxhdGVJbmZvW107XHJcbiAgZm9ybXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEZvcm1zOiBUZW1wbGF0ZUluZm9bXTtcclxuICBjdWJlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Q3ViZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHV0aWxpdGllczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VXRpbGl0aWVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb2xkZXJzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJvbGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJ1bGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSdWxlczogVGVtcGxhdGVJbmZvW107XHJcbiAgdmlld3M6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFZpZXdzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRXaWRnZXRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBhY3Rpb25zOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRBY3Rpb25zOiBUZW1wbGF0ZUluZm9bXTtcclxuICBzdGF0ZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUluZm8ge1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBhcmd1bWVudHM/OiBGaWVsZEluZm9bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRNb2RlbDxUID0gYW55PiB7XHJcbiAgb3JkaW5hbD86IG51bWJlcjtcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIGNvbmZpZ3VyYXRpb25GaWxlPzogc3RyaW5nO1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XHJcbiAgY29weU9mPzogc3RyaW5nO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBUO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG4gIHByaXZpbGVnZXM/OiBQcml2aWxlZ2VzTW9kZWw7XHJcbiAgZmlsdGVycz86IEN1YmVGaWx0ZXI7XHJcbiAgY29sdW1ucz86IEZvbGRlckNvbHVtbltdO1xyXG4gIGFub21hbHk/OiBBbm9tYWx5UG9saWN5O1xyXG4gIHZlcmI/OiBzdHJpbmc7XHJcbiAgeW91Pzogc3RyaW5nO1xyXG4gIHlvdU1hbGU/OiBzdHJpbmc7XHJcbiAgeW91RmVtYWxlPzogc3RyaW5nO1xyXG4gIHBhc3Q/OiBzdHJpbmc7XHJcbiAgcGFzdE1hbGU/OiBzdHJpbmc7XHJcbiAgcGFzdEZlbWFsZT86IHN0cmluZztcclxuICBhZGplY3RpdmU/OiBzdHJpbmc7XHJcbiAgbG9nZ2FibGU/OiBib29sZWFuO1xyXG4gIGFkamVjdGl2ZVBsdXJhbD86IHN0cmluZztcclxuICBhc3NpZ25hYmxlPzogYm9vbGVhbjtcclxuICBwb3NpdGlvbj86IFBvc2l0aW9uUG9saWN5O1xyXG4gIG11bHRpcGxlPzogYm9vbGVhbjtcclxuICBzaGFwZT86IHN0cmluZztcclxuICBncm91cD86IG51bWJlcjtcclxuICBkYXRhVHlwZT86IHN0cmluZztcclxuICBzdGVwcz86IEd1aWRlU3RlcFtdO1xyXG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcclxuICBheGVzPzogQ3ViZUF4aXNbXTtcclxuICB2aWV3cz86IEN1YmVWaWV3W107XHJcbiAgaW5kaWNlcz86IEN1YmVJbmRleFtdO1xyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBydWxlcz86IFBlcm1pc3Npb25Nb2RlbFtdO1xyXG4gIHBvc2l0aW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwYXR0ZXJucz86IFBhdHRlcm5Nb2RlbFtdO1xyXG59XHJcbmV4cG9ydCB0eXBlIEFub21hbHlQb2xpY3kgPSAnUG9zaXRpb25zJyB8ICdSZWNpcGllbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGF4ZXM6IEF4ZXNNYXA7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbk1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcml2aWxlZ2VzTW9kZWwge1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG4iXX0=
@@ -39,20 +39,22 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
39
39
  this._ref.populate().subscribe(r => {
40
40
  this.model = r;
41
41
  this.sections = [
42
- { elements: r.forms, type: 'Forms', template: 'form-designer', templates: r.tForms },
42
+ { elements: r.forms, type: 'Forms', template: 'form-designer', templates: r.tForms, privileges: true },
43
43
  { elements: r.actions, type: 'Actions', template: 'action-designer', templates: r.tActions },
44
- { elements: r.reports, type: 'Reports', template: 'report-designer', templates: r.tReports },
45
- { elements: r.widgets, type: 'Widgets', template: 'widget-designer', templates: r.tWidgets },
46
- { elements: r.views, type: 'Views', template: 'view-designer', templates: r.tViews },
47
- { elements: r.guides, type: 'Guides', template: 'guide-designer', templates: [{ title: 'Guide' }] },
48
- { elements: r.cubes, type: 'Cubes', template: 'cube-designer', templates: r.tCubes },
49
- { elements: r.folders, type: 'Folders', template: 'folder-designer', templates: [{ title: 'Folder' }] },
44
+ { elements: r.reports, type: 'Reports', template: 'report-designer', templates: r.tReports, privileges: true },
45
+ { elements: r.widgets, type: 'Widgets', template: 'widget-designer', templates: r.tWidgets, privileges: true },
46
+ { elements: r.views, type: 'Views', template: 'view-designer', templates: r.tViews, privileges: true },
47
+ { elements: r.guides, type: 'Guides', template: 'guide-designer', templates: [{ title: 'Guide' }], privileges: true },
48
+ { elements: r.cubes, type: 'Cubes', template: 'cube-designer', templates: r.tCubes, privileges: true },
49
+ { elements: r.folders, type: 'Folders', template: 'folder-designer', templates: [{ title: 'Folder' }], privileges: true },
50
50
  { elements: r.roles, type: 'Roles', template: 'role-designer', templates: [{ title: 'Role' }] },
51
51
  { elements: r.states, type: 'States', template: 'state-designer', templates: [{ title: 'State' }] },
52
- { elements: r.utilities, type: 'Utilities', template: 'utility-designer', templates: r.tUtilities },
52
+ { elements: r.utilities, type: 'Utilities', template: 'utility-designer', templates: r.tUtilities, privileges: true },
53
53
  { elements: r.types, type: 'Types', template: 'type-designer', templates: r.tTypes },
54
54
  { elements: r.rules, type: 'Rules', template: 'rule-designer', templates: r.tRules },
55
55
  ];
56
+ this.sections.forEach(s => s.privileges && s.elements.forEach(e => { if (!e.privileges)
57
+ e.privileges = {}; }));
56
58
  this.loading = false;
57
59
  });
58
60
  }
@@ -85,15 +87,15 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
85
87
  discard(section, element) {
86
88
  }
87
89
  _insert(section, element, index) {
88
- let i = element.name.lastIndexOf('_'), j = element.title.lastIndexOf(' '), n = 0, { name, title } = element;
89
- while (section.elements.find(e => e.name === name || e.title === title)) {
90
+ let i = element.name.lastIndexOf('_'), j = element.title.lastIndexOf(' '), n = 0, name, title;
91
+ do {
90
92
  n++;
91
- name = (i < 0 || isNaN(parseInt(name.substr(i))) ? name : name.substr(0, i + 1)) + '_' + n;
92
- title = (j < 0 || isNaN(parseInt(title.substr(j))) ? title : title.substr(0, j - 1)) + ' ' + n;
93
- }
93
+ name = (i < 0 || isNaN(parseInt(element.name.substr(i + 1))) ? element.name : element.name.substr(0, i)) + '_' + n;
94
+ title = (j < 0 || isNaN(parseInt(element.title.substr(j + 1))) ? element.title : element.title.substr(0, j)) + ' ' + n;
95
+ } while (section.elements.find(e => e.name === name || e.title === title));
94
96
  element.name = name, element.title = title;
95
- this.edit(element, section, true).then(() => {
96
- section.elements.splice(index, 0, element);
97
+ this.edit(element, section).then(() => {
98
+ section.elements.splice(index + 1, 0, element);
97
99
  this.dirty = true;
98
100
  });
99
101
  }
@@ -102,8 +104,8 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
102
104
  menu.openMenu();
103
105
  else {
104
106
  this.create(section, section.templates[0]);
105
- evt.preventDefault();
106
107
  }
108
+ evt.preventDefault();
107
109
  }
108
110
  create(section, template) {
109
111
  this._insert(section, {
@@ -119,8 +121,8 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
119
121
  });
120
122
  this._insert(section, clone, section.elements.indexOf(element));
121
123
  }
122
- edit(element, section, isNew) {
123
- return this._panes.navigate(DesignerItemComponent, {
124
+ edit(element, section) {
125
+ return new Promise((resolve, reject) => this._panes.navigate(DesignerItemComponent, {
124
126
  policy: OpenPolicy.Dialog,
125
127
  group: this._translate.get(section.type),
126
128
  //title: element.title,
@@ -129,10 +131,17 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
129
131
  designer: this.model,
130
132
  template: section.template,
131
133
  model: element,
132
- editMode: true,
133
- isNew
134
+ mode: 'edit',
135
+ }
136
+ }).then(e => e.instance.change.subscribe(e => {
137
+ if (e) {
138
+ Object.assign(element, e);
139
+ this.dirty = true;
140
+ resolve(e);
134
141
  }
135
- }).then(e => e.instance.change.subscribe(e => this.dirty = true));
142
+ else
143
+ reject();
144
+ })));
136
145
  }
137
146
  toggleDisabled(element) {
138
147
  element.disabled = !element.disabled;
@@ -145,6 +154,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
145
154
  this._ps.toast('ChangesSaved');
146
155
  apply(actions, cubes, folders, forms, guides, reports, roles, rules, states, types, utilities, views, widgets);
147
156
  this.saving = false;
157
+ this.dirty = false;
148
158
  }, () => {
149
159
  this._ps.error();
150
160
  this.saving = false;
@@ -155,16 +165,16 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
155
165
  }
156
166
  };
157
167
  ConfigurationDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, deps: [{ token: i1.PanesRouter }, { token: i2.TranslateService }, { token: i3.PromptService }, { token: i4.UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
158
- ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ConfigurationDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" [disableRipple]=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span>\r\n {{t.family}}\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i8.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i8.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i10.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i15.DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["template", "model", "designer"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }], animations: [itemAnimation] });
168
+ ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ConfigurationDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span>\r\n {{t.family}}\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i8.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i8.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i10.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i15.DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["template", "model", "designer"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }], animations: [itemAnimation] });
159
169
  ConfigurationDesignerComponent = __decorate([
160
170
  BizDoc({ selector: 'bizdoc-configuration-designer' })
161
171
  ], ConfigurationDesignerComponent);
162
172
  export { ConfigurationDesignerComponent };
163
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, decorators: [{
164
174
  type: Component,
165
- args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" [disableRipple]=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span>\r\n {{t.family}}\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"] }]
175
+ args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span>\r\n {{t.family}}\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"] }]
166
176
  }], ctorParameters: function () { return [{ type: i1.PanesRouter }, { type: i2.TranslateService }, { type: i3.PromptService }, { type: i4.UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
167
177
  type: HostListener,
168
178
  args: ['document:keydown', ['$event']]
169
179
  }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUsvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQTZDLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDekYsTUFBTTtJQU9PLDhCQUE4QixTQUE5Qiw4QkFBOEI7SUFNekMsWUFDVSxNQUFtQixFQUNuQixVQUE0QixFQUM1QixHQUFrQixFQUNsQixJQUF1RDtRQUh2RCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUQ7UUFUakUsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFdBQU0sR0FBRyxLQUFLLENB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QUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxLQUFLLENBQUMsR0FBRyxVQUE0QjtZQUM1QyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFBOzJIQXhJWSw4QkFBOEI7K0dBQTlCLDhCQUE4QixnSUNyQjNDLHMxRUF1Q0EsMDFJRHJCYyxDQUFDLGFBQWEsQ0FBQztBQUdoQiw4QkFBOEI7SUFEMUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLCtCQUErQixFQUFFLENBQUM7R0FDekMsOEJBQThCLENBd0kxQztTQXhJWSw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFOMUMsU0FBUztpQ0FHSSxDQUFDLGFBQWEsQ0FBQztzTEEwRDNCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBpdGVtQW5pbWF0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZVwiO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IGNsZWFudXAgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBhbmVzUm91dGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tIFwiLi4vdXRpbGl0eS1yZWZcIjtcclxuaW1wb3J0IHsgRGVzaWduZXJJdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4vZGVzaWduZXItZWxlbWVudC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRWxlbWVudE1vZGVsLCBEZXNpZ25lck1vZGVsLCBUZW1wbGF0ZUluZm8sIHByb2dyYW1OYW1lIH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG4vKiogKi9cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2Rlc2lnbmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW2l0ZW1BbmltYXRpb25dXHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy1jb25maWd1cmF0aW9uLWRlc2lnbmVyJyB9KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkRlc2lnbmVyQ29tcG9uZW50IGltcGxlbWVudHMgVXRpbGl0eUNvbXBvbmVudCwgT25Jbml0IHtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHNlY3Rpb25zOiBTZWN0aW9uW107XHJcbiAgbW9kZWw6IERlc2lnbmVyTW9kZWw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wYW5lczogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wczogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlZjogVXRpbGl0eVJlZjxib29sZWFuLCBEZXNpZ25lck1vZGVsLCBEZXNpZ25lck1vZGVsPikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gW1xyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZm9ybXMsIHR5cGU6ICdGb3JtcycsIHRlbXBsYXRlOiAnZm9ybS1kZXNpZ25lcicsIHRlbXBsYXRlczogci50Rm9ybXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmFjdGlvbnMsIHR5cGU6ICdBY3Rpb25zJywgdGVtcGxhdGU6ICdhY3Rpb24tZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudEFjdGlvbnMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJlcG9ydHMsIHR5cGU6ICdSZXBvcnRzJywgdGVtcGxhdGU6ICdyZXBvcnQtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudFJlcG9ydHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLndpZGdldHMsIHR5cGU6ICdXaWRnZXRzJywgdGVtcGxhdGU6ICd3aWRnZXQtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudFdpZGdldHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnZpZXdzLCB0eXBlOiAnVmlld3MnLCB0ZW1wbGF0ZTogJ3ZpZXctZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudFZpZXdzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5ndWlkZXMsIHR5cGU6ICdHdWlkZXMnLCB0ZW1wbGF0ZTogJ2d1aWRlLWRlc2lnbmVyJywgdGVtcGxhdGVzOiBbeyB0aXRsZTogJ0d1aWRlJyB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuY3ViZXMsIHR5cGU6ICdDdWJlcycsIHRlbXBsYXRlOiAnY3ViZS1kZXNpZ25lcicsIHRlbXBsYXRlczogci50Q3ViZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmZvbGRlcnMsIHR5cGU6ICdGb2xkZXJzJywgdGVtcGxhdGU6ICdmb2xkZXItZGVzaWduZXInLCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiAnRm9sZGVyJyB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIucm9sZXMsIHR5cGU6ICdSb2xlcycsIHRlbXBsYXRlOiAncm9sZS1kZXNpZ25lcicsIHRlbXBsYXRlczogW3sgdGl0bGU6ICdSb2xlJyB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuc3RhdGVzLCB0eXBlOiAnU3RhdGVzJywgdGVtcGxhdGU6ICdzdGF0ZS1kZXNpZ25lcicsIHRlbXBsYXRlczogW3sgdGl0bGU6ICdTdGF0ZScgfV0gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnV0aWxpdGllcywgdHlwZTogJ1V0aWxpdGllcycsIHRlbXBsYXRlOiAndXRpbGl0eS1kZXNpZ25lcicsIHRlbXBsYXRlczogci50VXRpbGl0aWVzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci50eXBlcywgdHlwZTogJ1R5cGVzJywgdGVtcGxhdGU6ICd0eXBlLWRlc2lnbmVyJywgdGVtcGxhdGVzOiByLnRUeXBlcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIucnVsZXMsIHR5cGU6ICdSdWxlcycsIHRlbXBsYXRlOiAncnVsZS1kZXNpZ25lcicsIHRlbXBsYXRlczogci50UnVsZXMgfSxcclxuICAgICAgXTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8RWxlbWVudE1vZGVsW10+KSB7XHJcbiAgICBjb25zdCByYW5nZSA9IGV2ZW50LmNvbnRhaW5lci5kYXRhLnNsaWNlKFxyXG4gICAgICBNYXRoLm1pbihldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpLFxyXG4gICAgICBNYXRoLm1heChldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpXHJcbiAgICApLCBmaWxlID0gcmFuZ2VbMF0uY29uZmlndXJhdGlvbkZpbGU7XHJcbiAgICBpZlxyXG4gICAgICAvLyBhY3Jvc3MgZmlsZXNcclxuICAgICAgKHJhbmdlLnNsaWNlKDEpLnNvbWUoZSA9PiBlLmNvbmZpZ3VyYXRpb25GaWxlICE9PSBmaWxlKSkge1xyXG4gICAgICAvLyBzdGFydCBvcmRpbmFsXHJcbiAgICAgIGxldCBpID0gZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XS5vcmRpbmFsIHx8IC0xO1xyXG4gICAgICAvLyBzZXQgb3JkaW5hbCB0byBpdGVtcyBpbiByYW5nZVxyXG4gICAgICByYW5nZS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsID0gaSsrKTtcclxuICAgICAgLy8gaW5jcmVhc2Ugb3RoZXIgaGlnaGVyIHRoYW4gbGFzdCBpbiByYW5nZVxyXG4gICAgICBldmVudC5jb250YWluZXIuZGF0YS5maWx0ZXIoZSA9PiBlLm9yZGluYWwgJiYgZS5vcmRpbmFsID4gaSkuZm9yRWFjaChlID0+IGUub3JkaW5hbCArPSAxKTtcclxuICAgIH0gZWxzZSAvLyBuYXRpdmUgb3JkZXIgaW4gY29sbGVjdGlvblxyXG4gICAgICByYW5nZS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsID0gbnVsbCk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlydHkgJiYgZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBkaXNjYXJkKHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gIH1cclxuICBwcml2YXRlIF9pbnNlcnQoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgaSA9IGVsZW1lbnQubmFtZS5sYXN0SW5kZXhPZignXycpLFxyXG4gICAgICBqID0gZWxlbWVudC50aXRsZS5sYXN0SW5kZXhPZignICcpLFxyXG4gICAgICBuID0gMCwgeyBuYW1lLCB0aXRsZSB9ID0gZWxlbWVudDtcclxuICAgIHdoaWxlIChzZWN0aW9uLmVsZW1lbnRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IG5hbWUgfHwgZS50aXRsZSA9PT0gdGl0bGUpKSB7XHJcbiAgICAgIG4rKztcclxuICAgICAgbmFtZSA9IChpIDwgMCB8fCBpc05hTihwYXJzZUludChuYW1lLnN1YnN0cihpKSkpID8gbmFtZSA6IG5hbWUuc3Vic3RyKDAsIGkgKyAxKSkgKyAnXycgKyBuO1xyXG4gICAgICB0aXRsZSA9IChqIDwgMCB8fCBpc05hTihwYXJzZUludCh0aXRsZS5zdWJzdHIoaikpKSA/IHRpdGxlIDogdGl0bGUuc3Vic3RyKDAsIGogLSAxKSkgKyAnICcgKyBuO1xyXG4gICAgfVxyXG4gICAgZWxlbWVudC5uYW1lID0gbmFtZSwgZWxlbWVudC50aXRsZSA9IHRpdGxlO1xyXG4gICAgdGhpcy5lZGl0KGVsZW1lbnQsIHNlY3Rpb24sIHRydWUpLnRoZW4oKCkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmVsZW1lbnRzLnNwbGljZShpbmRleCwgMCwgZWxlbWVudCk7XHJcbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFkZChzZWN0aW9uOiBTZWN0aW9uLCBtZW51OiBNYXRNZW51VHJpZ2dlciwgZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKHNlY3Rpb24udGVtcGxhdGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgIG1lbnUub3Blbk1lbnUoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZShzZWN0aW9uLCBzZWN0aW9uLnRlbXBsYXRlc1swXSk7XHJcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjcmVhdGUoc2VjdGlvbjogU2VjdGlvbiwgdGVtcGxhdGU6IFRlbXBsYXRlSW5mbykge1xyXG4gICAgdGhpcy5faW5zZXJ0KHNlY3Rpb24sIHtcclxuICAgICAgLi4udGVtcGxhdGUsXHJcbiAgICAgIG5hbWU6IHByb2dyYW1OYW1lKHRlbXBsYXRlLnRpdGxlKSxcclxuICAgICAgZHJhZnQ6IHRydWUsXHJcbiAgICB9IGFzIEVsZW1lbnRNb2RlbCwgc2VjdGlvbi5lbGVtZW50cy5sZW5ndGgpO1xyXG4gIH1cclxuICBjb3B5KHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgY29uc3QgY2xvbmUgPSBPYmplY3QuYXNzaWduKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpLCB7XHJcbiAgICAgIGNvcHlPZjogZWxlbWVudC5uYW1lLFxyXG4gICAgICBkcmFmdDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9pbnNlcnQoc2VjdGlvbiwgY2xvbmUsIHNlY3Rpb24uZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSk7XHJcbiAgfVxyXG4gIGVkaXQoZWxlbWVudDogRWxlbWVudE1vZGVsLCBzZWN0aW9uOiBTZWN0aW9uLCBpc05ldz86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLl9wYW5lcy5uYXZpZ2F0ZShEZXNpZ25lckl0ZW1Db21wb25lbnQsIHtcclxuICAgICAgcG9saWN5OiBPcGVuUG9saWN5LkRpYWxvZyxcclxuICAgICAgZ3JvdXA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoc2VjdGlvbi50eXBlKSxcclxuICAgICAgLy90aXRsZTogZWxlbWVudC50aXRsZSxcclxuICAgICAgLy9pY29uOiBlbGVtZW50Lmljb24sXHJcbiAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgZGVzaWduZXI6IHRoaXMubW9kZWwsXHJcbiAgICAgICAgdGVtcGxhdGU6IHNlY3Rpb24udGVtcGxhdGUsXHJcbiAgICAgICAgbW9kZWw6IGVsZW1lbnQsXHJcbiAgICAgICAgZWRpdE1vZGU6IHRydWUsXHJcbiAgICAgICAgaXNOZXdcclxuICAgICAgfVxyXG4gICAgfSkudGhlbihlID0+XHJcbiAgICAgIGUuaW5zdGFuY2UuY2hhbmdlLnN1YnNjcmliZShlID0+IHRoaXMuZGlydHkgPSB0cnVlKVxyXG4gICAgKTtcclxuICB9XHJcbiAgdG9nZ2xlRGlzYWJsZWQoZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgICBlbGVtZW50LmRpc2FibGVkID0gIWVsZW1lbnQuZGlzYWJsZWQ7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHsgYWN0aW9ucywgY3ViZXMsIGZvbGRlcnMsIGZvcm1zLCBndWlkZXMsIHJlcG9ydHMsIHJvbGVzLCBydWxlcywgc3RhdGVzLCB0eXBlcywgdXRpbGl0aWVzLCB2aWV3cywgd2lkZ2V0cyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHJldHVybiB0aGlzLl9yZWYuZXhlY3V0ZShjbGVhbnVwKHsgYWN0aW9ucywgY3ViZXMsIGZvbGRlcnMsIGZvcm1zLCBndWlkZXMsIHJlcG9ydHMsIHJvbGVzLCBydWxlcywgc3RhdGVzLCB0eXBlcywgdXRpbGl0aWVzLCB2aWV3cywgd2lkZ2V0cyB9KSkudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3BzLnRvYXN0KCdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgYXBwbHkoYWN0aW9ucywgY3ViZXMsIGZvbGRlcnMsIGZvcm1zLCBndWlkZXMsIHJlcG9ydHMsIHJvbGVzLCBydWxlcywgc3RhdGVzLCB0eXBlcywgdXRpbGl0aWVzLCB2aWV3cywgd2lkZ2V0cyk7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2VcclxuICAgIH0sICgpID0+IHtcclxuICAgICAgdGhpcy5fcHMuZXJyb3IoKTtcclxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZVxyXG4gICAgfSk7XHJcbiAgICBmdW5jdGlvbiBhcHBseSguLi5jb2xsZWN0aW9uOiBFbGVtZW50TW9kZWxbXVtdKSB7XHJcbiAgICAgIGNvbGxlY3Rpb24uZm9yRWFjaChzID0+IHMuZm9yRWFjaChlID0+IGRlbGV0ZSBlLmRyYWZ0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBTZWN0aW9uIHtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJbmZvW107XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWRpcnR5IHx8IGxvYWRpbmcgfHwgc2F2aW5nXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPHNlY3Rpb24gKm5nRm9yPVwibGV0IHMgb2Ygc2VjdGlvbnNcIj5cclxuICA8aDIgY2xhc3M9XCJtYXQtdGl0bGVcIj57e3MudHlwZSB8IHRyYW5zbGF0ZX19PC9oMj5cclxuICA8ZGl2IGNsYXNzPVwiZWxlbWVudHNcIiBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIFtjZGtEcm9wTGlzdERhdGFdPVwicy5lbGVtZW50c1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IGUgb2Ygcy5lbGVtZW50c1wiIFtjbGFzcy5kaXNhYmxlZF09XCJlLmRpc2FibGVkXCIgY2RrRHJhZyBjZGtEcmFnUm9vdEVsZW1lbnQ9XCIubWF0LWNhcmQtdGl0bGVcIj5cclxuICAgICAgPCEtLSBAaXRlbS0tPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3tlLnRpdGxlfX1cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIHt7ZS5uYW1lfX1cclxuICAgICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGJpemRvYy1kZXNpZ25lci1lbGVtZW50IFttb2RlbF09XCJlXCIgW3RlbXBsYXRlXT1cInMudGVtcGxhdGVcIiBbZGVzaWduZXJdPVwibW9kZWxcIj48L2JpemRvYy1kZXNpZ25lci1lbGVtZW50PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNvcHkocywgZSlcIiAqbmdJZj1cIiFlLmNvcHlPZlwiIFtiaXpkb2NUb29sdGlwXT1cIidDb3B5J3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZmlsZV9jb3B5PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicy5lbGVtZW50cy5yZW1vdmUoZSlcIiAqbmdJZj1cImUuZHJhZnQgfHwgZS5lbXB0eVwiIFtiaXpkb2NUb29sdGlwXT1cIidEaXNjYXJkJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGlzYWJsZWQoZSlcIiBbYml6ZG9jVG9vbHRpcF09XCIoZS5kaXNhYmxlZCA/ICdFbmFibGUnIDogJ0Rpc2FibGUnKXx0cmFuc2xhdGVcIj48bWF0LWljb24+e3tlLmRpc2FibGVkID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJ319PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImVkaXQoZSwgcylcIiBbYml6ZG9jVG9vbHRpcF09XCInU2V0dGluZ3MnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLWVsZW1lbnRcIiBtYXRSaXBwbGUgKGNsaWNrKT1cImFkZChzLCBtZW51VHJpZ2dlciwgJGV2ZW50KVwiICpuZ0lmPVwicy50ZW1wbGF0ZXM/Lmxlbmd0aFwiPlxyXG4gICAgICA8c3BhbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGVtcGxhdGVNZW51XCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbiBbYml6ZG9jVG9vbHRpcF09XCInTmV3J3x0cmFuc2xhdGVcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICN0ZW1wbGF0ZU1lbnU+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB0IG9mIHMudGVtcGxhdGVzXCIgKGNsaWNrKT1cImNyZWF0ZShzLCB0KVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7dC5mYW1pbHl9fVxyXG4gICAgICAgICAgICB7e3QudGl0bGV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUsvQyxPQUFPLEVBQUUscUJBQXFCLEVBQWMsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQTZDLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDekYsTUFBTTtJQU9PLDhCQUE4QixTQUE5Qiw4QkFBOEI7SUFNekMsWUFDVSxNQUFtQixFQUNuQixVQUE0QixFQUM1QixHQUFrQixFQUNsQixJQUF1RDtRQUh2RCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUQ7UUFUakUsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFdBQU0sR0FBRyxLQUFLLENB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SlksOEJBQThCOytHQUE5Qiw4QkFBOEIsZ0lDckIzQyxvMUVBdUNBLDAxSURyQmMsQ0FBQyxhQUFhLENBQUM7QUFHaEIsOEJBQThCO0lBRDFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0dBQ3pDLDhCQUE4QixDQW1KMUM7U0FuSlksOEJBQThCOzJGQUE5Qiw4QkFBOEI7a0JBTjFDLFNBQVM7aUNBR0ksQ0FBQyxhQUFhLENBQUM7c0xBNkQzQixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgaXRlbUFuaW1hdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlL2Jhc2VcIjtcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSBcIi4uLy4uL2NvcmUvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBjbGVhbnVwIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gXCIuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSBcIi4uL3V0aWxpdHktcmVmXCI7XHJcbmltcG9ydCB7IERlc2lnbmVySXRlbUNvbXBvbmVudCwgRWxlbWV0RGF0YSB9IGZyb20gXCIuL2Rlc2lnbmVyLWVsZW1lbnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVsZW1lbnRNb2RlbCwgRGVzaWduZXJNb2RlbCwgVGVtcGxhdGVJbmZvLCBwcm9ncmFtTmFtZSB9IGZyb20gXCIuL2Rlc2lnbmVyLmJhc2VcIjtcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtpdGVtQW5pbWF0aW9uXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtY29uZmlndXJhdGlvbi1kZXNpZ25lcicgfSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25EZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgZGlydHkgPSBmYWxzZTtcclxuICBzZWN0aW9uczogU2VjdGlvbltdO1xyXG4gIG1vZGVsOiBEZXNpZ25lck1vZGVsO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcGFuZXM6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcHM6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yZWY6IFV0aWxpdHlSZWY8Ym9vbGVhbiwgRGVzaWduZXJNb2RlbCwgRGVzaWduZXJNb2RlbD4pIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVmLnBvcHVsYXRlKCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsID0gcjtcclxuICAgICAgdGhpcy5zZWN0aW9ucyA9IFtcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmZvcm1zLCB0eXBlOiAnRm9ybXMnLCB0ZW1wbGF0ZTogJ2Zvcm0tZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudEZvcm1zLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5hY3Rpb25zLCB0eXBlOiAnQWN0aW9ucycsIHRlbXBsYXRlOiAnYWN0aW9uLWRlc2lnbmVyJywgdGVtcGxhdGVzOiByLnRBY3Rpb25zIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5yZXBvcnRzLCB0eXBlOiAnUmVwb3J0cycsIHRlbXBsYXRlOiAncmVwb3J0LWRlc2lnbmVyJywgdGVtcGxhdGVzOiByLnRSZXBvcnRzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci53aWRnZXRzLCB0eXBlOiAnV2lkZ2V0cycsIHRlbXBsYXRlOiAnd2lkZ2V0LWRlc2lnbmVyJywgdGVtcGxhdGVzOiByLnRXaWRnZXRzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci52aWV3cywgdHlwZTogJ1ZpZXdzJywgdGVtcGxhdGU6ICd2aWV3LWRlc2lnbmVyJywgdGVtcGxhdGVzOiByLnRWaWV3cywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZ3VpZGVzLCB0eXBlOiAnR3VpZGVzJywgdGVtcGxhdGU6ICdndWlkZS1kZXNpZ25lcicsIHRlbXBsYXRlczogW3sgdGl0bGU6ICdHdWlkZScgfV0sIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmN1YmVzLCB0eXBlOiAnQ3ViZXMnLCB0ZW1wbGF0ZTogJ2N1YmUtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudEN1YmVzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5mb2xkZXJzLCB0eXBlOiAnRm9sZGVycycsIHRlbXBsYXRlOiAnZm9sZGVyLWRlc2lnbmVyJywgdGVtcGxhdGVzOiBbeyB0aXRsZTogJ0ZvbGRlcicgfV0sIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJvbGVzLCB0eXBlOiAnUm9sZXMnLCB0ZW1wbGF0ZTogJ3JvbGUtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiAnUm9sZScgfV0gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnN0YXRlcywgdHlwZTogJ1N0YXRlcycsIHRlbXBsYXRlOiAnc3RhdGUtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiAnU3RhdGUnIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci51dGlsaXRpZXMsIHR5cGU6ICdVdGlsaXRpZXMnLCB0ZW1wbGF0ZTogJ3V0aWxpdHktZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudFV0aWxpdGllcywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudHlwZXMsIHR5cGU6ICdUeXBlcycsIHRlbXBsYXRlOiAndHlwZS1kZXNpZ25lcicsIHRlbXBsYXRlczogci50VHlwZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJ1bGVzLCB0eXBlOiAnUnVsZXMnLCB0ZW1wbGF0ZTogJ3J1bGUtZGVzaWduZXInLCB0ZW1wbGF0ZXM6IHIudFJ1bGVzIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaChzID0+IFxyXG4gICAgICAgIHMucHJpdmlsZWdlcyAmJiBzLmVsZW1lbnRzLmZvckVhY2goZSA9PiB7IGlmICghZS5wcml2aWxlZ2VzKSBlLnByaXZpbGVnZXMgPSB7fSB9KVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxFbGVtZW50TW9kZWxbXT4pIHtcclxuICAgIGNvbnN0IHJhbmdlID0gZXZlbnQuY29udGFpbmVyLmRhdGEuc2xpY2UoXHJcbiAgICAgIE1hdGgubWluKGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCksXHJcbiAgICAgIE1hdGgubWF4KGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleClcclxuICAgICksIGZpbGUgPSByYW5nZVswXS5jb25maWd1cmF0aW9uRmlsZTtcclxuICAgIGlmXHJcbiAgICAgIC8vIGFjcm9zcyBmaWxlc1xyXG4gICAgICAocmFuZ2Uuc2xpY2UoMSkuc29tZShlID0+IGUuY29uZmlndXJhdGlvbkZpbGUgIT09IGZpbGUpKSB7XHJcbiAgICAgIC8vIHN0YXJ0IG9yZGluYWxcclxuICAgICAgbGV0IGkgPSBldmVudC5jb250YWluZXIuZGF0YVtldmVudC5jdXJyZW50SW5kZXhdLm9yZGluYWwgfHwgLTE7XHJcbiAgICAgIC8vIHNldCBvcmRpbmFsIHRvIGl0ZW1zIGluIHJhbmdlXHJcbiAgICAgIHJhbmdlLmZvckVhY2goZSA9PiBlLm9yZGluYWwgPSBpKyspO1xyXG4gICAgICAvLyBpbmNyZWFzZSBvdGhlciBoaWdoZXIgdGhhbiBsYXN0IGluIHJhbmdlXHJcbiAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLmZpbHRlcihlID0+IGUub3JkaW5hbCAmJiBlLm9yZGluYWwgPiBpKS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsICs9IDEpO1xyXG4gICAgfSBlbHNlIC8vIG5hdGl2ZSBvcmRlciBpbiBjb2xsZWN0aW9uXHJcbiAgICAgIHJhbmdlLmZvckVhY2goZSA9PiBlLm9yZGluYWwgPSBudWxsKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXJ0eSAmJiBldmVudC5jdHJsS2V5ICYmIChldmVudC53aGljaCA9PT0gODMgfHwgZXZlbnQud2hpY2ggPT09IDExNSkpIHtcclxuICAgICAgdGhpcy5zYXZlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRpc2NhcmQoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luc2VydChzZWN0aW9uOiBTZWN0aW9uLCBlbGVtZW50OiBFbGVtZW50TW9kZWwsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBpID0gZWxlbWVudC5uYW1lLmxhc3RJbmRleE9mKCdfJyksXHJcbiAgICAgIGogPSBlbGVtZW50LnRpdGxlLmxhc3RJbmRleE9mKCcgJyksXHJcbiAgICAgIG4gPSAwLCBuYW1lLCB0aXRsZTtcclxuICAgIGRvIHtcclxuICAgICAgbisrO1xyXG4gICAgICBuYW1lID0gKGkgPCAwIHx8IGlzTmFOKHBhcnNlSW50KGVsZW1lbnQubmFtZS5zdWJzdHIoaSArIDEpKSkgPyBlbGVtZW50Lm5hbWUgOiBlbGVtZW50Lm5hbWUuc3Vic3RyKDAsIGkpKSArICdfJyArIG47XHJcbiAgICAgIHRpdGxlID0gKGogPCAwIHx8IGlzTmFOKHBhcnNlSW50KGVsZW1lbnQudGl0bGUuc3Vic3RyKGogKyAxKSkpID8gZWxlbWVudC50aXRsZSA6IGVsZW1lbnQudGl0bGUuc3Vic3RyKDAsIGopKSArICcgJyArIG47XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoc2VjdGlvbi5lbGVtZW50cy5maW5kKGUgPT4gZS5uYW1lID09PSBuYW1lIHx8IGUudGl0bGUgPT09IHRpdGxlKSk7XHJcbiAgICBlbGVtZW50Lm5hbWUgPSBuYW1lLCBlbGVtZW50LnRpdGxlID0gdGl0bGU7XHJcbiAgICB0aGlzLmVkaXQoZWxlbWVudCwgc2VjdGlvbikudGhlbigoKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZWxlbWVudHMuc3BsaWNlKGluZGV4ICsgMSwgMCwgZWxlbWVudCk7XHJcbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFkZChzZWN0aW9uOiBTZWN0aW9uLCBtZW51OiBNYXRNZW51VHJpZ2dlciwgZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKHNlY3Rpb24udGVtcGxhdGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgIG1lbnUub3Blbk1lbnUoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZShzZWN0aW9uLCBzZWN0aW9uLnRlbXBsYXRlc1swXSk7XHJcbiAgICB9XHJcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBjcmVhdGUoc2VjdGlvbjogU2VjdGlvbiwgdGVtcGxhdGU6IFRlbXBsYXRlSW5mbykge1xyXG4gICAgdGhpcy5faW5zZXJ0KHNlY3Rpb24sIHtcclxuICAgICAgLi4udGVtcGxhdGUsXHJcbiAgICAgIG5hbWU6IHByb2dyYW1OYW1lKHRlbXBsYXRlLnRpdGxlKSxcclxuICAgICAgZHJhZnQ6IHRydWUsXHJcbiAgICB9IGFzIEVsZW1lbnRNb2RlbCwgc2VjdGlvbi5lbGVtZW50cy5sZW5ndGgpO1xyXG4gIH1cclxuICBjb3B5KHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgY29uc3QgY2xvbmUgPSBPYmplY3QuYXNzaWduKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpLCB7XHJcbiAgICAgIGNvcHlPZjogZWxlbWVudC5uYW1lLFxyXG4gICAgICBkcmFmdDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9pbnNlcnQoc2VjdGlvbiwgY2xvbmUsIHNlY3Rpb24uZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSk7XHJcbiAgfVxyXG4gIGVkaXQoZWxlbWVudDogRWxlbWVudE1vZGVsLCBzZWN0aW9uOiBTZWN0aW9uKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGFuZXMubmF2aWdhdGUoRGVzaWduZXJJdGVtQ29tcG9uZW50LCB7XHJcbiAgICAgIHBvbGljeTogT3BlblBvbGljeS5EaWFsb2csXHJcbiAgICAgIGdyb3VwOiB0aGlzLl90cmFuc2xhdGUuZ2V0KHNlY3Rpb24udHlwZSksXHJcbiAgICAgIC8vdGl0bGU6IGVsZW1lbnQudGl0bGUsXHJcbiAgICAgIC8vaWNvbjogZWxlbWVudC5pY29uLFxyXG4gICAgICBzdGF0ZToge1xyXG4gICAgICAgIGRlc2lnbmVyOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgIHRlbXBsYXRlOiBzZWN0aW9uLnRlbXBsYXRlLFxyXG4gICAgICAgIG1vZGVsOiBlbGVtZW50LFxyXG4gICAgICAgIG1vZGU6ICdlZGl0JyxcclxuICAgICAgfSBhcyBFbGVtZXREYXRhXHJcbiAgICB9KS50aGVuKGUgPT5cclxuICAgICAgZS5pbnN0YW5jZS5jaGFuZ2Uuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQsIGUpO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICByZXNvbHZlKGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJlamVjdCgpO1xyXG4gICAgICB9KVxyXG4gICAgKSk7XHJcbiAgfVxyXG4gIHRvZ2dsZURpc2FibGVkKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgZWxlbWVudC5kaXNhYmxlZCA9ICFlbGVtZW50LmRpc2FibGVkO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBjb25zdCB7IGFjdGlvbnMsIGN1YmVzLCBmb2xkZXJzLCBmb3JtcywgZ3VpZGVzLCByZXBvcnRzLCByb2xlcywgcnVsZXMsIHN0YXRlcywgdHlwZXMsIHV0aWxpdGllcywgdmlld3MsIHdpZGdldHMgfSA9IHRoaXMubW9kZWw7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVmLmV4ZWN1dGUoY2xlYW51cCh7IGFjdGlvbnMsIGN1YmVzLCBmb2xkZXJzLCBmb3JtcywgZ3VpZGVzLCByZXBvcnRzLCByb2xlcywgcnVsZXMsIHN0YXRlcywgdHlwZXMsIHV0aWxpdGllcywgdmlld3MsIHdpZGdldHMgfSkpLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgIGFwcGx5KGFjdGlvbnMsIGN1YmVzLCBmb2xkZXJzLCBmb3JtcywgZ3VpZGVzLCByZXBvcnRzLCByb2xlcywgcnVsZXMsIHN0YXRlcywgdHlwZXMsIHV0aWxpdGllcywgdmlld3MsIHdpZGdldHMpO1xyXG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2VcclxuICAgIH0sICgpID0+IHtcclxuICAgICAgdGhpcy5fcHMuZXJyb3IoKTtcclxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZVxyXG4gICAgfSk7XHJcbiAgICBmdW5jdGlvbiBhcHBseSguLi5jb2xsZWN0aW9uOiBFbGVtZW50TW9kZWxbXVtdKSB7XHJcbiAgICAgIGNvbGxlY3Rpb24uZm9yRWFjaChzID0+IHMuZm9yRWFjaChlID0+IGRlbGV0ZSBlLmRyYWZ0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBTZWN0aW9uIHtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJbmZvW107XHJcbiAgcHJpdmlsZWdlcz86IGJvb2xlYW47XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWRpcnR5IHx8IGxvYWRpbmcgfHwgc2F2aW5nXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPHNlY3Rpb24gKm5nRm9yPVwibGV0IHMgb2Ygc2VjdGlvbnNcIj5cclxuICA8aDIgY2xhc3M9XCJtYXQtdGl0bGVcIj57e3MudHlwZSB8IHRyYW5zbGF0ZX19PC9oMj5cclxuICA8ZGl2IGNsYXNzPVwiZWxlbWVudHNcIiBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIFtjZGtEcm9wTGlzdERhdGFdPVwicy5lbGVtZW50c1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IGUgb2Ygcy5lbGVtZW50c1wiIFtjbGFzcy5kaXNhYmxlZF09XCJlLmRpc2FibGVkXCIgY2RrRHJhZyBjZGtEcmFnUm9vdEVsZW1lbnQ9XCIubWF0LWNhcmQtdGl0bGVcIj5cclxuICAgICAgPCEtLSBAaXRlbS0tPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3tlLnRpdGxlfX1cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIHt7ZS5uYW1lfX1cclxuICAgICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGJpemRvYy1kZXNpZ25lci1lbGVtZW50IFttb2RlbF09XCJlXCIgW3RlbXBsYXRlXT1cInMudGVtcGxhdGVcIiBbZGVzaWduZXJdPVwibW9kZWxcIj48L2JpemRvYy1kZXNpZ25lci1lbGVtZW50PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNvcHkocywgZSlcIiAqbmdJZj1cIiFlLmNvcHlPZlwiIFtiaXpkb2NUb29sdGlwXT1cIidDb3B5J3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZmlsZV9jb3B5PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicy5lbGVtZW50cy5yZW1vdmUoZSlcIiAqbmdJZj1cImUuZHJhZnQgfHwgZS5lbXB0eVwiIFtiaXpkb2NUb29sdGlwXT1cIidEaXNjYXJkJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGlzYWJsZWQoZSlcIiBbYml6ZG9jVG9vbHRpcF09XCIoZS5kaXNhYmxlZCA/ICdFbmFibGUnIDogJ0Rpc2FibGUnKXx0cmFuc2xhdGVcIj48bWF0LWljb24+e3tlLmRpc2FibGVkID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJ319PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImVkaXQoZSwgcylcIiBbYml6ZG9jVG9vbHRpcF09XCInU2V0dGluZ3MnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLWVsZW1lbnRcIiBtYXRSaXBwbGUgKGNsaWNrKT1cImFkZChzLCBtZW51VHJpZ2dlciwgJGV2ZW50KVwiICpuZ0lmPVwicy50ZW1wbGF0ZXM/Lmxlbmd0aFwiPlxyXG4gICAgICA8c3BhbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGVtcGxhdGVNZW51XCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbiBbYml6ZG9jVG9vbHRpcF09XCInTmV3J3x0cmFuc2xhdGVcIiBkaXNhYmxlUmlwcGxlPVwidHJ1ZVwiPmFkZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjdGVtcGxhdGVNZW51PlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgdCBvZiBzLnRlbXBsYXRlc1wiIChjbGljayk9XCJjcmVhdGUocywgdClcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICB7e3QuZmFtaWx5fX1cclxuICAgICAgICAgICAge3t0LnRpdGxlfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
@@ -1,3 +1,4 @@
1
+ var ActionDesignComponent_1;
1
2
  import { __decorate } from "tslib";
2
3
  import { Component } from "@angular/core";
3
4
  import { BizDoc } from "../../../core/decorators";
@@ -5,21 +6,46 @@ import { DesignerTypeElementComponent } from "../designer.base";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
7
8
  import * as i2 from "@angular/forms";
8
- import * as i3 from "../../../core/layout/layout.component";
9
- let ActionDesignComponent = class ActionDesignComponent extends DesignerTypeElementComponent {
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/material/checkbox";
11
+ import * as i5 from "@angular/material/input";
12
+ import * as i6 from "../../core/color-picker.input";
13
+ import * as i7 from "../../../core/pipes/translate.pipe";
14
+ let ActionDesignComponent = ActionDesignComponent_1 = class ActionDesignComponent extends DesignerTypeElementComponent {
10
15
  constructor() {
11
16
  super(...arguments);
12
- this.form = this._fb.group({});
17
+ this.form = this._fb.group({
18
+ multiple: null,
19
+ color: null,
20
+ verb: null,
21
+ you: null,
22
+ youMale: null,
23
+ youFemale: null,
24
+ //titleMale: null,
25
+ //titleFemale: null,
26
+ past: null,
27
+ pastMale: null,
28
+ pastFemale: null,
29
+ adjective: null,
30
+ adjectivePlural: null,
31
+ });
32
+ }
33
+ ngOnInit() {
34
+ if (this.mode === 'edit') {
35
+ this.model.resource && this.lockResource(ActionDesignComponent_1.resources);
36
+ this._ref.lockChange.subscribe(() => this.lockResource(ActionDesignComponent_1.resources));
37
+ }
13
38
  }
14
39
  };
40
+ ActionDesignComponent.resources = ['you', 'youMale', 'youFemale', 'verb', 'past', 'pastMale', 'pastFemale', 'adjective', 'adjectivePlural'];
15
41
  ActionDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
- ActionDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ActionDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"editMode; else info\">\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"model.options\" (modelChange)=\"setOptions($event)\"></bizdoc-layout>\r\n</form>\r\n<ng-template #info>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.LayoutComponent, selector: "bizdoc-layout", inputs: ["fields", "model", "dirty", "params", "valid"], outputs: ["modelChange", "dirtyChange", "validChange"] }] });
17
- ActionDesignComponent = __decorate([
42
+ ActionDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ActionDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"mode === 'edit'; else info\">\r\n <div>\r\n <mat-checkbox formControlName=\"multiple\">{{'Multiple'|translate}}</mat-checkbox>\r\n </div>\r\n <h2 class=\"mat-title\">{{'Labels'|translate}}</h2>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Past'|translate}}</mat-label>\r\n <input matInput formControlName=\"past\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Verb'|translate}}</mat-label>\r\n <input matInput formControlName=\"verb\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Adjective'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjective\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'AdjectivePlural'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjectivePlural\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'You'|translate}}</mat-label>\r\n <input matInput formControlName=\"you\" />\r\n </mat-form-field>\r\n <div>\r\n <bizdoc-color-picker formControlName=\"color\" [label]=\"'Color'|translate\" class=\"flex\"></bizdoc-color-picker>\r\n </div>\r\n</form>\r\n<ng-template #info>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.ColorPicker, selector: "bizdoc-color-picker", inputs: ["label", "value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
43
+ ActionDesignComponent = ActionDesignComponent_1 = __decorate([
18
44
  BizDoc({ selector: 'action-designer' })
19
45
  ], ActionDesignComponent);
20
46
  export { ActionDesignComponent };
21
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, decorators: [{
22
48
  type: Component,
23
- args: [{ template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"editMode; else info\">\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"model.options\" (modelChange)=\"setOptions($event)\"></bizdoc-layout>\r\n</form>\r\n<ng-template #info>\r\n</ng-template>\r\n" }]
49
+ args: [{ template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"mode === 'edit'; else info\">\r\n <div>\r\n <mat-checkbox formControlName=\"multiple\">{{'Multiple'|translate}}</mat-checkbox>\r\n </div>\r\n <h2 class=\"mat-title\">{{'Labels'|translate}}</h2>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Past'|translate}}</mat-label>\r\n <input matInput formControlName=\"past\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Verb'|translate}}</mat-label>\r\n <input matInput formControlName=\"verb\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Adjective'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjective\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'AdjectivePlural'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjectivePlural\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'You'|translate}}</mat-label>\r\n <input matInput formControlName=\"you\" />\r\n </mat-form-field>\r\n <div>\r\n <bizdoc-color-picker formControlName=\"color\" [label]=\"'Color'|translate\" class=\"flex\"></bizdoc-color-picker>\r\n </div>\r\n</form>\r\n<ng-template #info>\r\n</ng-template>\r\n" }]
24
50
  }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9lbGVtZW50cy9hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2VsZW1lbnRzL2FjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0lBSW5ELHFCQUFxQixTQUFyQixxQkFBc0IsU0FBUSw0QkFBNEI7OztRQUNyRSxTQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0I7Q0FBQSxDQUFBO2tIQUZZLHFCQUFxQjtzR0FBckIscUJBQXFCLDJFQ1BsQyxvVEFLQTtBREVhLHFCQUFxQjtJQURqQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztHQUMzQixxQkFBcUIsQ0FFakM7U0FGWSxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFGakMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVzaWduZXIuYmFzZVwiO1xyXG5cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlVXJsOiAnYWN0aW9uLmNvbXBvbmVudC5odG1sJyB9KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdhY3Rpb24tZGVzaWduZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNpZ25Db21wb25lbnQgZXh0ZW5kcyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50IHtcclxuICBmb3JtID0gdGhpcy5fZmIuZ3JvdXAoe30pO1xyXG59XHJcbiIsIjxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJlZGl0TW9kZTsgZWxzZSBpbmZvXCI+XHJcbiAgPGJpemRvYy1sYXlvdXQgKm5nSWY9XCJtb2RlbC5hcmd1bWVudHNcIiBbZmllbGRzXT1cIm1vZGVsLmFyZ3VtZW50c1wiIFttb2RlbF09XCJtb2RlbC5vcHRpb25zXCIgKG1vZGVsQ2hhbmdlKT1cInNldE9wdGlvbnMoJGV2ZW50KVwiPjwvYml6ZG9jLWxheW91dD5cclxuPC9mb3JtPlxyXG48bmctdGVtcGxhdGUgI2luZm8+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9lbGVtZW50cy9hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2VsZW1lbnRzL2FjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7SUFJbkQscUJBQXFCLG1DQUFyQixxQkFBc0IsU0FBUSw0QkFBNEI7OztRQUVyRSxTQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDcEIsUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsR0FBRyxFQUFFLElBQUk7WUFDVCxPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBRSxJQUFJO1lBQ2Ysa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLElBQUk7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7S0FPSjtJQU5DLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUMxRjtJQUNILENBQUM7Q0FDRixDQUFBO0FBdEJnQiwrQkFBUyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBRSxDQUFBO2tIQUQxSCxxQkFBcUI7c0dBQXJCLHFCQUFxQiwyRUNQbEMsbXlDQStCQTtBRHhCYSxxQkFBcUI7SUFEakMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7R0FDM0IscUJBQXFCLENBdUJqQztTQXZCWSxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFGakMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVzaWduZXIuYmFzZVwiO1xyXG5cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlVXJsOiAnYWN0aW9uLmNvbXBvbmVudC5odG1sJyB9KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdhY3Rpb24tZGVzaWduZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNpZ25Db21wb25lbnQgZXh0ZW5kcyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50IHtcclxuICBwcml2YXRlIHN0YXRpYyByZXNvdXJjZXMgPSBbJ3lvdScsICd5b3VNYWxlJywgJ3lvdUZlbWFsZScsICd2ZXJiJywgJ3Bhc3QnLCAncGFzdE1hbGUnLCAncGFzdEZlbWFsZScsICdhZGplY3RpdmUnLCAnYWRqZWN0aXZlUGx1cmFsJ107XHJcbiAgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIG11bHRpcGxlOiBudWxsLFxyXG4gICAgY29sb3I6IG51bGwsXHJcbiAgICB2ZXJiOiBudWxsLFxyXG4gICAgeW91OiBudWxsLFxyXG4gICAgeW91TWFsZTogbnVsbCxcclxuICAgIHlvdUZlbWFsZTogbnVsbCxcclxuICAgIC8vdGl0bGVNYWxlOiBudWxsLFxyXG4gICAgLy90aXRsZUZlbWFsZTogbnVsbCxcclxuICAgIHBhc3Q6IG51bGwsXHJcbiAgICBwYXN0TWFsZTogbnVsbCxcclxuICAgIHBhc3RGZW1hbGU6IG51bGwsXHJcbiAgICBhZGplY3RpdmU6IG51bGwsXHJcbiAgICBhZGplY3RpdmVQbHVyYWw6IG51bGwsXHJcbiAgfSk7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcpIHtcclxuICAgICAgdGhpcy5tb2RlbC5yZXNvdXJjZSAmJiB0aGlzLmxvY2tSZXNvdXJjZShBY3Rpb25EZXNpZ25Db21wb25lbnQucmVzb3VyY2VzKTtcclxuICAgICAgdGhpcy5fcmVmLmxvY2tDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9ja1Jlc291cmNlKEFjdGlvbkRlc2lnbkNvbXBvbmVudC5yZXNvdXJjZXMpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW5cIiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0JzsgZWxzZSBpbmZvXCI+XHJcbiAgPGRpdj5cclxuICAgIDxtYXQtY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlwbGVcIj57eydNdWx0aXBsZSd8dHJhbnNsYXRlfX08L21hdC1jaGVja2JveD5cclxuICA8L2Rpdj5cclxuICA8aDIgY2xhc3M9XCJtYXQtdGl0bGVcIj57eydMYWJlbHMnfHRyYW5zbGF0ZX19PC9oMj5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7J1Bhc3QnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFzdFwiIC8+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7J1ZlcmInfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmVyYlwiIC8+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7J0FkamVjdGl2ZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhZGplY3RpdmVcIiAvPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgPG1hdC1sYWJlbD57eydBZGplY3RpdmVQbHVyYWwnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYWRqZWN0aXZlUGx1cmFsXCIgLz5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZsZXhcIj5cclxuICAgIDxtYXQtbGFiZWw+e3snWW91J3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInlvdVwiIC8+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8ZGl2PlxyXG4gICAgPGJpemRvYy1jb2xvci1waWNrZXIgZm9ybUNvbnRyb2xOYW1lPVwiY29sb3JcIiBbbGFiZWxdPVwiJ0NvbG9yJ3x0cmFuc2xhdGVcIiBjbGFzcz1cImZsZXhcIj48L2JpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuPG5nLXRlbXBsYXRlICNpbmZvPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=