ngx-render-material-forms 1.6.9 → 1.7.1

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.
@@ -3,13 +3,17 @@ import ButtonComponent from 'formiojs/components/button/Button.js';
3
3
  import { MaterialComponent } from '../MaterialComponent';
4
4
  import { AngularButtonsThemes, ButtonsThemes } from '../../const/ButtonsThemes';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "@angular/material/button";
8
- import * as i3 from "@angular/material/icon";
9
- import * as i4 from "@angular/flex-layout/extended";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/material/button";
9
+ import * as i4 from "@angular/material/icon";
10
+ import * as i5 from "@angular/flex-layout/extended";
10
11
  export class MaterialButtonComponent extends MaterialComponent {
11
- constructor() {
12
- super(...arguments);
12
+ constructor(element, ref, dialog) {
13
+ super(element, ref);
14
+ this.element = element;
15
+ this.ref = ref;
16
+ this.dialog = dialog;
13
17
  this.loading = false;
14
18
  this.done = false;
15
19
  this.error = false;
@@ -80,12 +84,12 @@ export class MaterialButtonComponent extends MaterialComponent {
80
84
  return retVal;
81
85
  }
82
86
  }
83
- MaterialButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
84
- MaterialButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialButtonComponent, selector: "mat-formio-button", usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"instance\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
87
+ MaterialButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
88
+ MaterialButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialButtonComponent, selector: "mat-formio-button", usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"instance && instance.component.label != 'Click to add Products'\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n\r\n\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
85
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, decorators: [{
86
90
  type: Component,
87
- args: [{ selector: 'mat-formio-button', template: "<button *ngIf=\"instance\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"] }]
88
- }] });
91
+ args: [{ selector: 'mat-formio-button', template: "<button *ngIf=\"instance && instance.component.label != 'Click to add Products'\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n\r\n\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"] }]
92
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.MatDialog }]; } });
89
93
  ButtonComponent.MaterialComponent = MaterialButtonComponent;
90
94
  export { ButtonComponent };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sZUFBZSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBT2hGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFMOUQ7O1FBTVMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztLQTZFeEI7SUEzRUMsSUFBSSxLQUFLO1FBQ1AsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7U0FDbEM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDdEMsT0FBTyxLQUFLLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZ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LEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0csSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O29IQWpGVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixnRkNWcEMsK3BCQWNBOzJGREphLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxtQkFBbUI7O0FBdUYvQixlQUFlLENBQUMsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiBpbXBvcnQgQnV0dG9uQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvYnV0dG9uL0J1dHRvbi5qcyc7XHJcbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi4vTWF0ZXJpYWxDb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbmd1bGFyQnV0dG9uc1RoZW1lcywgQnV0dG9uc1RoZW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0L0J1dHRvbnNUaGVtZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCB7XHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgZG9uZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBlcnJvciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjbGlja2VkID0gZmFsc2U7XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIGlmICh0aGlzLmVycm9yKSB7XHJcbiAgICAgIHJldHVybiBBbmd1bGFyQnV0dG9uc1RoZW1lcy5XQVJOO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLmFuZ3VsYXJCdXR0b25UaGVtZTtcclxuICAgIHJldHVybiB0aGVtZSB8fCBBbmd1bGFyQnV0dG9uc1RoZW1lcy5QUklNQVJZO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFuZ3VsYXJCdXR0b25UaGVtZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy5pbnN0YW5jZS5jb21wb25lbnQudGhlbWUpIHtcclxuICAgICAgY2FzZSBCdXR0b25zVGhlbWVzLlBSSU1BUlk6XHJcbiAgICAgICAgcmV0dXJuIEFuZ3VsYXJCdXR0b25zVGhlbWVzLlBSSU1BUlk7XHJcblxyXG4gICAgICBjYXNlIEJ1dHRvbnNUaGVtZXMuV0FSTklORzpcclxuICAgICAgICByZXR1cm4gQW5ndWxhckJ1dHRvbnNUaGVtZXMuQUNDRU5UO1xyXG5cclxuICAgICAgY2FzZSBCdXR0b25zVGhlbWVzLkRBTkdFUjpcclxuICAgICAgICByZXR1cm4gQW5ndWxhckJ1dHRvbnNUaGVtZXMuV0FSTjtcclxuXHJcbiAgICAgIGNhc2UgQnV0dG9uc1RoZW1lcy5TRUNPTkRBUlk6XHJcbiAgICAgICAgcmV0dXJuIEFuZ3VsYXJCdXR0b25zVGhlbWVzLkJBU0lDO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYnV0dG9uQ2xhc3MoKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuYmxvY2sgPyAnbWF0LWZvcm1pby1idXR0b24tYmxvY2snIDogJyc7XHJcbiAgICBjbGFzc05hbWUgKz0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuc2l6ZSA/IGAgbWF0LWZvcm1pby1idXR0b24tJHt0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5zaXplfWAgOiAnJztcclxuICAgIGNsYXNzTmFtZSArPSAhdGhpcy5hbmd1bGFyQnV0dG9uVGhlbWUgPyBgIG1hdC1mb3JtaW8tdGhlbWUtJHt0aGlzLmluc3RhbmNlLmNvbXBvbmVudC50aGVtZX1gIDogJyc7XHJcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudCkge1xyXG4gICAgdGhpcy5jbGlja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5zdGFuY2Uub25DbGljayhldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWNrZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRTdGF0ZShsb2FkaW5nLCBlcnJvciwgZG9uZSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcclxuICAgIHRoaXMuZG9uZSA9IGRvbmU7XHJcbiAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uRm9udFNldChpY29uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvbnRTZXQgPSBpY29uLnNwbGl0KCcgJylbMF07XHJcbiAgICByZXR1cm4gZm9udFNldDtcclxuICB9XHJcblxyXG4gIGdldEljb25OYW1lKGljb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGljb24ucmVwbGFjZSh0aGlzLmdldEljb25Gb250U2V0KGljb24pLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcmV0VmFsID0gc3VwZXIuc2V0SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGluc3RhbmNlLnNob3VsZERpc2FibGVkO1xyXG4gICAgaW5zdGFuY2Uub24oJ3N1Ym1pdEJ1dHRvbicsICgpID0+IHRoaXMuc2V0U3RhdGUodHJ1ZSwgZmFsc2UsIGZhbHNlKSk7XHJcbiAgICBpbnN0YW5jZS5vbignc3VibWl0RG9uZScsICgpID0+IHRoaXMuc2V0U3RhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKSk7XHJcbiAgICBpbnN0YW5jZS5vbignc3VibWl0RXJyb3InLCAoKSA9PiB0aGlzLnNldFN0YXRlKGZhbHNlLCB0cnVlLCBmYWxzZSkpO1xyXG4gICAgaW5zdGFuY2Uub24oJ3JlcXVlc3RCdXR0b24nLCAoKSA9PiB0aGlzLnNldFN0YXRlKHRydWUsIGZhbHNlLCBmYWxzZSkpO1xyXG4gICAgaW5zdGFuY2Uub24oJ3JlcXVlc3REb25lJywgKCkgPT4gdGhpcy5zZXRTdGF0ZShmYWxzZSwgZmFsc2UsIHRydWUpKTtcclxuICAgIGluc3RhbmNlLm9uKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuaW5zdGFuY2Uuc2hvdWxkRGlzYWJsZWQgfHwgKHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LmRpc2FibGVPbkludmFsaWQgJiYgIWV2ZW50LmlzVmFsaWQpO1xyXG4gICAgICBpZiAoZXZlbnQuaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxufVxyXG5CdXR0b25Db21wb25lbnQuTWF0ZXJpYWxDb21wb25lbnQgPSBNYXRlcmlhbEJ1dHRvbkNvbXBvbmVudDtcclxuZXhwb3J0IHsgQnV0dG9uQ29tcG9uZW50IH07XHJcbiIsIjxidXR0b24gKm5nSWY9XCJpbnN0YW5jZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxyXG4gICAgICAgIHR5cGU9XCJ7eyBpbnN0YW5jZS5jb21wb25lbnQuYWN0aW9uIH19XCJcclxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImluc3RhbmNlLm9uQ2xpY2soJGV2ZW50KVwiXHJcbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQubGVmdEljb25cIj57e2luc3RhbmNlLmNvbXBvbmVudC5sZWZ0SWNvbn19PC9tYXQtaWNvbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJkb25lXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiZXJyb3JcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tc3BpblwiICpuZ0lmPVwibG9hZGluZ1wiPmF1dG9yZW5ldzwvbWF0LWljb24+XHJcbiAge3sgaW5zdGFuY2UuY29tcG9uZW50LmxhYmVsIH19XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiaW5zdGFuY2UuY29tcG9uZW50LnJpZ2h0SWNvblwiPnt7aW5zdGFuY2UuY29tcG9uZW50LnJpZ2h0SWNvbn19PC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFRaEYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtJQU01RCxZQUFtQixPQUFtQixFQUFTLEdBQXNCLEVBQVUsTUFBaUI7UUFDOUYsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQURILFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFMekYsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUd2QixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7U0FDbEM7UUFDRCxNQUFN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LENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0csSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O29IQW5GVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixnRkNYcEMsOHRCQWdCQTsyRkRMYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsbUJBQW1COztBQXlGL0IsZUFBZSxDQUFDLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuIGltcG9ydCBCdXR0b25Db21wb25lbnQgZnJvbSAnZm9ybWlvanMvY29tcG9uZW50cy9idXR0b24vQnV0dG9uLmpzJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxDb21wb25lbnQgfSBmcm9tICcuLi9NYXRlcmlhbENvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFuZ3VsYXJCdXR0b25zVGhlbWVzLCBCdXR0b25zVGhlbWVzIH0gZnJvbSAnLi4vLi4vY29uc3QvQnV0dG9uc1RoZW1lcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIE1hdGVyaWFsQ29tcG9uZW50IHtcclxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkb25lID0gZmFsc2U7XHJcbiAgcHVibGljIGVycm9yID0gZmFsc2U7XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNsaWNrZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZiwgcHVibGljIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgIHN1cGVyKGVsZW1lbnQsIHJlZik7XHJcbiAgfVxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIGlmICh0aGlzLmVycm9yKSB7XHJcbiAgICAgIHJldHVybiBBbmd1bGFyQnV0dG9uc1RoZW1lcy5XQVJOO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLmFuZ3VsYXJCdXR0b25UaGVtZTtcclxuICAgIHJldHVybiB0aGVtZSB8fCBBbmd1bGFyQnV0dG9uc1RoZW1lcy5QUklNQVJZO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFuZ3VsYXJCdXR0b25UaGVtZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy5pbnN0YW5jZS5jb21wb25lbnQudGhlbWUpIHtcclxuICAgICAgY2FzZSBCdXR0b25zVGhlbWVzLlBSSU1BUlk6XHJcbiAgICAgICAgcmV0dXJuIEFuZ3VsYXJCdXR0b25zVGhlbWVzLlBSSU1BUlk7XHJcblxyXG4gICAgICBjYXNlIEJ1dHRvbnNUaGVtZXMuV0FSTklORzpcclxuICAgICAgICByZXR1cm4gQW5ndWxhckJ1dHRvbnNUaGVtZXMuQUNDRU5UO1xyXG5cclxuICAgICAgY2FzZSBCdXR0b25zVGhlbWVzLkRBTkdFUjpcclxuICAgICAgICByZXR1cm4gQW5ndWxhckJ1dHRvbnNUaGVtZXMuV0FSTjtcclxuXHJcbiAgICAgIGNhc2UgQnV0dG9uc1RoZW1lcy5TRUNPTkRBUlk6XHJcbiAgICAgICAgcmV0dXJuIEFuZ3VsYXJCdXR0b25zVGhlbWVzLkJBU0lDO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYnV0dG9uQ2xhc3MoKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuYmxvY2sgPyAnbWF0LWZvcm1pby1idXR0b24tYmxvY2snIDogJyc7XHJcbiAgICBjbGFzc05hbWUgKz0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuc2l6ZSA/IGAgbWF0LWZvcm1pby1idXR0b24tJHt0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5zaXplfWAgOiAnJztcclxuICAgIGNsYXNzTmFtZSArPSAhdGhpcy5hbmd1bGFyQnV0dG9uVGhlbWUgPyBgIG1hdC1mb3JtaW8tdGhlbWUtJHt0aGlzLmluc3RhbmNlLmNvbXBvbmVudC50aGVtZX1gIDogJyc7XHJcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudCkge1xyXG4gICAgdGhpcy5jbGlja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5zdGFuY2Uub25DbGljayhldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWNrZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRTdGF0ZShsb2FkaW5nLCBlcnJvciwgZG9uZSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcclxuICAgIHRoaXMuZG9uZSA9IGRvbmU7XHJcbiAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uRm9udFNldChpY29uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvbnRTZXQgPSBpY29uLnNwbGl0KCcgJylbMF07XHJcbiAgICByZXR1cm4gZm9udFNldDtcclxuICB9XHJcblxyXG4gIGdldEljb25OYW1lKGljb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGljb24ucmVwbGFjZSh0aGlzLmdldEljb25Gb250U2V0KGljb24pLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcmV0VmFsID0gc3VwZXIuc2V0SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGluc3RhbmNlLnNob3VsZERpc2FibGVkO1xyXG4gICAgaW5zdGFuY2Uub24oJ3N1Ym1pdEJ1dHRvbicsICgpID0+IHRoaXMuc2V0U3RhdGUodHJ1ZSwgZmFsc2UsIGZhbHNlKSk7XHJcbiAgICBpbnN0YW5jZS5vbignc3VibWl0RG9uZScsICgpID0+IHRoaXMuc2V0U3RhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKSk7XHJcbiAgICBpbnN0YW5jZS5vbignc3VibWl0RXJyb3InLCAoKSA9PiB0aGlzLnNldFN0YXRlKGZhbHNlLCB0cnVlLCBmYWxzZSkpO1xyXG4gICAgaW5zdGFuY2Uub24oJ3JlcXVlc3RCdXR0b24nLCAoKSA9PiB0aGlzLnNldFN0YXRlKHRydWUsIGZhbHNlLCBmYWxzZSkpO1xyXG4gICAgaW5zdGFuY2Uub24oJ3JlcXVlc3REb25lJywgKCkgPT4gdGhpcy5zZXRTdGF0ZShmYWxzZSwgZmFsc2UsIHRydWUpKTtcclxuICAgIGluc3RhbmNlLm9uKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuaW5zdGFuY2Uuc2hvdWxkRGlzYWJsZWQgfHwgKHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LmRpc2FibGVPbkludmFsaWQgJiYgIWV2ZW50LmlzVmFsaWQpO1xyXG4gICAgICBpZiAoZXZlbnQuaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxufVxyXG5CdXR0b25Db21wb25lbnQuTWF0ZXJpYWxDb21wb25lbnQgPSBNYXRlcmlhbEJ1dHRvbkNvbXBvbmVudDtcclxuZXhwb3J0IHsgQnV0dG9uQ29tcG9uZW50IH07XHJcbiIsIjxidXR0b24gKm5nSWY9XCJpbnN0YW5jZSAmJiBpbnN0YW5jZS5jb21wb25lbnQubGFiZWwgIT0gJ0NsaWNrIHRvIGFkZCBQcm9kdWN0cydcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcclxuICAgICAgICB0eXBlPVwie3sgaW5zdGFuY2UuY29tcG9uZW50LmFjdGlvbiB9fVwiXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b24gW2NvbG9yXT1cImNvbG9yXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIChjbGljayk9XCJpbnN0YW5jZS5vbkNsaWNrKCRldmVudClcIlxyXG4+XHJcblxyXG5cclxuICA8bWF0LWljb24gKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQubGVmdEljb25cIj57e2luc3RhbmNlLmNvbXBvbmVudC5sZWZ0SWNvbn19PC9tYXQtaWNvbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJkb25lXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiZXJyb3JcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tc3BpblwiICpuZ0lmPVwibG9hZGluZ1wiPmF1dG9yZW5ldzwvbWF0LWljb24+XHJcbiAge3sgaW5zdGFuY2UuY29tcG9uZW50LmxhYmVsIH19XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiaW5zdGFuY2UuY29tcG9uZW50LnJpZ2h0SWNvblwiPnt7aW5zdGFuY2UuY29tcG9uZW50LnJpZ2h0SWNvbn19PC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { isNullOrUndefined } from 'util';
3
+ import * as CryptoJS from 'crypto-js';
2
4
  import { BehaviorSubject } from 'rxjs';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@angular/common/http";
@@ -9,8 +11,12 @@ export class CommonService {
9
11
  this.dropdownItems$ = this.dropdownItemsSubject.asObservable();
10
12
  this.setFlag = new BehaviorSubject(false); // Initialize with false
11
13
  this.dropdownflag$ = this.setFlag.asObservable(); // Observable that emits the boolean value
12
- this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
14
+ this.holy = '';
15
+ this.grail = '';
13
16
  this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
17
+ this.holy = CryptoJS.enc.Base64.parse('8F/2+T2NXqUBQERR12R4sw==');
18
+ this.grail = CryptoJS.enc.Base64.parse('yE0CgQbYzK5wqeoKTVzhOQ==');
19
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
14
20
  }
15
21
  getBaseApiUrl() {
16
22
  const baseUrlMapping = {
@@ -24,6 +30,28 @@ export class CommonService {
24
30
  const hostname = window.location.hostname;
25
31
  return baseUrlMapping[hostname] || null;
26
32
  }
33
+ scrumble(msg) {
34
+ if (!isNullOrUndefined(msg)) {
35
+ var conceal = this.getcampaign(msg, this.holy, this.grail);
36
+ var sha256 = CryptoJS.HmacSHA256(CryptoJS.enc.Base64.stringify(this.grail) + conceal.toString(), CryptoJS.enc.Base64.stringify(this.holy));
37
+ var hashInBase64 = CryptoJS.enc.Base64.stringify(sha256);
38
+ let keyValue = {
39
+ "value": conceal.toString(),
40
+ "mac": hashInBase64
41
+ };
42
+ var result = JSON.stringify(keyValue);
43
+ var jumbled = CryptoJS.enc.Utf8.parse(result);
44
+ return CryptoJS.enc.Base64.stringify(jumbled);
45
+ }
46
+ }
47
+ getcampaign(data, holy, grail) {
48
+ return CryptoJS.AES.encrypt(data.toString(), holy, {
49
+ blockSize: 128,
50
+ iv: grail,
51
+ mode: CryptoJS.mode.CBC,
52
+ padding: CryptoJS.pad.Pkcs7
53
+ });
54
+ }
27
55
  /* Intialization of api path and queryparams */
28
56
  initializeApiPath(getUrl, queryParams) {
29
57
  if (queryParams?.length) {
@@ -47,6 +75,16 @@ export class CommonService {
47
75
  return obj;
48
76
  }
49
77
  }
78
+ loadProducts(pageNumber, pazeSize, search = '', onlyActive = true, description = false, levelOneId, levelTwoId, levelThreeId, levelFourId) {
79
+ const baseApiUrl = this.getBaseApiUrl();
80
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
81
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetVendorProductsV2?vendorId=${vendorId}&pageNumber=${pageNumber}&pageSize=${pazeSize}&search=${search}&onlyActive=${onlyActive}&includeDescription=${description}&levelOne=${levelOneId}&levelTwo=${levelTwoId}&levelThree=${levelThreeId}&levelFour=${levelFourId}`);
82
+ }
83
+ listSubCategory(category) {
84
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
85
+ const baseApiUrl = this.getBaseApiUrl();
86
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsSubCategory?vendorId=${vendorId}&categoryName=${category}`);
87
+ }
50
88
  /* Append key and value to query string */
51
89
  convertToQueryString(queryParams) {
52
90
  const queryString = Object.keys(queryParams)
@@ -68,10 +106,30 @@ export class CommonService {
68
106
  const baseApiUrl = this.getBaseApiUrl();
69
107
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsCategory?vendorId=${vendorId}`);
70
108
  }
109
+ productLevelOne() {
110
+ const baseApiUrl = this.getBaseApiUrl();
111
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
112
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelOne?vendorId=${vendorId}`);
113
+ }
114
+ productLevelTwo(levelOneId) {
115
+ const baseApiUrl = this.getBaseApiUrl();
116
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
117
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelTwo?levelOneId=${levelOneId}&vendorId=${vendorId}`);
118
+ }
119
+ productLevelThree(levelOneId, levelTwoId) {
120
+ const baseApiUrl = this.getBaseApiUrl();
121
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
122
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelThree?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&vendorId=${vendorId}`);
123
+ }
124
+ productLevelFour(levelOneId, levelTwoId, levelThreeId) {
125
+ const baseApiUrl = this.getBaseApiUrl();
126
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
127
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelFour?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&levelThreeId=${levelThreeId}&vendorId=${vendorId}`);
128
+ }
71
129
  // Function to get value by key from the array
72
130
  getValueByKey(data, key) {
73
131
  if (!data || data.length === 0) {
74
- return null; // Return null if data is empty or undefined
132
+ return null;
75
133
  }
76
134
  const item = data.find(kv => kv.key.toLowerCase() === key.toLowerCase());
77
135
  return item ? item.value : null;
@@ -95,6 +153,7 @@ export class CommonService {
95
153
  getDropDownFlag() {
96
154
  return this.setFlag.getValue();
97
155
  }
156
+ /*Funtion to check if property is matched with given attributes in formBuilder or not */
98
157
  checkIsAttributeTrue(newProductPickerFlag, attributeName) {
99
158
  return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key => key.toLocaleLowerCase() === attributeName.toLowerCase() &&
100
159
  newProductPickerFlag[key].toLowerCase() === "true");
@@ -108,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
108
167
  providedIn: 'root'
109
168
  }]
110
169
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVVuRCxNQUFNLE9BQU8sYUFBYTtJQVl4QixZQUFtQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBTjNCLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUMvRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQywwQ0FBMEM7UUFHckYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGFBQWE7UUFDWixNQUFNLGNBQWMsR0FBRztZQUNyQixXQUFXLEVBQUUsd0JBQXdCO1lBQ3JDLHNCQUFzQixFQUFFLGtDQUFrQztZQUMxRCxvQkFBb0IsRUFBRSxnQ0FBZ0M7WUFDdEQsaUJBQWlCLEVBQUUsaUNBQWlDO1lBQ3BELHNCQUFzQixFQUFFLGtDQUFrQztTQUMzRCxDQUFD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Q29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAndXRpbCc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW50ZXJmYWNlIFZlbmRvclByb2R1Y3RzUmVzcG9uc2Uge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkYXRhOiBhbnk7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcclxuICBwYXJhbXNEYXRhOiBhbnk7XHJcbiAgaW5jbHVkZURlc2NyaXB0aW9uOiBhbnk7XHJcbiAgdmVuZG9ySWQ6IGFueTtcclxuICBvbmx5QWN0aXZlOiBhbnk7XHJcbiAgY3VycmVudFVzZXI6IGFueTtcclxuICBwcml2YXRlIGRyb3Bkb3duSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xyXG4gIGRyb3Bkb3duSXRlbXMkID0gdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBzZXRGbGFnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7IC8vIEluaXRpYWxpemUgd2l0aCBmYWxzZVxyXG4gIGRyb3Bkb3duZmxhZyQgPSB0aGlzLnNldEZsYWcuYXNPYnNlcnZhYmxlKCk7IC8vIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYm9vbGVhbiB2YWx1ZVxyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICB0aGlzLnBhcmFtc0RhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0UGlja2VyUGFyYW1zJykpO1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJykpO1xyXG4gICB9XHJcblxyXG4gICBnZXRCYXNlQXBpVXJsKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgYmFzZVVybE1hcHBpbmcgPSB7XHJcbiAgICAgICdsb2NhbGhvc3QnOiAnaHR0cDovL2xvY2FsaG9zdDo1ODUwNCcsXHJcbiAgICAgICdsaW5jb2xuLnZhcnRvcGlhLmNvbSc6ICdodHRwczovL2xpbmNvbG4tYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdzdGFnZS52YXJ0b3BpYS5jb20nOiAnaHR0cHM6Ly9zdGFnZS1hcGkudmFydG9waWEuY29tJyxcclxuICAgICAgJ215LnZhcnRvcGlhLmNvbSc6ICdodHRwczovL3JlYWdhbi1hcGkudmFydG9waWEuY29tJyxcclxuICAgICAgJ2phY2tzb24udmFydG9waWEuY29tJzogJ2h0dHBzOi8vamFja3Nvbi1hcGkudmFydG9waWEuY29tJ1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgaG9zdG5hbWVcclxuICAgIGNvbnN0IGhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgcmV0dXJuIGJhc2VVcmxNYXBwaW5nW2hvc3RuYW1lXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgIC8qIEludGlhbGl6YXRpb24gb2YgYXBpIHBhdGggYW5kIHF1ZXJ5cGFyYW1zICovXHJcbiAgIGluaXRpYWxpemVBcGlQYXRoKGdldFVybCwgcXVlcnlQYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAocXVlcnlQYXJhbXM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBjaGFuZ2VUb09iamVjdCA9IHRoaXMuY29udmVydFRvT2JqZWN0KHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNoYW5nZVRvT2JqZWN0KS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHRoaXMuY29udmVydFRvUXVlcnlTdHJpbmcoY2hhbmdlVG9PYmplY3QpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgICAgICB2YXIgYXBpVXJsID0gYCR7YmFzZUFwaVVybH0vYXBpL2AgKyBnZXRVcmw7XHJcbiAgICAgICAgYXBpVXJsICs9ICc/JyArIHF1ZXJ5U3RyaW5nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGFwaVVybCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICAgLyogRnVuY3RvbiBmb3IgY29udmVydCBhcnJheSB0byBvYmplY3QgKi9cclxuICAgIGNvbnZlcnRUb09iamVjdChxdWVyeVBhcmFtcykge1xyXG4gICAgICBpZiAocXVlcnlQYXJhbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdmFyIG9iaiA9IHt9O1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIG9ialtpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgIC8qIEFwcGVuZCBrZXkgYW5kIHZhbHVlIHRvIHF1ZXJ5IHN0cmluZyAqL1xyXG4gIGNvbnZlcnRUb1F1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKVxyXG4gICAgICAubWFwKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zW2tleV0gIT09ICcnICYmIHF1ZXJ5UGFyYW1zW2tleV0gIT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtc1trZXldKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYocXVlcnlQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3NlYXJjaCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtc1trZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5qb2luKCcmJyk7XHJcbiAgICByZXR1cm4gcXVlcnlTdHJpbmc7XHJcbiAgfVxyXG5cclxuICAgIGxpc3RQcm9kdWN0Q2F0ZWdvcnkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdHNDYXRlZ29yeT92ZW5kb3JJZD0ke3ZlbmRvcklkfWApO1xyXG4gICAgfVxyXG5cclxuICAgICAgLy8gRnVuY3Rpb24gdG8gZ2V0IHZhbHVlIGJ5IGtleSBmcm9tIHRoZSBhcnJheVxyXG4gIGdldFZhbHVlQnlLZXkoZGF0YSwga2V5KSB7XHJcbiAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7IC8vIFJldHVybiBudWxsIGlmIGRhdGEgaXMgZW1wdHkgb3IgdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gZGF0YS5maW5kKGt2ID0+IGt2LmtleS50b0xvd2VyQ2FzZSgpID09PSBrZXkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0udmFsdWUgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgICAgIC8qIEZ1bmN0aW9uIGZvciB2ZXJpZnkgbnVtYmVycyBhbmQgbnVtYmVycyB3aXRoIGNvbW1hIHNlcGVyYXRlZCB2YWx1ZXMgKi9cclxuICAgICAgb25seU51bWJlcnMoc3RyKSB7XHJcbiAgICAgICAgaWYgKHN0cikge1xyXG4gICAgICAgICAgICByZXR1cm4gL15bMC05LixdKyQvLnRlc3Qoc3RyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKiBFbmQgKi9cclxuICAgIFxyXG4gICAgc2V0RHJvcGRvd25JdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5uZXh0KGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREcm9wZG93bkl0ZW1zKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgc2V0RHJvcERvd25GbGFnKGZsYWc6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5zZXRGbGFnLm5leHQoZmxhZylcclxuICAgIH1cclxuXHJcbiAgICBnZXREcm9wRG93bkZsYWcoKSB7XHJcbiAgICAgcmV0dXJuIHRoaXMuc2V0RmxhZy5nZXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgY2hlY2tJc0F0dHJpYnV0ZVRydWUobmV3UHJvZHVjdFBpY2tlckZsYWcsIGF0dHJpYnV0ZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIG5ld1Byb2R1Y3RQaWNrZXJGbGFnICYmIE9iamVjdC5rZXlzKG5ld1Byb2R1Y3RQaWNrZXJGbGFnKS5zb21lKGtleSA9PlxyXG4gICAgICAgIGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBhdHRyaWJ1dGVOYW1lLnRvTG93ZXJDYXNlKCkgJiZcclxuICAgICAgICBuZXdQcm9kdWN0UGlja2VyRmxhZ1trZXldLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFVbkQsTUFBTSxPQUFPLGFBQWE7SUFZeEIsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU4zQix5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM5RCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7UUFDL0Usa0JBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsMENBQTBDO1FBQ3ZGLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFN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LElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUMxRSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxhQUFhLENBQUMsV0FBVyxFQUFFO1lBQ3ZELG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FDbkQsQ0FBQztJQUNKLENBQUM7OzBHQXBMVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ3V0aWwnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmludGVyZmFjZSBWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlIHtcclxuICBjb2RlOiBudW1iZXI7XHJcbiAgZGF0YTogYW55O1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBzdGF0dXNDb2RlOiBudW1iZXI7XHJcbn1cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XHJcbiAgcGFyYW1zRGF0YTogYW55O1xyXG4gIGluY2x1ZGVEZXNjcmlwdGlvbjogYW55O1xyXG4gIHZlbmRvcklkOiBhbnk7XHJcbiAgb25seUFjdGl2ZTogYW55O1xyXG4gIGN1cnJlbnRVc2VyOiBhbnk7XHJcbiAgcHJpdmF0ZSBkcm9wZG93bkl0ZW1zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuICBkcm9wZG93bkl0ZW1zJCA9IHRoaXMuZHJvcGRvd25JdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSBzZXRGbGFnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7IC8vIEluaXRpYWxpemUgd2l0aCBmYWxzZVxyXG4gIGRyb3Bkb3duZmxhZyQgPSB0aGlzLnNldEZsYWcuYXNPYnNlcnZhYmxlKCk7IC8vIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYm9vbGVhbiB2YWx1ZVxyXG4gIGhvbHk6IGFueSA9ICcnO1xyXG4gIGdyYWlsOiBhbnkgPSAnJztcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJykpO1xyXG4gICAgdGhpcy5ob2x5ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZSgnOEYvMitUMk5YcVVCUUVSUjEyUjRzdz09Jyk7XHJcbiAgICB0aGlzLmdyYWlsID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZSgneUUwQ2dRYll6SzV3cWVvS1RWemhPUT09Jyk7XHJcbiAgICB0aGlzLnBhcmFtc0RhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0UGlja2VyUGFyYW1zJykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFzZUFwaVVybCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGJhc2VVcmxNYXBwaW5nID0ge1xyXG4gICAgICAnbG9jYWxob3N0JzogJ2h0dHA6Ly9sb2NhbGhvc3Q6NTg1MDQnLFxyXG4gICAgICAnbGluY29sbi52YXJ0b3BpYS5jb20nOiAnaHR0cHM6Ly9saW5jb2xuLWFwaS52YXJ0b3BpYS5jb20nLFxyXG4gICAgICAnc3RhZ2UudmFydG9waWEuY29tJzogJ2h0dHBzOi8vc3RhZ2UtYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdteS52YXJ0b3BpYS5jb20nOiAnaHR0cHM6Ly9yZWFnYW4tYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdqYWNrc29uLnZhcnRvcGlhLmNvbSc6ICdodHRwczovL2phY2tzb24tYXBpLnZhcnRvcGlhLmNvbSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IGhvc3RuYW1lXHJcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcclxuICAgIHJldHVybiBiYXNlVXJsTWFwcGluZ1tob3N0bmFtZV0gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHNjcnVtYmxlKG1zZykge1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChtc2cpKSB7XHJcbiAgICAgIHZhciBjb25jZWFsID0gdGhpcy5nZXRjYW1wYWlnbihtc2csIHRoaXMuaG9seSwgdGhpcy5ncmFpbCk7XHJcbiAgICAgIHZhciBzaGEyNTYgPSBDcnlwdG9KUy5IbWFjU0hBMjU2KENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHRoaXMuZ3JhaWwpICsgY29uY2VhbC50b1N0cmluZygpLCBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeSh0aGlzLmhvbHkpKTtcclxuICAgICAgdmFyIGhhc2hJbkJhc2U2NCA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHNoYTI1Nik7XHJcbiAgICAgIGxldCBrZXlWYWx1ZSA9IHtcclxuICAgICAgICBcInZhbHVlXCI6IGNvbmNlYWwudG9TdHJpbmcoKSxcclxuICAgICAgICBcIm1hY1wiOiBoYXNoSW5CYXNlNjRcclxuICAgICAgfTtcclxuICAgICAgdmFyIHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KGtleVZhbHVlKTtcclxuICAgICAgdmFyIGp1bWJsZWQgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoanVtYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRjYW1wYWlnbihkYXRhOiBhbnksIGhvbHk6IGFueSwgZ3JhaWw6IGFueSkge1xyXG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KGRhdGEudG9TdHJpbmcoKSwgaG9seSxcclxuICAgICAge1xyXG4gICAgICAgIGJsb2NrU2l6ZTogMTI4LFxyXG4gICAgICAgIGl2OiBncmFpbCxcclxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiBJbnRpYWxpemF0aW9uIG9mIGFwaSBwYXRoIGFuZCBxdWVyeXBhcmFtcyAqL1xyXG4gIGluaXRpYWxpemVBcGlQYXRoKGdldFVybCwgcXVlcnlQYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAocXVlcnlQYXJhbXM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBjaGFuZ2VUb09iamVjdCA9IHRoaXMuY29udmVydFRvT2JqZWN0KHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNoYW5nZVRvT2JqZWN0KS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHRoaXMuY29udmVydFRvUXVlcnlTdHJpbmcoY2hhbmdlVG9PYmplY3QpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgICAgICB2YXIgYXBpVXJsID0gYCR7YmFzZUFwaVVybH0vYXBpL2AgKyBnZXRVcmw7XHJcbiAgICAgICAgYXBpVXJsICs9ICc/JyArIHF1ZXJ5U3RyaW5nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGFwaVVybCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIEZ1bmN0b24gZm9yIGNvbnZlcnQgYXJyYXkgdG8gb2JqZWN0ICovXHJcbiAgY29udmVydFRvT2JqZWN0KHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBvYmogPSB7fTtcclxuICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIG9ialtpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRQcm9kdWN0cyhwYWdlTnVtYmVyLCBwYXplU2l6ZSwgc2VhcmNoOiBzdHJpbmcgPSAnJywgb25seUFjdGl2ZTogYm9vbGVhbiA9IHRydWUsIGRlc2NyaXB0aW9uOiBib29sZWFuID0gZmFsc2UsIGxldmVsT25lSWQ6IGFueSwgbGV2ZWxUd29JZDogYW55LCBsZXZlbFRocmVlSWQ6IGFueSwgbGV2ZWxGb3VySWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFZlbmRvclByb2R1Y3RzVjI/dmVuZG9ySWQ9JHt2ZW5kb3JJZH0mcGFnZU51bWJlcj0ke3BhZ2VOdW1iZXJ9JnBhZ2VTaXplPSR7cGF6ZVNpemV9JnNlYXJjaD0ke3NlYXJjaH0mb25seUFjdGl2ZT0ke29ubHlBY3RpdmV9JmluY2x1ZGVEZXNjcmlwdGlvbj0ke2Rlc2NyaXB0aW9ufSZsZXZlbE9uZT0ke2xldmVsT25lSWR9JmxldmVsVHdvPSR7bGV2ZWxUd29JZH0mbGV2ZWxUaHJlZT0ke2xldmVsVGhyZWVJZH0mbGV2ZWxGb3VyPSR7bGV2ZWxGb3VySWR9YCk7XHJcbiAgfVxyXG5cclxuICBsaXN0U3ViQ2F0ZWdvcnkoY2F0ZWdvcnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFByb2R1Y3RzU3ViQ2F0ZWdvcnk/dmVuZG9ySWQ9JHt2ZW5kb3JJZH0mY2F0ZWdvcnlOYW1lPSR7Y2F0ZWdvcnl9YClcclxuICB9XHJcblxyXG4gIC8qIEFwcGVuZCBrZXkgYW5kIHZhbHVlIHRvIHF1ZXJ5IHN0cmluZyAqL1xyXG4gIGNvbnZlcnRUb1F1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKVxyXG4gICAgICAubWFwKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zW2tleV0gIT09ICcnICYmIHF1ZXJ5UGFyYW1zW2tleV0gIT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtc1trZXldKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLmhhc093blByb3BlcnR5KCdzZWFyY2gnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocXVlcnlQYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuam9pbignJicpO1xyXG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgbGlzdFByb2R1Y3RDYXRlZ29yeSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRQcm9kdWN0c0NhdGVnb3J5P3ZlbmRvcklkPSR7dmVuZG9ySWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0TGV2ZWxPbmUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsT25lP3ZlbmRvcklkPSR7dmVuZG9ySWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0TGV2ZWxUd28obGV2ZWxPbmVJZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsVHdvP2xldmVsT25lSWQ9JHtsZXZlbE9uZUlkfSZ2ZW5kb3JJZD0ke3ZlbmRvcklkfWApO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdExldmVsVGhyZWUobGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRQcm9kdWN0TGV2ZWxUaHJlZT9sZXZlbE9uZUlkPSR7bGV2ZWxPbmVJZH0mbGV2ZWxUd29JZD0ke2xldmVsVHdvSWR9JnZlbmRvcklkPSR7dmVuZG9ySWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0TGV2ZWxGb3VyKGxldmVsT25lSWQ6IGFueSwgbGV2ZWxUd29JZDogYW55LCBsZXZlbFRocmVlSWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFByb2R1Y3RMZXZlbEZvdXI/bGV2ZWxPbmVJZD0ke2xldmVsT25lSWR9JmxldmVsVHdvSWQ9JHtsZXZlbFR3b0lkfSZsZXZlbFRocmVlSWQ9JHtsZXZlbFRocmVlSWR9JnZlbmRvcklkPSR7dmVuZG9ySWR9YCk7XHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBnZXQgdmFsdWUgYnkga2V5IGZyb20gdGhlIGFycmF5XHJcbiAgZ2V0VmFsdWVCeUtleShkYXRhLCBrZXkpIHtcclxuICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSBkYXRhLmZpbmQoa3YgPT4ga3Yua2V5LnRvTG93ZXJDYXNlKCkgPT09IGtleS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIHJldHVybiBpdGVtID8gaXRlbS52YWx1ZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKiBGdW5jdGlvbiBmb3IgdmVyaWZ5IG51bWJlcnMgYW5kIG51bWJlcnMgd2l0aCBjb21tYSBzZXBlcmF0ZWQgdmFsdWVzICovXHJcbiAgb25seU51bWJlcnMoc3RyKSB7XHJcbiAgICBpZiAoc3RyKSB7XHJcbiAgICAgIHJldHVybiAvXlswLTkuLF0rJC8udGVzdChzdHIpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiBFbmQgKi9cclxuXHJcbiAgc2V0RHJvcGRvd25JdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgIHRoaXMuZHJvcGRvd25JdGVtc1N1YmplY3QubmV4dChpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBnZXREcm9wZG93bkl0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25JdGVtc1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNldERyb3BEb3duRmxhZyhmbGFnOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldEZsYWcubmV4dChmbGFnKVxyXG4gIH1cclxuXHJcbiAgZ2V0RHJvcERvd25GbGFnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0RmxhZy5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLypGdW50aW9uIHRvIGNoZWNrIGlmIHByb3BlcnR5IGlzIG1hdGNoZWQgd2l0aCBnaXZlbiBhdHRyaWJ1dGVzIGluIGZvcm1CdWlsZGVyIG9yIG5vdCAqL1xyXG4gIGNoZWNrSXNBdHRyaWJ1dGVUcnVlKG5ld1Byb2R1Y3RQaWNrZXJGbGFnLCBhdHRyaWJ1dGVOYW1lKSB7XHJcbiAgICByZXR1cm4gbmV3UHJvZHVjdFBpY2tlckZsYWcgJiYgT2JqZWN0LmtleXMobmV3UHJvZHVjdFBpY2tlckZsYWcpLnNvbWUoa2V5ID0+XHJcbiAgICAgIGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBhdHRyaWJ1dGVOYW1lLnRvTG93ZXJDYXNlKCkgJiZcclxuICAgICAgbmV3UHJvZHVjdFBpY2tlckZsYWdba2V5XS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIlxyXG4gICAgKTtcclxuICB9XHJcbn0iXX0=