@veloceapps/sdk 8.0.0-77 → 8.0.0-79

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. package/README.md +0 -1
  2. package/cms/types/common.types.d.ts +0 -1
  3. package/esm2020/cms/types/common.types.mjs +1 -1
  4. package/esm2020/cms/utils/ui-builder-layout.utils.mjs +1 -3
  5. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +5 -5
  6. package/esm2020/core/modules/configuration/services/configuration.service.mjs +3 -3
  7. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +6 -6
  8. package/esm2020/src/flow-routing.module.mjs +1 -18
  9. package/esm2020/src/pages/product/product.component.mjs +2 -3
  10. package/esm2020/src/pages/remote/remote.component.mjs +5 -6
  11. package/fesm2015/veloceapps-sdk-cms.mjs +2 -2
  12. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  13. package/fesm2015/veloceapps-sdk-core.mjs +16 -15
  14. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  15. package/fesm2015/veloceapps-sdk.mjs +8 -160
  16. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  17. package/fesm2020/veloceapps-sdk-cms.mjs +0 -2
  18. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  19. package/fesm2020/veloceapps-sdk-core.mjs +9 -9
  20. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  21. package/fesm2020/veloceapps-sdk.mjs +6 -161
  22. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  23. package/package.json +1 -9
  24. package/src/flow-routing.module.d.ts +6 -7
  25. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  26. package/esm2020/runtime/components/index.mjs +0 -5
  27. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  28. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  29. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  30. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  31. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  32. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  33. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  34. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  35. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  36. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  37. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  38. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  39. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  40. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  41. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  42. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  43. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  44. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  45. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  46. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  47. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  48. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  49. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  50. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  51. package/esm2020/runtime/index.mjs +0 -5
  52. package/esm2020/runtime/runtime.module.mjs +0 -74
  53. package/esm2020/runtime/services/cart.service.mjs +0 -29
  54. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  55. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  56. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  57. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  58. package/esm2020/runtime/services/index.mjs +0 -4
  59. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  60. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  61. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  62. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  63. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  64. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  65. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  66. package/esm2020/runtime/services/section.service.mjs +0 -117
  67. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  68. package/esm2020/runtime/types/index.mjs +0 -3
  69. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  70. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  71. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  72. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  73. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  74. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  75. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  76. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  77. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  78. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  79. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  80. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  81. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  82. package/runtime/README.md +0 -5
  83. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  84. package/runtime/components/index.d.ts +0 -4
  85. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  86. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  87. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  88. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  89. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  90. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  91. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  92. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  93. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  94. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  95. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  96. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  97. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  98. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  99. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  100. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  101. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  102. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  103. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  104. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  105. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  106. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  107. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  108. package/runtime/execution/utils/federated.util.d.ts +0 -6
  109. package/runtime/index.d.ts +0 -4
  110. package/runtime/runtime.module.d.ts +0 -16
  111. package/runtime/services/cart.service.d.ts +0 -15
  112. package/runtime/services/collapsible-state.service.d.ts +0 -15
  113. package/runtime/services/configuration.service.d.ts +0 -20
  114. package/runtime/services/current-state.service.d.ts +0 -8
  115. package/runtime/services/form-scope.service.d.ts +0 -20
  116. package/runtime/services/index.d.ts +0 -3
  117. package/runtime/services/product-model-cache.service.d.ts +0 -14
  118. package/runtime/services/runtime-context.service.d.ts +0 -16
  119. package/runtime/services/runtime-form.service.d.ts +0 -24
  120. package/runtime/services/runtime.service.d.ts +0 -44
  121. package/runtime/services/section-helper.service.d.ts +0 -8
  122. package/runtime/services/section-scope.service.d.ts +0 -14
  123. package/runtime/services/section-store.service.d.ts +0 -11
  124. package/runtime/services/section.service.d.ts +0 -30
  125. package/runtime/types/bound-data.types.d.ts +0 -13
  126. package/runtime/types/index.d.ts +0 -2
  127. package/runtime/types/quote-states.types.d.ts +0 -6
  128. package/runtime/types/runtime.types.d.ts +0 -19
  129. package/runtime/types/script-registry.types.d.ts +0 -13
  130. package/runtime/utils/line-item.util.d.ts +0 -34
  131. package/runtime/utils/section.utils.d.ts +0 -2
  132. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  133. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  134. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
@@ -1,119 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { MessageService } from 'primeng/api';
3
- import { CollapsibleStateService } from '../../../services/collapsible-state.service';
4
- import { FormScopeService } from '../../../services/form-scope.service';
5
- import { SectionScopeService } from '../../../services/section-scope.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../../services/form-scope.service";
8
- import * as i2 from "../../../services/collapsible-state.service";
9
- import * as i3 from "../../../services/section-scope.service";
10
- import * as i4 from "primeng/api";
11
- import * as i5 from "@angular/common";
12
- import * as i6 from "@angular/forms";
13
- import * as i7 from "@veloceapps/core";
14
- export class VeloTypeComponent {
15
- constructor(formScope, collapsibleState, sectionScope, messageService) {
16
- this.formScope = formScope;
17
- this.collapsibleState = collapsibleState;
18
- this.sectionScope = sectionScope;
19
- this.messageService = messageService;
20
- this.messageBucketId = 'ui-runtime';
21
- this.indent = 1;
22
- this.prices = [];
23
- this.form = this.formScope.form;
24
- this.section = this.sectionScope.section;
25
- this.indent = this.sectionScope.indent;
26
- this.controlName = this.section.id;
27
- this.qtyControlName = this.section.id + 'qty';
28
- this.displayName =
29
- (this.section.model?.properties && this.section.model.properties['displayName']) ||
30
- this.section.model?.type ||
31
- '';
32
- }
33
- ngOnInit() {
34
- if (this.section.pricingEnabled) {
35
- this.prices = this.getPrices();
36
- }
37
- if (this.section.controlType === 'MESSAGE') {
38
- this.messageService.clear(this.messageBucketId);
39
- this.section.model?.messages?.forEach(message => {
40
- this.messageService.add({ key: this.messageBucketId, summary: message });
41
- });
42
- }
43
- }
44
- handleRemove() {
45
- const updateData = {
46
- id: this.section.id,
47
- action: 'remove',
48
- };
49
- this.formScope.publishFormUpdate(updateData);
50
- }
51
- handleQuantityUpdate() {
52
- const updateData = {
53
- id: this.section.id,
54
- action: 'qtyUpdate',
55
- };
56
- this.formScope.publishFormUpdate(updateData);
57
- }
58
- toggleCollapse() {
59
- if (this.section.model) {
60
- this.collapsibleState.toggleCollapse(this.section.model.id);
61
- }
62
- }
63
- getPrices() {
64
- let prices = [];
65
- if (this.section.model?.chargeItems) {
66
- prices = this.section.model.chargeItems.map(pi => {
67
- const price = {
68
- listPrice: pi.listPrice,
69
- netPrice: pi.netPrice,
70
- chargeMethod: pi.chargeMethod,
71
- chargeType: pi.chargeType,
72
- };
73
- return price;
74
- });
75
- }
76
- const oneTime = {
77
- chargeMethod: 'ONE_TIME',
78
- netPrice: 0,
79
- listPrice: 0,
80
- chargeType: '',
81
- };
82
- const recurring = {
83
- chargeMethod: 'RECURRING',
84
- netPrice: 0,
85
- listPrice: 0,
86
- chargeType: '',
87
- };
88
- prices.forEach(p => {
89
- if (p.chargeMethod === oneTime.chargeMethod) {
90
- this.add(oneTime, p);
91
- }
92
- if (p.chargeMethod === recurring.chargeMethod) {
93
- this.add(recurring, p);
94
- }
95
- });
96
- const result = [];
97
- if (oneTime.listPrice > 0) {
98
- result.push(oneTime);
99
- }
100
- if (recurring.listPrice > 0) {
101
- result.push(recurring);
102
- }
103
- return result;
104
- }
105
- add(target, src) {
106
- target.netPrice = target.netPrice + src.netPrice;
107
- target.listPrice = target.listPrice + src.listPrice;
108
- if (src.explanation) {
109
- target.explanation = src.explanation;
110
- }
111
- }
112
- }
113
- VeloTypeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VeloTypeComponent, deps: [{ token: i1.FormScopeService }, { token: i2.CollapsibleStateService }, { token: i3.SectionScopeService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component });
114
- VeloTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: VeloTypeComponent, selector: "velo-type", ngImport: i0, template: "<div class=\"container-box div-block collapsed container-box-bordered\" [formGroup]=\"form\">\n <div class=\"box-title\">\n <div class=\"header clearfix\">\n <div>\n <div class=\"header-label div-inline\">\n {{ displayName }}\n <span *ngIf=\"prices.length > 0\">\n <span>${{ prices[0].netPrice }}</span>\n <span *ngIf=\"prices.length > 1\">\n <span>, </span>\n <span>${{ prices[1].netPrice }}</span>\n </span>\n </span>\n </div>\n\n <div class=\"header-qty-container input-form-input\">\n <input\n [id]=\"qtyControlName\"\n [formControlName]=\"qtyControlName\"\n (blur)=\"form.controls[qtyControlName].valid && handleQuantityUpdate()\"\n type=\"text\"\n class=\"form-control\"\n size=\"3\"\n />\n <div class=\"validation-message\">\n <div *ngFor=\"let key of form.controls[qtyControlName].errors | values\">\n <span>\n {{ form.controls[qtyControlName]?.errors?.[key].message }}\n </span>\n </div>\n <span *ngIf=\"form.controls[qtyControlName].valid\"> &nbsp; </span>\n </div>\n <span *ngIf=\"prices.length > 0\">\n <div>{{ prices[0].explanation }}</div>\n <span *ngIf=\"prices.length > 1 && prices[1].explanation\">\n <div>{{ prices[1].explanation }}</div>\n </span>\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"box-actions\">\n <ng-container *ngIf=\"section.controlType !== 'MESSAGE'\">\n <ng-template #msgTemplate>\n <div class=\"runtime-info-message\">\n <ul class=\"message-text\">\n <li *ngFor=\"let message of section.model?.messages\">{{ message }}</li>\n </ul>\n </div>\n </ng-template>\n\n <!-- removed dependency: ngx-bootstrap -->\n <!-- <div\n class=\"box-action-button\"\n *ngIf=\"(section.model?.messages?.length ?? 0) > 0\"\n [popover]=\"msgTemplate\"\n placement=\"left\"\n container=\"body\"\n [isOpen]=\"true\"\n >\n <a href=\"javascript:void(0);\">\n <i class=\"fa fa-info check-icon\"></i>\n </a>\n </div> -->\n </ng-container>\n\n <div\n class=\"box-action-button\"\n (click)=\"toggleCollapse()\"\n [hidden]=\"!section.children || section.children.length < 1\"\n >\n <a><i class=\"fa fa-chevron-down check-icon\"></i></a>\n </div>\n\n <div class=\"box-action-button\" (click)=\"handleRemove()\">\n <a><i class=\"fa fa-trash-o check-icon\"></i></a>\n </div>\n </div>\n </div>\n\n <ng-content></ng-content>\n</div>\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.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.ValuesPipe, name: "values" }] });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VeloTypeComponent, decorators: [{
116
- type: Component,
117
- args: [{ selector: 'velo-type', template: "<div class=\"container-box div-block collapsed container-box-bordered\" [formGroup]=\"form\">\n <div class=\"box-title\">\n <div class=\"header clearfix\">\n <div>\n <div class=\"header-label div-inline\">\n {{ displayName }}\n <span *ngIf=\"prices.length > 0\">\n <span>${{ prices[0].netPrice }}</span>\n <span *ngIf=\"prices.length > 1\">\n <span>, </span>\n <span>${{ prices[1].netPrice }}</span>\n </span>\n </span>\n </div>\n\n <div class=\"header-qty-container input-form-input\">\n <input\n [id]=\"qtyControlName\"\n [formControlName]=\"qtyControlName\"\n (blur)=\"form.controls[qtyControlName].valid && handleQuantityUpdate()\"\n type=\"text\"\n class=\"form-control\"\n size=\"3\"\n />\n <div class=\"validation-message\">\n <div *ngFor=\"let key of form.controls[qtyControlName].errors | values\">\n <span>\n {{ form.controls[qtyControlName]?.errors?.[key].message }}\n </span>\n </div>\n <span *ngIf=\"form.controls[qtyControlName].valid\"> &nbsp; </span>\n </div>\n <span *ngIf=\"prices.length > 0\">\n <div>{{ prices[0].explanation }}</div>\n <span *ngIf=\"prices.length > 1 && prices[1].explanation\">\n <div>{{ prices[1].explanation }}</div>\n </span>\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"box-actions\">\n <ng-container *ngIf=\"section.controlType !== 'MESSAGE'\">\n <ng-template #msgTemplate>\n <div class=\"runtime-info-message\">\n <ul class=\"message-text\">\n <li *ngFor=\"let message of section.model?.messages\">{{ message }}</li>\n </ul>\n </div>\n </ng-template>\n\n <!-- removed dependency: ngx-bootstrap -->\n <!-- <div\n class=\"box-action-button\"\n *ngIf=\"(section.model?.messages?.length ?? 0) > 0\"\n [popover]=\"msgTemplate\"\n placement=\"left\"\n container=\"body\"\n [isOpen]=\"true\"\n >\n <a href=\"javascript:void(0);\">\n <i class=\"fa fa-info check-icon\"></i>\n </a>\n </div> -->\n </ng-container>\n\n <div\n class=\"box-action-button\"\n (click)=\"toggleCollapse()\"\n [hidden]=\"!section.children || section.children.length < 1\"\n >\n <a><i class=\"fa fa-chevron-down check-icon\"></i></a>\n </div>\n\n <div class=\"box-action-button\" (click)=\"handleRemove()\">\n <a><i class=\"fa fa-trash-o check-icon\"></i></a>\n </div>\n </div>\n </div>\n\n <ng-content></ng-content>\n</div>\n" }]
118
- }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.CollapsibleStateService }, { type: i3.SectionScopeService }, { type: i4.MessageService }]; } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvdmVsby10eXBlL3ZlbG8tdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tdHlwZS92ZWxvLXR5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFROUUsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUNVLFNBQTJCLEVBQzNCLGdCQUF5QyxFQUN6QyxZQUFpQyxFQUNqQyxjQUE4QjtRQUg5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFoQnhCLG9CQUFlLEdBQUcsWUFBWSxDQUFDO1FBS3hDLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFLWCxXQUFNLEdBQXVCLEVBQUUsQ0FBQztRQVFyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUV2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXO1lBQ2QsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJO2dCQUN4QixFQUFFLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzRSxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsTUFBTSxVQUFVLEdBQWU7WUFDN0IsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLE1BQU0sVUFBVSxHQUFlO1lBQzdCLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxFQUFFLFdBQVc7U0FDcEIsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ25DLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMvQyxNQUFNLEtBQUssR0FBcUI7b0JBQzlCLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUztvQkFDdkIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO29CQUNyQixZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVk7b0JBQzdCLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVTtpQkFDMUIsQ0FBQztnQkFFRixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxNQUFNLE9BQU8sR0FBcUI7WUFDaEMsWUFBWSxFQUFFLFVBQVU7WUFDeEIsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUNaLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFxQjtZQUNsQyxZQUFZLEVBQUUsV0FBVztZQUN6QixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1lBQ1osVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEI7WUFDRCxJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDLFlBQVksRUFBRTtnQkFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLEdBQUcsQ0FBQyxNQUF3QixFQUFFLEdBQXFCO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNuQixNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs4R0E1SFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsaURDZDlCLHl6RkFtRkE7MkZEckVhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFFRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlY29tbWVuZGVkUHJpY2UsIFNlY3Rpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd2ZWxvLXR5cGUnLFxuICB0ZW1wbGF0ZVVybDogJ3ZlbG8tdHlwZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFZlbG9UeXBlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VCdWNrZXRJZCA9ICd1aS1ydW50aW1lJztcblxuICBwdWJsaWMgY29udHJvbE5hbWU6IHN0cmluZztcbiAgcHVibGljIHF0eUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwdWJsaWMgaW5kZW50ID0gMTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2VjdGlvbjogU2VjdGlvbjtcblxuICBwdWJsaWMgcHJpY2VzOiBSZWNvbW1lbmRlZFByaWNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxhcHNpYmxlU3RhdGU6IENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VjdGlvblNjb3BlOiBTZWN0aW9uU2NvcGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuICAgIHRoaXMuc2VjdGlvbiA9IHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb247XG4gICAgdGhpcy5pbmRlbnQgPSB0aGlzLnNlY3Rpb25TY29wZS5pbmRlbnQ7XG5cbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gdGhpcy5zZWN0aW9uLmlkO1xuICAgIHRoaXMucXR5Q29udHJvbE5hbWUgPSB0aGlzLnNlY3Rpb24uaWQgKyAncXR5JztcbiAgICB0aGlzLmRpc3BsYXlOYW1lID1cbiAgICAgICh0aGlzLnNlY3Rpb24ubW9kZWw/LnByb3BlcnRpZXMgJiYgdGhpcy5zZWN0aW9uLm1vZGVsLnByb3BlcnRpZXNbJ2Rpc3BsYXlOYW1lJ10pIHx8XG4gICAgICB0aGlzLnNlY3Rpb24ubW9kZWw/LnR5cGUgfHxcbiAgICAgICcnO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlY3Rpb24ucHJpY2luZ0VuYWJsZWQpIHtcbiAgICAgIHRoaXMucHJpY2VzID0gdGhpcy5nZXRQcmljZXMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWN0aW9uLmNvbnRyb2xUeXBlID09PSAnTUVTU0FHRScpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIodGhpcy5tZXNzYWdlQnVja2V0SWQpO1xuXG4gICAgICB0aGlzLnNlY3Rpb24ubW9kZWw/Lm1lc3NhZ2VzPy5mb3JFYWNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogdGhpcy5tZXNzYWdlQnVja2V0SWQsIHN1bW1hcnk6IG1lc3NhZ2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUmVtb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAncmVtb3ZlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtU2NvcGUucHVibGlzaEZvcm1VcGRhdGUodXBkYXRlRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUXVhbnRpdHlVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlRGF0YTogVXBkYXRlRGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLnNlY3Rpb24uaWQsXG4gICAgICBhY3Rpb246ICdxdHlVcGRhdGUnLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1TY29wZS5wdWJsaXNoRm9ybVVwZGF0ZSh1cGRhdGVEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWN0aW9uLm1vZGVsKSB7XG4gICAgICB0aGlzLmNvbGxhcHNpYmxlU3RhdGUudG9nZ2xlQ29sbGFwc2UodGhpcy5zZWN0aW9uLm1vZGVsLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpY2VzKCk6IFJlY29tbWVuZGVkUHJpY2VbXSB7XG4gICAgbGV0IHByaWNlczogUmVjb21tZW5kZWRQcmljZVtdID0gW107XG4gICAgaWYgKHRoaXMuc2VjdGlvbi5tb2RlbD8uY2hhcmdlSXRlbXMpIHtcbiAgICAgIHByaWNlcyA9IHRoaXMuc2VjdGlvbi5tb2RlbC5jaGFyZ2VJdGVtcy5tYXAocGkgPT4ge1xuICAgICAgICBjb25zdCBwcmljZTogUmVjb21tZW5kZWRQcmljZSA9IHtcbiAgICAgICAgICBsaXN0UHJpY2U6IHBpLmxpc3RQcmljZSxcbiAgICAgICAgICBuZXRQcmljZTogcGkubmV0UHJpY2UsXG4gICAgICAgICAgY2hhcmdlTWV0aG9kOiBwaS5jaGFyZ2VNZXRob2QsXG4gICAgICAgICAgY2hhcmdlVHlwZTogcGkuY2hhcmdlVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcHJpY2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbmVUaW1lOiBSZWNvbW1lbmRlZFByaWNlID0ge1xuICAgICAgY2hhcmdlTWV0aG9kOiAnT05FX1RJTUUnLFxuICAgICAgbmV0UHJpY2U6IDAsXG4gICAgICBsaXN0UHJpY2U6IDAsXG4gICAgICBjaGFyZ2VUeXBlOiAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjdXJyaW5nOiBSZWNvbW1lbmRlZFByaWNlID0ge1xuICAgICAgY2hhcmdlTWV0aG9kOiAnUkVDVVJSSU5HJyxcbiAgICAgIG5ldFByaWNlOiAwLFxuICAgICAgbGlzdFByaWNlOiAwLFxuICAgICAgY2hhcmdlVHlwZTogJycsXG4gICAgfTtcblxuICAgIHByaWNlcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgaWYgKHAuY2hhcmdlTWV0aG9kID09PSBvbmVUaW1lLmNoYXJnZU1ldGhvZCkge1xuICAgICAgICB0aGlzLmFkZChvbmVUaW1lLCBwKTtcbiAgICAgIH1cbiAgICAgIGlmIChwLmNoYXJnZU1ldGhvZCA9PT0gcmVjdXJyaW5nLmNoYXJnZU1ldGhvZCkge1xuICAgICAgICB0aGlzLmFkZChyZWN1cnJpbmcsIHApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvbW1lbmRlZFByaWNlW10gPSBbXTtcbiAgICBpZiAob25lVGltZS5saXN0UHJpY2UgPiAwKSB7XG4gICAgICByZXN1bHQucHVzaChvbmVUaW1lKTtcbiAgICB9XG4gICAgaWYgKHJlY3VycmluZy5saXN0UHJpY2UgPiAwKSB7XG4gICAgICByZXN1bHQucHVzaChyZWN1cnJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGFkZCh0YXJnZXQ6IFJlY29tbWVuZGVkUHJpY2UsIHNyYzogUmVjb21tZW5kZWRQcmljZSk6IHZvaWQge1xuICAgIHRhcmdldC5uZXRQcmljZSA9IHRhcmdldC5uZXRQcmljZSArIHNyYy5uZXRQcmljZTtcbiAgICB0YXJnZXQubGlzdFByaWNlID0gdGFyZ2V0Lmxpc3RQcmljZSArIHNyYy5saXN0UHJpY2U7XG4gICAgaWYgKHNyYy5leHBsYW5hdGlvbikge1xuICAgICAgdGFyZ2V0LmV4cGxhbmF0aW9uID0gc3JjLmV4cGxhbmF0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1ib3ggZGl2LWJsb2NrIGNvbGxhcHNlZCBjb250YWluZXItYm94LWJvcmRlcmVkXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGNsZWFyZml4XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxhYmVsIGRpdi1pbmxpbmVcIj5cbiAgICAgICAgICB7eyBkaXNwbGF5TmFtZSB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2VzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzcGFuPiR7eyBwcmljZXNbMF0ubmV0UHJpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgIDxzcGFuPiwgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj4ke3sgcHJpY2VzWzFdLm5ldFByaWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1xdHktY29udGFpbmVyIGlucHV0LWZvcm0taW5wdXRcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJxdHlDb250cm9sTmFtZVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF0eUNvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgIChibHVyKT1cImZvcm0uY29udHJvbHNbcXR5Q29udHJvbE5hbWVdLnZhbGlkICYmIGhhbmRsZVF1YW50aXR5VXBkYXRlKClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgc2l6ZT1cIjNcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRpb24tbWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGZvcm0uY29udHJvbHNbcXR5Q29udHJvbE5hbWVdLmVycm9ycyB8IHZhbHVlc1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXT8uZXJyb3JzPy5ba2V5XS5tZXNzYWdlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXS52YWxpZFwiPiAmbmJzcDsgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2VzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXY+e3sgcHJpY2VzWzBdLmV4cGxhbmF0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlcy5sZW5ndGggPiAxICYmIHByaWNlc1sxXS5leHBsYW5hdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2Pnt7IHByaWNlc1sxXS5leHBsYW5hdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJib3gtYWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uY29udHJvbFR5cGUgIT09ICdNRVNTQUdFJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI21zZ1RlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydW50aW1lLWluZm8tbWVzc2FnZVwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibWVzc2FnZS10ZXh0XCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBzZWN0aW9uLm1vZGVsPy5tZXNzYWdlc1wiPnt7IG1lc3NhZ2UgfX08L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIHJlbW92ZWQgZGVwZW5kZW5jeTogbmd4LWJvb3RzdHJhcCAtLT5cbiAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgKm5nSWY9XCIoc2VjdGlvbi5tb2RlbD8ubWVzc2FnZXM/Lmxlbmd0aCA/PyAwKSA+IDBcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIm1zZ1RlbXBsYXRlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICBbaXNPcGVuXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mbyBjaGVjay1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcbiAgICAgICAgW2hpZGRlbl09XCIhc2VjdGlvbi5jaGlsZHJlbiB8fCBzZWN0aW9uLmNoaWxkcmVuLmxlbmd0aCA8IDFcIlxuICAgICAgPlxuICAgICAgICA8YT48aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93biBjaGVjay1pY29uXCI+PC9pPjwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYm94LWFjdGlvbi1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlUmVtb3ZlKClcIj5cbiAgICAgICAgPGE+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vIGNoZWNrLWljb25cIj48L2k+PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -1,247 +0,0 @@
1
- import { CurrencyPipe, DOCUMENT } from '@angular/common';
2
- import { ChangeDetectorRef, Directive, Inject, Renderer2 } from '@angular/core';
3
- import { FormBuilder } from '@angular/forms';
4
- import { EntityUtil, PagedEntity, UUID } from '@veloceapps/core';
5
- import { ContextService, QuoteDraftService } from '@veloceapps/sdk/core';
6
- import * as _ from 'lodash';
7
- import * as moment from 'moment';
8
- import * as rxjs from 'rxjs';
9
- import * as rxjsOperators from 'rxjs/operators';
10
- import { ShoppingCartService } from '../../services/cart.service';
11
- import { CurrentStateService } from '../../services/current-state.service';
12
- import { FormScopeService } from '../../services/form-scope.service';
13
- import { RuntimeService } from '../../services/runtime.service';
14
- import { SectionScopeService } from '../../services/section-scope.service';
15
- import { SfQueryDirective } from './sf-query.directive';
16
- import { LineItemDirective } from './velo-port.directive';
17
- import { VlApprovalDirective } from './vl-approval.directive';
18
- import { VlDocumentAttachmentsDirective } from './vl-document-attachments.directive';
19
- import { VlDocumentTemplatesDirective } from './vl-document-templates.directive';
20
- import { VlQuoteDirective } from './vl-quote.directive';
21
- import { VlRampDirective } from './vl-ramp.directive';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "../../services/form-scope.service";
24
- import * as i2 from "../../services/section-scope.service";
25
- import * as i3 from "@angular/forms";
26
- import * as i4 from "../../services/runtime.service";
27
- import * as i5 from "../../services/cart.service";
28
- import * as i6 from "@veloceapps/sdk/core";
29
- import * as i7 from "../../services/current-state.service";
30
- import * as i8 from "./sf-query.directive";
31
- import * as i9 from "./velo-port.directive";
32
- import * as i10 from "./vl-quote.directive";
33
- import * as i11 from "./vl-document-templates.directive";
34
- import * as i12 from "./vl-ramp.directive";
35
- import * as i13 from "./vl-approval.directive";
36
- import * as i14 from "./vl-document-attachments.directive";
37
- const SHA1 = UUID.SHA1();
38
- const SCRIPT_GLOBAL_NAME = `$velo`;
39
- export class SectionScriptDirective {
40
- constructor(_document, sfQueryDirective, lineItemDirective, quoteDirective, documentTemplatesDirective, rampDirective, approvalDirective, documentAttachmentsDirective, formScope, sectionScope, renderer, formBuilder, runtimeService, cdr, cartService, contextService, currentStateService, quoteService) {
41
- this._document = _document;
42
- this.sfQueryDirective = sfQueryDirective;
43
- this.lineItemDirective = lineItemDirective;
44
- this.quoteDirective = quoteDirective;
45
- this.documentTemplatesDirective = documentTemplatesDirective;
46
- this.rampDirective = rampDirective;
47
- this.approvalDirective = approvalDirective;
48
- this.documentAttachmentsDirective = documentAttachmentsDirective;
49
- this.formScope = formScope;
50
- this.sectionScope = sectionScope;
51
- this.renderer = renderer;
52
- this.formBuilder = formBuilder;
53
- this.runtimeService = runtimeService;
54
- this.cdr = cdr;
55
- this.cartService = cartService;
56
- this.contextService = contextService;
57
- this.currentStateService = currentStateService;
58
- this.quoteService = quoteService;
59
- this.scriptId = '';
60
- this.sessionScope = {};
61
- }
62
- ngOnInit() {
63
- if (!this.scriptExists()) {
64
- return;
65
- }
66
- this.scriptId = this.generateScriptId();
67
- this.registry = this.getScriptRegistry();
68
- this.sessionScope = this.getSessionScope();
69
- if (!this.registry.exists(this.scriptId)) {
70
- this.appendScriptElementToDom();
71
- }
72
- this.initScript();
73
- this.registry.doRegister(this.scriptId, this.sectionScope.section.id);
74
- }
75
- ngAfterViewInit() {
76
- const sharedScriptGlobal = this.registry?.getGlobalForScript(this.sectionScope.section.id);
77
- if (sharedScriptGlobal) {
78
- this.methodApply('afterViewInit', sharedScriptGlobal);
79
- }
80
- }
81
- ngOnDestroy() {
82
- if (!this.scriptId) {
83
- return;
84
- }
85
- this.registry.unRegister(this.scriptId, this.sectionScope.section.id);
86
- if (!this.registry.exists(this.scriptId)) {
87
- this.removeScript();
88
- this.registry.removeGlobalForScript(this.scriptId);
89
- }
90
- }
91
- get scope() {
92
- if (!this.scriptId || !this.sectionScope.section) {
93
- return {};
94
- }
95
- return Object.assign({}, this.registry.getGlobalForScript(this.sectionScope.section.id) || {}, this.sessionScope);
96
- }
97
- scriptExists() {
98
- return (this.sectionScope?.section?.script?.length ?? 0) > 0;
99
- }
100
- encodeScriptBody() {
101
- return this.sectionScope.section.script ? atob(this.sectionScope.section.script) : '';
102
- }
103
- generateScriptId() {
104
- return '_' + SHA1.hex(this.encodeScriptBody());
105
- }
106
- getScriptRegistry() {
107
- return this.formScope.scriptRegistry;
108
- }
109
- getSessionScope() {
110
- return this.formScope.scriptSessionScope;
111
- }
112
- initScript() {
113
- let sharedScriptGlobal = this.registry.getGlobalForScript(this.sectionScope.section.id);
114
- if (!EntityUtil.isPresent(sharedScriptGlobal)) {
115
- sharedScriptGlobal = {};
116
- this.registry.setGlobalForScript(this.sectionScope.section.id, sharedScriptGlobal);
117
- }
118
- this.methodApply('init', sharedScriptGlobal);
119
- }
120
- removeScript() {
121
- const sharedScriptGlobal = this.registry.getGlobalForScript(this.sectionScope.section.id);
122
- this.methodApply('destroy', sharedScriptGlobal);
123
- this.removeScriptElementFromDom();
124
- }
125
- appendScriptElementToDom() {
126
- const script = this.scriptFromTemplate(this.encodeScriptBody(), this.scriptId, this.sectionScope.section);
127
- this.scriptElement = this.renderer.createElement('script');
128
- this.scriptElement.type = `text/javascript`;
129
- this.scriptElement.text = script;
130
- this.scriptElement.setAttribute('id', this.scriptId);
131
- this.renderer.appendChild(this._document.body, this.scriptElement);
132
- }
133
- removeScriptElementFromDom() {
134
- if (!this.scriptElement) {
135
- this.scriptElement = this._document.getElementById(this.scriptId);
136
- }
137
- this.scriptElement.remove();
138
- }
139
- scriptFromTemplate(scriptBody, scriptId, section) {
140
- return `var ${scriptId} = (function (${SCRIPT_GLOBAL_NAME}, form, { section, templates }, sessionScope, formBuilder, runtimeContext, cdr, apis) {
141
- ${SCRIPT_GLOBAL_NAME}["form"] = form;
142
- ${SCRIPT_GLOBAL_NAME}["section"] = section;
143
- ${SCRIPT_GLOBAL_NAME}["templates"] = templates;
144
- ${SCRIPT_GLOBAL_NAME}["sessionScope"] = sessionScope;
145
- ${SCRIPT_GLOBAL_NAME}["formBuilder"] = formBuilder;
146
- ${SCRIPT_GLOBAL_NAME}["runtimeContext"] = runtimeContext;
147
- ${SCRIPT_GLOBAL_NAME}["cdr"] = cdr;
148
- ${SCRIPT_GLOBAL_NAME}["apis"] = apis;
149
-
150
- ${scriptBody}
151
- return ${SCRIPT_GLOBAL_NAME};
152
- });
153
-
154
- //# sourceURL=${_.kebabCase(section.label)}.js`;
155
- }
156
- methodApply(methodName, sharedScriptGlobal) {
157
- const args = [
158
- sharedScriptGlobal,
159
- this.formScope.form,
160
- this.sectionScope,
161
- this.sessionScope,
162
- this.formBuilder,
163
- this.runtimeService.getRuntimeContext(),
164
- this.cdr,
165
- this.getExposedApis(),
166
- ];
167
- const fnInit = window[`${this.scriptId}`](...args);
168
- fnInit && fnInit[methodName] && fnInit[methodName].apply();
169
- }
170
- getExposedApis() {
171
- return {
172
- 'sf-query': this.sfQueryDirective,
173
- 'line-item': this.lineItemDirective,
174
- 'quote-directive': this.quoteDirective,
175
- 'templates-directive': this.documentTemplatesDirective,
176
- 'attachments-directive': this.documentAttachmentsDirective,
177
- 'ramp-directive': this.rampDirective,
178
- 'approval-directive': this.approvalDirective,
179
- entityUtil: EntityUtil,
180
- moment,
181
- lodash: _,
182
- rxjs: { ...rxjsOperators, ...rxjs },
183
- PagedEntity,
184
- pipes: {
185
- currency: CurrencyPipe,
186
- },
187
- solutionUpdateStarted: this.runtimeService.onSolutionUpdateStartedEvent,
188
- solutionUpdated: this.runtimeService.onSolutionProcessed,
189
- cartService: this.cartService,
190
- configurationContextService: this.contextService,
191
- quoteDraft: this.quoteService.quoteDraft,
192
- currentStateService: this.currentStateService,
193
- };
194
- }
195
- }
196
- SectionScriptDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SectionScriptDirective, deps: [{ token: DOCUMENT }, { token: SfQueryDirective }, { token: LineItemDirective }, { token: VlQuoteDirective }, { token: VlDocumentTemplatesDirective }, { token: VlRampDirective }, { token: VlApprovalDirective }, { token: VlDocumentAttachmentsDirective }, { token: i1.FormScopeService }, { token: i2.SectionScopeService }, { token: i0.Renderer2 }, { token: i3.FormBuilder }, { token: i4.RuntimeService }, { token: i0.ChangeDetectorRef }, { token: i5.ShoppingCartService }, { token: i6.ContextService }, { token: i7.CurrentStateService }, { token: i6.QuoteDraftService }], target: i0.ɵɵFactoryTarget.Directive });
197
- SectionScriptDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SectionScriptDirective, selector: "section-script", providers: [
198
- SfQueryDirective,
199
- LineItemDirective,
200
- VlQuoteDirective,
201
- VlDocumentTemplatesDirective,
202
- VlRampDirective,
203
- VlApprovalDirective,
204
- VlDocumentAttachmentsDirective,
205
- ], exportAs: ["scriptApi"], ngImport: i0 });
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SectionScriptDirective, decorators: [{
207
- type: Directive,
208
- args: [{
209
- // eslint-disable-next-line @angular-eslint/directive-selector
210
- selector: 'section-script',
211
- exportAs: 'scriptApi',
212
- providers: [
213
- SfQueryDirective,
214
- LineItemDirective,
215
- VlQuoteDirective,
216
- VlDocumentTemplatesDirective,
217
- VlRampDirective,
218
- VlApprovalDirective,
219
- VlDocumentAttachmentsDirective,
220
- ],
221
- }]
222
- }], ctorParameters: function () { return [{ type: Document, decorators: [{
223
- type: Inject,
224
- args: [DOCUMENT]
225
- }] }, { type: i8.SfQueryDirective, decorators: [{
226
- type: Inject,
227
- args: [SfQueryDirective]
228
- }] }, { type: i9.LineItemDirective, decorators: [{
229
- type: Inject,
230
- args: [LineItemDirective]
231
- }] }, { type: i10.VlQuoteDirective, decorators: [{
232
- type: Inject,
233
- args: [VlQuoteDirective]
234
- }] }, { type: i11.VlDocumentTemplatesDirective, decorators: [{
235
- type: Inject,
236
- args: [VlDocumentTemplatesDirective]
237
- }] }, { type: i12.VlRampDirective, decorators: [{
238
- type: Inject,
239
- args: [VlRampDirective]
240
- }] }, { type: i13.VlApprovalDirective, decorators: [{
241
- type: Inject,
242
- args: [VlApprovalDirective]
243
- }] }, { type: i14.VlDocumentAttachmentsDirective, decorators: [{
244
- type: Inject,
245
- args: [VlDocumentAttachmentsDirective]
246
- }] }, { type: i1.FormScopeService }, { type: i2.SectionScopeService }, { type: i0.Renderer2 }, { type: i3.FormBuilder }, { type: i4.RuntimeService }, { type: i0.ChangeDetectorRef }, { type: i5.ShoppingCartService }, { type: i6.ContextService }, { type: i7.CurrentStateService }, { type: i6.QuoteDraftService }]; } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy9zZWN0aW9uLXNjcmlwdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQVcsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9B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QUFDLG1CQUFtQjtZQUN4RCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUN4QyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQzlDLENBQUM7SUFDSixDQUFDOzttSEFoTVUsc0JBQXNCLGtCQU92QixRQUFRLGFBQ1IsZ0JBQWdCLGFBQ2hCLGlCQUFpQixhQUNqQixnQkFBZ0IsYUFDaEIsNEJBQTRCLGFBQzVCLGVBQWUsYUFDZixtQkFBbUIsYUFDbkIsOEJBQThCO3VHQWQ3QixzQkFBc0IseUNBVnRCO1FBQ1QsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsNEJBQTRCO1FBQzVCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsOEJBQThCO0tBQy9COzJGQUVVLHNCQUFzQjtrQkFkbEMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixTQUFTLEVBQUU7d0JBQ1QsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3dCQUM1QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsOEJBQThCO3FCQUMvQjtpQkFDRjs7MEJBUUksTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBQ25DLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsLCBQYWdlZEVudGl0eSwgU2VjdGlvbiwgVVVJRCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgcnhqc09wZXJhdG9ycyBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaG9wcGluZ0NhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jdXJyZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN0aW9uU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VjdGlvbi1zY29wZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjcmlwdFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc2NyaXB0LXJlZ2lzdHJ5LnR5cGVzJztcbmltcG9ydCB7IFNmUXVlcnlEaXJlY3RpdmUgfSBmcm9tICcuL3NmLXF1ZXJ5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaW5lSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdmVsby1wb3J0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWbEFwcHJvdmFsRGlyZWN0aXZlIH0gZnJvbSAnLi92bC1hcHByb3ZhbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmxEb2N1bWVudEF0dGFjaG1lbnRzRGlyZWN0aXZlIH0gZnJvbSAnLi92bC1kb2N1bWVudC1hdHRhY2htZW50cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmxEb2N1bWVudFRlbXBsYXRlc0RpcmVjdGl2ZSB9IGZyb20gJy4vdmwtZG9jdW1lbnQtdGVtcGxhdGVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWbFF1b3RlRGlyZWN0aXZlIH0gZnJvbSAnLi92bC1xdW90ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmxSYW1wRGlyZWN0aXZlIH0gZnJvbSAnLi92bC1yYW1wLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IFNIQTEgPSBVVUlELlNIQTEoKTtcbmNvbnN0IFNDUklQVF9HTE9CQUxfTkFNRSA9IGAkdmVsb2A7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NlY3Rpb24tc2NyaXB0JyxcbiAgZXhwb3J0QXM6ICdzY3JpcHRBcGknLFxuICBwcm92aWRlcnM6IFtcbiAgICBTZlF1ZXJ5RGlyZWN0aXZlLFxuICAgIExpbmVJdGVtRGlyZWN0aXZlLFxuICAgIFZsUXVvdGVEaXJlY3RpdmUsXG4gICAgVmxEb2N1bWVudFRlbXBsYXRlc0RpcmVjdGl2ZSxcbiAgICBWbFJhbXBEaXJlY3RpdmUsXG4gICAgVmxBcHByb3ZhbERpcmVjdGl2ZSxcbiAgICBWbERvY3VtZW50QXR0YWNobWVudHNEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25TY3JpcHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc2NyaXB0RWxlbWVudDogYW55O1xuICBwcml2YXRlIHNjcmlwdElkID0gJyc7XG4gIHByaXZhdGUgcmVnaXN0cnkhOiBTY3JpcHRSZWdpc3RyeTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2NvcGU6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFNmUXVlcnlEaXJlY3RpdmUpIHByaXZhdGUgc2ZRdWVyeURpcmVjdGl2ZTogU2ZRdWVyeURpcmVjdGl2ZSxcbiAgICBASW5qZWN0KExpbmVJdGVtRGlyZWN0aXZlKSBwcml2YXRlIGxpbmVJdGVtRGlyZWN0aXZlOiBMaW5lSXRlbURpcmVjdGl2ZSxcbiAgICBASW5qZWN0KFZsUXVvdGVEaXJlY3RpdmUpIHByaXZhdGUgcXVvdGVEaXJlY3RpdmU6IFZsUXVvdGVEaXJlY3RpdmUsXG4gICAgQEluamVjdChWbERvY3VtZW50VGVtcGxhdGVzRGlyZWN0aXZlKSBwcml2YXRlIGRvY3VtZW50VGVtcGxhdGVzRGlyZWN0aXZlOiBWbERvY3VtZW50VGVtcGxhdGVzRGlyZWN0aXZlLFxuICAgIEBJbmplY3QoVmxSYW1wRGlyZWN0aXZlKSBwcml2YXRlIHJhbXBEaXJlY3RpdmU6IFZsUmFtcERpcmVjdGl2ZSxcbiAgICBASW5qZWN0KFZsQXBwcm92YWxEaXJlY3RpdmUpIHByaXZhdGUgYXBwcm92YWxEaXJlY3RpdmU6IFZsQXBwcm92YWxEaXJlY3RpdmUsXG4gICAgQEluamVjdChWbERvY3VtZW50QXR0YWNobWVudHNEaXJlY3RpdmUpIHByaXZhdGUgZG9jdW1lbnRBdHRhY2htZW50c0RpcmVjdGl2ZTogVmxEb2N1bWVudEF0dGFjaG1lbnRzRGlyZWN0aXZlLFxuICAgIHByaXZhdGUgZm9ybVNjb3BlOiBGb3JtU2NvcGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VjdGlvblNjb3BlOiBTZWN0aW9uU2NvcGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogU2hvcHBpbmdDYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGN1cnJlbnRTdGF0ZVNlcnZpY2U6IEN1cnJlbnRTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZVNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zY3JpcHRFeGlzdHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2NyaXB0SWQgPSB0aGlzLmdlbmVyYXRlU2NyaXB0SWQoKTtcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gdGhpcy5nZXRTY3JpcHRSZWdpc3RyeSgpO1xuICAgIHRoaXMuc2Vzc2lvblNjb3BlID0gdGhpcy5nZXRTZXNzaW9uU2NvcGUoKTtcblxuICAgIGlmICghdGhpcy5yZWdpc3RyeS5leGlzdHModGhpcy5zY3JpcHRJZCkpIHtcbiAgICAgIHRoaXMuYXBwZW5kU2NyaXB0RWxlbWVudFRvRG9tKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0U2NyaXB0KCk7XG5cbiAgICB0aGlzLnJlZ2lzdHJ5LmRvUmVnaXN0ZXIodGhpcy5zY3JpcHRJZCwgdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbi5pZCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNoYXJlZFNjcmlwdEdsb2JhbCA9IHRoaXMucmVnaXN0cnk/LmdldEdsb2JhbEZvclNjcmlwdCh0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLmlkKTtcblxuICAgIGlmIChzaGFyZWRTY3JpcHRHbG9iYWwpIHtcbiAgICAgIHRoaXMubWV0aG9kQXBwbHkoJ2FmdGVyVmlld0luaXQnLCBzaGFyZWRTY3JpcHRHbG9iYWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2NyaXB0SWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lzdHJ5LnVuUmVnaXN0ZXIodGhpcy5zY3JpcHRJZCwgdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbi5pZCk7XG5cbiAgICBpZiAoIXRoaXMucmVnaXN0cnkuZXhpc3RzKHRoaXMuc2NyaXB0SWQpKSB7XG4gICAgICB0aGlzLnJlbW92ZVNjcmlwdCgpO1xuICAgICAgdGhpcy5yZWdpc3RyeS5yZW1vdmVHbG9iYWxGb3JTY3JpcHQodGhpcy5zY3JpcHRJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzY29wZSgpOiBhbnkge1xuICAgIGlmICghdGhpcy5zY3JpcHRJZCB8fCAhdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlZ2lzdHJ5LmdldEdsb2JhbEZvclNjcmlwdCh0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLmlkKSB8fCB7fSwgdGhpcy5zZXNzaW9uU2NvcGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JpcHRFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNlY3Rpb25TY29wZT8uc2VjdGlvbj8uc2NyaXB0Py5sZW5ndGggPz8gMCkgPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmNvZGVTY3JpcHRCb2R5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uc2NyaXB0ID8gYXRvYih0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLnNjcmlwdCkgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTY3JpcHRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXycgKyBTSEExLmhleCh0aGlzLmVuY29kZVNjcmlwdEJvZHkoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNjcmlwdFJlZ2lzdHJ5KCk6IFNjcmlwdFJlZ2lzdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2NvcGUuc2NyaXB0UmVnaXN0cnk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlc3Npb25TY29wZSgpOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB0aGlzLmZvcm1TY29wZS5zY3JpcHRTZXNzaW9uU2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGluaXRTY3JpcHQoKTogdm9pZCB7XG4gICAgbGV0IHNoYXJlZFNjcmlwdEdsb2JhbCA9IHRoaXMucmVnaXN0cnkuZ2V0R2xvYmFsRm9yU2NyaXB0KHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uaWQpO1xuXG4gICAgaWYgKCFFbnRpdHlVdGlsLmlzUHJlc2VudChzaGFyZWRTY3JpcHRHbG9iYWwpKSB7XG4gICAgICBzaGFyZWRTY3JpcHRHbG9iYWwgPSB7fTtcbiAgICAgIHRoaXMucmVnaXN0cnkuc2V0R2xvYmFsRm9yU2NyaXB0KHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uaWQsIHNoYXJlZFNjcmlwdEdsb2JhbCk7XG4gICAgfVxuXG4gICAgdGhpcy5tZXRob2RBcHBseSgnaW5pdCcsIHNoYXJlZFNjcmlwdEdsb2JhbCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNjcmlwdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzaGFyZWRTY3JpcHRHbG9iYWwgPSB0aGlzLnJlZ2lzdHJ5LmdldEdsb2JhbEZvclNjcmlwdCh0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLmlkKTtcblxuICAgIHRoaXMubWV0aG9kQXBwbHkoJ2Rlc3Ryb3knLCBzaGFyZWRTY3JpcHRHbG9iYWwpO1xuXG4gICAgdGhpcy5yZW1vdmVTY3JpcHRFbGVtZW50RnJvbURvbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmRTY3JpcHRFbGVtZW50VG9Eb20oKTogdm9pZCB7XG4gICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5zY3JpcHRGcm9tVGVtcGxhdGUodGhpcy5lbmNvZGVTY3JpcHRCb2R5KCksIHRoaXMuc2NyaXB0SWQsIHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24pO1xuXG4gICAgdGhpcy5zY3JpcHRFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICB0aGlzLnNjcmlwdEVsZW1lbnQudHlwZSA9IGB0ZXh0L2phdmFzY3JpcHRgO1xuICAgIHRoaXMuc2NyaXB0RWxlbWVudC50ZXh0ID0gc2NyaXB0O1xuXG4gICAgdGhpcy5zY3JpcHRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCB0aGlzLnNjcmlwdElkKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwgdGhpcy5zY3JpcHRFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2NyaXB0RWxlbWVudEZyb21Eb20oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNjcmlwdEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2NyaXB0RWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc2NyaXB0SWQpO1xuICAgIH1cblxuICAgIHRoaXMuc2NyaXB0RWxlbWVudC5yZW1vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NyaXB0RnJvbVRlbXBsYXRlKHNjcmlwdEJvZHk6IHN0cmluZywgc2NyaXB0SWQ6IHN0cmluZywgc2VjdGlvbjogU2VjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB2YXIgJHtzY3JpcHRJZH0gPSAoZnVuY3Rpb24gKCR7U0NSSVBUX0dMT0JBTF9OQU1FfSwgZm9ybSwgeyBzZWN0aW9uLCB0ZW1wbGF0ZXMgfSwgc2Vzc2lvblNjb3BlLCBmb3JtQnVpbGRlciwgcnVudGltZUNvbnRleHQsIGNkciwgYXBpcykge1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1wiZm9ybVwiXSA9IGZvcm07XG4gICAgICAgICAgICAke1NDUklQVF9HTE9CQUxfTkFNRX1bXCJzZWN0aW9uXCJdID0gc2VjdGlvbjtcbiAgICAgICAgICAgICR7U0NSSVBUX0dMT0JBTF9OQU1FfVtcInRlbXBsYXRlc1wiXSA9IHRlbXBsYXRlcztcbiAgICAgICAgICAgICR7U0NSSVBUX0dMT0JBTF9OQU1FfVtcInNlc3Npb25TY29wZVwiXSA9IHNlc3Npb25TY29wZTtcbiAgICAgICAgICAgICR7U0NSSVBUX0dMT0JBTF9OQU1FfVtcImZvcm1CdWlsZGVyXCJdID0gZm9ybUJ1aWxkZXI7XG4gICAgICAgICAgICAke1NDUklQVF9HTE9CQUxfTkFNRX1bXCJydW50aW1lQ29udGV4dFwiXSA9IHJ1bnRpbWVDb250ZXh0O1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1wiY2RyXCJdID0gY2RyO1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1wiYXBpc1wiXSA9IGFwaXM7XG5cbiAgICAgICAgICAgICR7c2NyaXB0Qm9keX1cbiAgICAgICAgICAgICAgICByZXR1cm4gJHtTQ1JJUFRfR0xPQkFMX05BTUV9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIyBzb3VyY2VVUkw9JHtfLmtlYmFiQ2FzZShzZWN0aW9uLmxhYmVsKX0uanNgO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXRob2RBcHBseShtZXRob2ROYW1lOiBzdHJpbmcsIHNoYXJlZFNjcmlwdEdsb2JhbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIHNoYXJlZFNjcmlwdEdsb2JhbCxcbiAgICAgIHRoaXMuZm9ybVNjb3BlLmZvcm0sXG4gICAgICB0aGlzLnNlY3Rpb25TY29wZSxcbiAgICAgIHRoaXMuc2Vzc2lvblNjb3BlLFxuICAgICAgdGhpcy5mb3JtQnVpbGRlcixcbiAgICAgIHRoaXMucnVudGltZVNlcnZpY2UuZ2V0UnVudGltZUNvbnRleHQoKSxcbiAgICAgIHRoaXMuY2RyLFxuICAgICAgdGhpcy5nZXRFeHBvc2VkQXBpcygpLFxuICAgIF07XG5cbiAgICBjb25zdCBmbkluaXQgPSAod2luZG93IGFzIGFueSlbYCR7dGhpcy5zY3JpcHRJZH1gXSguLi5hcmdzKTtcblxuICAgIGZuSW5pdCAmJiBmbkluaXRbbWV0aG9kTmFtZV0gJiYgZm5Jbml0W21ldGhvZE5hbWVdLmFwcGx5KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cG9zZWRBcGlzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdzZi1xdWVyeSc6IHRoaXMuc2ZRdWVyeURpcmVjdGl2ZSxcbiAgICAgICdsaW5lLWl0ZW0nOiB0aGlzLmxpbmVJdGVtRGlyZWN0aXZlLFxuICAgICAgJ3F1b3RlLWRpcmVjdGl2ZSc6IHRoaXMucXVvdGVEaXJlY3RpdmUsXG4gICAgICAndGVtcGxhdGVzLWRpcmVjdGl2ZSc6IHRoaXMuZG9jdW1lbnRUZW1wbGF0ZXNEaXJlY3RpdmUsXG4gICAgICAnYXR0YWNobWVudHMtZGlyZWN0aXZlJzogdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRzRGlyZWN0aXZlLFxuICAgICAgJ3JhbXAtZGlyZWN0aXZlJzogdGhpcy5yYW1wRGlyZWN0aXZlLFxuICAgICAgJ2FwcHJvdmFsLWRpcmVjdGl2ZSc6IHRoaXMuYXBwcm92YWxEaXJlY3RpdmUsXG4gICAgICBlbnRpdHlVdGlsOiBFbnRpdHlVdGlsLFxuICAgICAgbW9tZW50LFxuICAgICAgbG9kYXNoOiBfLFxuICAgICAgcnhqczogeyAuLi5yeGpzT3BlcmF0b3JzLCAuLi5yeGpzIH0sXG4gICAgICBQYWdlZEVudGl0eSxcbiAgICAgIHBpcGVzOiB7XG4gICAgICAgIGN1cnJlbmN5OiBDdXJyZW5jeVBpcGUsXG4gICAgICB9LFxuICAgICAgc29sdXRpb25VcGRhdGVTdGFydGVkOiB0aGlzLnJ1bnRpbWVTZXJ2aWNlLm9uU29sdXRpb25VcGRhdGVTdGFydGVkRXZlbnQsXG4gICAgICBzb2x1dGlvblVwZGF0ZWQ6IHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvblByb2Nlc3NlZCxcbiAgICAgIGNhcnRTZXJ2aWNlOiB0aGlzLmNhcnRTZXJ2aWNlLFxuICAgICAgY29uZmlndXJhdGlvbkNvbnRleHRTZXJ2aWNlOiB0aGlzLmNvbnRleHRTZXJ2aWNlLFxuICAgICAgcXVvdGVEcmFmdDogdGhpcy5xdW90ZVNlcnZpY2UucXVvdGVEcmFmdCxcbiAgICAgIGN1cnJlbnRTdGF0ZVNlcnZpY2U6IHRoaXMuY3VycmVudFN0YXRlU2VydmljZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,35 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { SalesforceApiService } from '@veloceapps/api';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@veloceapps/api";
5
- export class SfQueryDirective {
6
- constructor(apiService) {
7
- this.apiService = apiService;
8
- }
9
- query(searchRequest, objectName) {
10
- return this.apiService.query(searchRequest, objectName).toPromise();
11
- }
12
- describe(objectName, fieldName) {
13
- return this.apiService.describe(objectName, fieldName).toPromise();
14
- }
15
- describe2(objectName, fieldsNames) {
16
- return this.apiService.describe2(objectName, fieldsNames).toPromise();
17
- }
18
- apexGetRequest(path, params) {
19
- return this.apiService.apexGetRequest(path, params).toPromise();
20
- }
21
- apexPostRequest(path, body) {
22
- return this.apiService.apexPostRequest(path, body).toPromise();
23
- }
24
- }
25
- SfQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SfQueryDirective, deps: [{ token: i1.SalesforceApiService }], target: i0.ɵɵFactoryTarget.Directive });
26
- SfQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SfQueryDirective, selector: "sf-query", exportAs: ["sfApi"], ngImport: i0 });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SfQueryDirective, decorators: [{
28
- type: Directive,
29
- args: [{
30
- // eslint-disable-next-line @angular-eslint/directive-selector
31
- selector: 'sf-query',
32
- exportAs: 'sfApi',
33
- }]
34
- }], ctorParameters: function () { return [{ type: i1.SalesforceApiService }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2YtcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy9zZi1xdWVyeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsVUFBZ0M7UUFBaEMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7SUFBRyxDQUFDO0lBRWpELEtBQUssQ0FBQyxhQUE0QixFQUFFLFVBQWtCO1FBQzNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFTSxRQUFRLENBQUMsVUFBa0IsRUFBRSxTQUFrQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRU0sU0FBUyxDQUFDLFVBQWtCLEVBQUUsV0FBcUI7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVNLGNBQWMsQ0FBYyxJQUFZLEVBQUUsTUFBa0I7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFnQixDQUFDO0lBQ25GLENBQUM7SUFFTSxlQUFlLENBQTJCLElBQVksRUFBRSxJQUFPO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBZ0IsQ0FBQztJQUNyRixDQUFDOzs2R0FyQlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsT0FBTztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NmLXF1ZXJ5JyxcbiAgZXhwb3J0QXM6ICdzZkFwaScsXG59KVxuZXhwb3J0IGNsYXNzIFNmUXVlcnlEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBxdWVyeShzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0LCBvYmplY3ROYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucXVlcnkoc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUob2JqZWN0TmFtZTogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVzY3JpYmUob2JqZWN0TmFtZSwgZmllbGROYW1lKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmliZTIob2JqZWN0TmFtZTogc3RyaW5nLCBmaWVsZHNOYW1lczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVzY3JpYmUyKG9iamVjdE5hbWUsIGZpZWxkc05hbWVzKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcGV4R2V0UmVxdWVzdDxUID0gdW5rbm93bj4ocGF0aDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmFwZXhHZXRSZXF1ZXN0PFQ+KHBhdGgsIHBhcmFtcykudG9Qcm9taXNlKCkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhcGV4UG9zdFJlcXVlc3Q8VCA9IHVua25vd24sIFMgPSB1bmtub3duPihwYXRoOiBzdHJpbmcsIGJvZHk6IFMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmFwZXhQb3N0UmVxdWVzdDxULCBTPihwYXRoLCBib2R5KS50b1Byb21pc2UoKSBhcyBQcm9taXNlPFQ+O1xuICB9XG59XG4iXX0=
@@ -1,88 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { EntityUtil } from '@veloceapps/core';
3
- import { isDate } from 'lodash';
4
- import { FormScopeService } from '../../services/form-scope.service';
5
- import { SectionScopeService } from '../../services/section-scope.service';
6
- import { SectionsBinderHelper } from '../../utils/sections-binder.helper';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../services/form-scope.service";
9
- import * as i2 from "../../services/section-scope.service";
10
- //TODO ALE WE ARE EXTENDING COMPONENT HERE IN PORTS WE ARE EXTENDING DEDICATED CLASS!! TYPES HANDLER IS NO IMPLEMENTED YET
11
- export class VeloAttributeDirective {
12
- constructor(formScope, sectionScope) {
13
- this.formScope = formScope;
14
- this.sectionScope = sectionScope;
15
- this.valueQuantities = {};
16
- this.form = this.formScope.form;
17
- this.section = this.sectionScope.section;
18
- }
19
- ngOnInit() {
20
- this.initQuantity();
21
- }
22
- handleChange(valueOption) {
23
- const updateData = {
24
- id: this.section.id,
25
- action: 'update',
26
- valueOption,
27
- };
28
- this.formScope.publishFormUpdate(updateData);
29
- }
30
- handleChangDate(valueOption) {
31
- const oldValue = this.form.controls[this.section.id].value || '';
32
- const newValue = isDate(valueOption) ? valueOption.toLocaleDateString('en-us') : '';
33
- if (oldValue !== newValue) {
34
- this.handleChange(newValue);
35
- }
36
- }
37
- handleRemove() {
38
- const updateData = {
39
- id: this.section.id,
40
- action: 'remove',
41
- };
42
- this.formScope.publishFormUpdate(updateData);
43
- }
44
- // TODO ALE THIS IS SPECIFIC STEPPER FUNCTIONS
45
- nextVal() {
46
- const currentIndex = this.getCurrentValueIndex();
47
- const nextValIndex = currentIndex + 1;
48
- if (currentIndex != -1 &&
49
- this.section.sectionValue &&
50
- this.section.sectionValue.valueOptions.length >= nextValIndex) {
51
- this.handleChange(this.section.sectionValue.valueOptions[nextValIndex]);
52
- }
53
- }
54
- prevVal() {
55
- const currentIndex = this.getCurrentValueIndex();
56
- const prevValIndex = currentIndex - 1;
57
- if (currentIndex != -1 &&
58
- this.section.sectionValue &&
59
- this.section.sectionValue.valueOptions.length >= prevValIndex) {
60
- this.handleChange(this.section.sectionValue.valueOptions[prevValIndex]);
61
- }
62
- }
63
- initQuantity() {
64
- this.valueQuantities = this.section.model
65
- ? SectionsBinderHelper.getQuantityGroupByValue(this.section.model, this.section.boundData.name)
66
- : {};
67
- }
68
- getCurrentValueIndex() {
69
- const index = -1;
70
- const valueOptions = this.section.sectionValue && this.section.sectionValue.valueOptions;
71
- const currentValue = this.form.controls[this.section.id].value;
72
- if (valueOptions && EntityUtil.isPresent(currentValue)) {
73
- return valueOptions.findIndex(valueOption => currentValue === valueOption);
74
- }
75
- return index;
76
- }
77
- }
78
- VeloAttributeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VeloAttributeDirective, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Directive });
79
- VeloAttributeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: VeloAttributeDirective, selector: "velo-attribute-directive", exportAs: ["attributeApi"], ngImport: i0 });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VeloAttributeDirective, decorators: [{
81
- type: Directive,
82
- args: [{
83
- // eslint-disable-next-line @angular-eslint/directive-selector
84
- selector: 'velo-attribute-directive',
85
- exportAs: 'attributeApi',
86
- }]
87
- }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1hdHRyaWJ1dGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy92ZWxvLWF0dHJpYnV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUUxRSwwSEFBMEg7QUFNMUgsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUFvQixTQUEyQixFQUFVLFlBQWlDO1FBQXRFLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBTG5GLG9CQUFlLEdBQWdDLEVBQUUsQ0FBQztRQU12RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxXQUFpQjtRQUNuQyxNQUFNLFVBQVUsR0FBZTtZQUM3QixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25CLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFdBQVc7U0FDWixDQUFDO1FB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QUM1RTtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7bUhBeEZVLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsY0FBYztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbCwgU2VjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2VjdGlvbnNCaW5kZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9zZWN0aW9ucy1iaW5kZXIuaGVscGVyJztcblxuLy9UT0RPIEFMRSBXRSBBUkUgRVhURU5ESU5HIENPTVBPTkVOVCBIRVJFIElOIFBPUlRTIFdFIEFSRSBFWFRFTkRJTkcgREVESUNBVEVEIENMQVNTISEgVFlQRVMgSEFORExFUiBJUyBOTyBJTVBMRU1FTlRFRCBZRVRcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3ZlbG8tYXR0cmlidXRlLWRpcmVjdGl2ZScsXG4gIGV4cG9ydEFzOiAnYXR0cmlidXRlQXBpJyxcbn0pXG5leHBvcnQgY2xhc3MgVmVsb0F0dHJpYnV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyB2YWx1ZVF1YW50aXRpZXM6IHsgW2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWN0aW9uOiBTZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybVNjb3BlOiBGb3JtU2NvcGVTZXJ2aWNlLCBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybVNjb3BlLmZvcm07XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRRdWFudGl0eSgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZSh2YWx1ZU9wdGlvbj86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAndXBkYXRlJyxcbiAgICAgIHZhbHVlT3B0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1TY29wZS5wdWJsaXNoRm9ybVVwZGF0ZSh1cGRhdGVEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDaGFuZ0RhdGUodmFsdWVPcHRpb246IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuc2VjdGlvbi5pZF0udmFsdWUgfHwgJyc7XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGlzRGF0ZSh2YWx1ZU9wdGlvbikgPyB2YWx1ZU9wdGlvbi50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLXVzJykgOiAnJztcblxuICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUmVtb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAncmVtb3ZlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtU2NvcGUucHVibGlzaEZvcm1VcGRhdGUodXBkYXRlRGF0YSk7XG4gIH1cblxuICAvLyBUT0RPIEFMRSBUSElTIElTIFNQRUNJRklDIFNURVBQRVIgRlVOQ1RJT05TXG4gIHB1YmxpYyBuZXh0VmFsKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFZhbHVlSW5kZXgoKTtcbiAgICBjb25zdCBuZXh0VmFsSW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgaWYgKFxuICAgICAgY3VycmVudEluZGV4ICE9IC0xICYmXG4gICAgICB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlICYmXG4gICAgICB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlLnZhbHVlT3B0aW9ucy5sZW5ndGggPj0gbmV4dFZhbEluZGV4XG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlLnZhbHVlT3B0aW9uc1tuZXh0VmFsSW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJldlZhbCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRWYWx1ZUluZGV4KCk7XG4gICAgY29uc3QgcHJldlZhbEluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRJbmRleCAhPSAtMSAmJlxuICAgICAgdGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZSAmJlxuICAgICAgdGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZS52YWx1ZU9wdGlvbnMubGVuZ3RoID49IHByZXZWYWxJbmRleFxuICAgICkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZS52YWx1ZU9wdGlvbnNbcHJldlZhbEluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0UXVhbnRpdHkoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVF1YW50aXRpZXMgPSB0aGlzLnNlY3Rpb24ubW9kZWxcbiAgICAgID8gU2VjdGlvbnNCaW5kZXJIZWxwZXIuZ2V0UXVhbnRpdHlHcm91cEJ5VmFsdWUodGhpcy5zZWN0aW9uLm1vZGVsLCB0aGlzLnNlY3Rpb24uYm91bmREYXRhLm5hbWUpXG4gICAgICA6IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50VmFsdWVJbmRleCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluZGV4ID0gLTE7XG5cbiAgICBjb25zdCB2YWx1ZU9wdGlvbnMgPSB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlICYmIHRoaXMuc2VjdGlvbi5zZWN0aW9uVmFsdWUudmFsdWVPcHRpb25zO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnNlY3Rpb24uaWRdLnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlT3B0aW9ucyAmJiBFbnRpdHlVdGlsLmlzUHJlc2VudChjdXJyZW50VmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWVPcHRpb25zLmZpbmRJbmRleCh2YWx1ZU9wdGlvbiA9PiBjdXJyZW50VmFsdWUgPT09IHZhbHVlT3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbn1cbiJdfQ==