vcomply-workflow-engine 3.0.281 → 3.1.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.
Files changed (22) hide show
  1. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +19 -18
  2. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +19 -28
  3. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +9 -17
  4. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +58 -14
  5. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +20 -28
  6. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +19 -16
  7. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +20 -30
  8. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +20 -18
  9. package/esm2020/lib/workflow-risk/workflow-risk.component.mjs +25 -43
  10. package/fesm2015/vcomply-workflow-engine.mjs +257 -247
  11. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  12. package/fesm2020/vcomply-workflow-engine.mjs +236 -240
  13. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  14. package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +4 -0
  15. package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +4 -0
  16. package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +4 -4
  17. package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +8 -2
  18. package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +5 -1
  19. package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +4 -0
  20. package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +5 -1
  21. package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +5 -1
  22. package/package.json +1 -1
@@ -15,22 +15,12 @@ export class FrequencyDialogContainerComponent {
15
15
  this.frequencyService = frequencyService;
16
16
  this.snackbar = snackbar;
17
17
  this.currentTab = 'WEEKLY';
18
- // @Input() frequencyDetails: any;
19
18
  this.frequencyDetails = {
20
19
  pattern: '',
21
20
  window: 0,
22
21
  timeIn12hr: '',
23
22
  };
24
- this.mode = '';
25
- this.selectedFrequency = new EventEmitter();
26
- this.closeFrequency = new EventEmitter();
27
23
  this.isNextDisabled = false;
28
- // constructor() { }
29
- // ngOnInit(): void {
30
- // }
31
- // switchTab(tab:string){
32
- // this.frequencyTab = tab;
33
- // }
34
24
  this.frequencyTab = 'weekly';
35
25
  this.currentTabName = 'a weekly';
36
26
  this.frequencyList = [
@@ -75,12 +65,14 @@ export class FrequencyDialogContainerComponent {
75
65
  type: 'ongoing',
76
66
  },
77
67
  ];
68
+ this.mode = '';
69
+ this.selectedFrequency = new EventEmitter();
70
+ this.closeFrequency = new EventEmitter();
78
71
  }
79
72
  set getFrequencyDetails(frequency) {
80
73
  this.frequencyDetails['pattern'] = frequency?.frequency;
81
74
  this.frequencyDetails['window'] = frequency?.remind_before_days;
82
75
  this.frequencyDetails['failedTime'] = frequency?.frequency_time;
83
- console.log('frequencyDetailsfrequencyDetailsfrequencyDetails', this.frequencyDetails);
84
76
  }
85
77
  ngOnInit() {
86
78
  if (this.frequencyDetails?.pattern != '') {
@@ -95,7 +87,6 @@ export class FrequencyDialogContainerComponent {
95
87
  this.closeFrequency.emit();
96
88
  }
97
89
  onFrequencySelected(event) {
98
- console.log('event.....', event);
99
90
  this.frequencyData = event;
100
91
  this.isNextDisabled = this.isInvalid();
101
92
  }
@@ -275,8 +266,9 @@ export class FrequencyDialogContainerComponent {
275
266
  frequency_time: this.frequencyData?.timeIn12hr,
276
267
  remind_before_days: this.frequencyData?.window,
277
268
  placeholder: this.frequencyData?.placeholder,
269
+ failed_after_days: this.frequencyData?.failed_after_days,
270
+ can_assess_before_days: this.frequencyData?.can_assess_before_days,
278
271
  };
279
- console.log('frequency_detailsfrequency_details', frequency_details);
280
272
  this.selectedFrequency.emit(frequency_details);
281
273
  this.closeFrequency.emit();
282
274
  }
@@ -288,12 +280,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
288
280
  args: [{ selector: 'app-frequency-dialog-container', template: "<div class=\"frequency-dialog\">\r\n <div class=\"frequency-dialog-head vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\">\r\n <div class=\"frequency-dialog-title vx-fs-14 vx-fw-500 vx-label-txt\">Set a Reassessment Frequency</div>\r\n </div>\r\n <div class=\"frequency-dialog-body\">\r\n <div class=\"frequency-dialog-tab vx-mb-3 vx-d-flex\">\r\n <button (click)=\"switchTab('weekly')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'weekly'\">WEEKLY</button>\r\n <button (click)=\"switchTab('monthly')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'monthly'\">MONTHLY</button>\r\n <button (click)=\"switchTab('quarterly')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'quarterly'\">QUARTERLY</button>\r\n <button (click)=\"switchTab('biannual')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'biannual'\">BIANNUAL</button>\r\n <button (click)=\"switchTab('annual')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'annual'\">ANNUAL</button>\r\n <button (click)=\"switchTab('oneTime')\" class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-6\" [class.active]=\"frequencyTab === 'oneTime'\">ONE TIME</button>\r\n </div>\r\n\r\n <div class=\"frequency-dialog-container\">\r\n <!-- <app-frequency-dialog-weekly *ngIf=\"frequencyTab === 'WEEKLY'\"></app-frequency-dialog-weekly> -->\r\n <app-frequency-dialog-weekly *ngIf=\"frequencyTab === 'weekly'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\"\r\n ></app-frequency-dialog-weekly>\r\n <!-- <app-frequency-dialog-monthly *ngIf=\"frequencyTab === 'MONTHLY'\"></app-frequency-dialog-monthly> -->\r\n <app-frequency-dialog-monthly *ngIf=\"frequencyTab === 'monthly'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\">\r\n </app-frequency-dialog-monthly>\r\n <!-- <app-frequency-dialog-quarterly *ngIf=\"frequencyTab === 'QUARTERLY'\"></app-frequency-dialog-quarterly>\r\n <app-frequency-dialog-biannual *ngIf=\"frequencyTab === 'BIANNUAL'\"></app-frequency-dialog-biannual>\r\n <app-frequency-dialog-annual *ngIf=\"frequencyTab === 'ANNUAL'\"></app-frequency-dialog-annual>\r\n <app-frequency-dialog-one-time *ngIf=\"frequencyTab === 'ONETIME'\"></app-frequency-dialog-one-time> -->\r\n <app-frequency-dialog-quarterly \r\n *ngIf=\"frequencyTab === 'quarterly'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\">\r\n </app-frequency-dialog-quarterly>\r\n <app-frequency-dialog-biannual \r\n *ngIf=\"frequencyTab === 'biannual'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\">\r\n </app-frequency-dialog-biannual>\r\n <app-frequency-dialog-annual \r\n *ngIf=\"frequencyTab === 'annual'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\">\r\n </app-frequency-dialog-annual>\r\n <app-frequency-dialog-one-time \r\n *ngIf=\"frequencyTab === 'oneTime'\"\r\n [mode]=\"mode\"\r\n (frequencyDetails)=\"onFrequencySelected($event)\"\r\n [frequencyData]=\"frequencyDetails\">\r\n </app-frequency-dialog-one-time>\r\n </div>\r\n </div>\r\n <div class=\"frequency-dialog-footer vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-3\">\r\n <div class=\"vx-fs-12 vx-paragraph-txt\">You have selected <span class=\"vx-fw-500 vx-label-txt\">{{currentTabName}}</span> frequency.</div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <button class=\"cancel-btn vx-fs-11 vx-fw-500 vx-txt-red vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-d-flex vx-align-center vx-lh-7\" (click)=\"close()\">CANCEL</button>\r\n <button class=\"next-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-3 vx-d-flex vx-align-center vx-lh-7\" [class.disabled]=\"isNextDisabled\" (click)=\"save()\">NEXT <i class=\"icons vx-fs-14 vx-ml-2\">&#xe91e;</i></button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog{border-top:3px solid #1E5DD3;position:fixed;top:0;right:31.25rem;bottom:0;left:0;z-index:11}::ng-deep .frequency-dialog-head{background:#FBFBFB;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-dialog-body{padding:1rem 2rem!important;height:calc(100vh - 7.75rem);overflow:auto}::ng-deep .frequency-dialog-container{padding:1rem}@media screen and (max-width: 1366px){::ng-deep .frequency-dialog-container{padding:0!important}}::ng-deep .frequency-dialog-tab{border-bottom:1px solid #f1f1f1}::ng-deep .frequency-dialog-tab button.tab-btn{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;margin-right:1.75rem!important}::ng-deep .frequency-dialog-tab button.active.tab-btn{color:#1e5dd3;border-color:#1e5dd3}::ng-deep .frequency-dialog-footer{background:#fff;border-radius:.25rem;box-shadow:0 6px 12px #4681ef40;height:3rem;margin:0 2rem}::ng-deep .frequency-dialog-footer button{border-radius:.125rem;border:none}::ng-deep .frequency-dialog-footer button.cancel-btn{background:transparent}::ng-deep .frequency-dialog-footer button.next-btn{background:#1E5DD3}::ng-deep .frequency-dialog-footer button.disabled{background:#f1f1f1!important;color:#747576!important;pointer-events:none}\n"] }]
289
281
  }], ctorParameters: function () { return [{ type: i1.FrequencyService }, { type: i2.SnackBarService }]; }, propDecorators: { mode: [{
290
282
  type: Input
283
+ }], getFrequencyDetails: [{
284
+ type: Input,
285
+ args: ['frequencyDetails']
291
286
  }], selectedFrequency: [{
292
287
  type: Output
293
288
  }], closeFrequency: [{
294
289
  type: Output
295
- }], getFrequencyDetails: [{
296
- type: Input,
297
- args: ['frequencyDetails']
298
290
  }] } });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3ktZGlhbG9nL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lci9mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlDQUFpQztJQXNGNUMsWUFDVSxnQkFBa0MsRUFDbEMsUUFBeUI7UUFEekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQXZGbkMsZUFBVSxHQUFHLFFBQVEsQ0FBQztRQUV0QixrQ0FBa0M7UUFDbEMscUJBQWdCLEdBQVE7WUFDdEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUUsQ0FBQztZQUNULFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNPLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVU5QyxtQkFBYyxH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QWEsRUFBRSxXQUFXO1NBQzdDLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7OEhBblRVLGlDQUFpQztrSEFBakMsaUNBQWlDLDhRQ1Y5QyxvcEtBZ0VNOzJGRHRETyxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsZ0NBQWdDO3FJQWFqQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ3dCLG1CQUFtQjtzQkFBakQsS0FBSzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lEaWFsb2dDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGN1cnJlbnRUYWIgPSAnV0VFS0xZJztcclxuXHJcbiAgLy8gQElucHV0KCkgZnJlcXVlbmN5RGV0YWlsczogYW55O1xyXG4gIGZyZXF1ZW5jeURldGFpbHM6IGFueSA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgdGltZUluMTJocjogJycsXHJcbiAgfTtcclxuICBASW5wdXQoKSBtb2RlOiBhbnkgPSAnJztcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2VGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCdmcmVxdWVuY3lEZXRhaWxzJykgc2V0IGdldEZyZXF1ZW5jeURldGFpbHMoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlsc1sncGF0dGVybiddID0gZnJlcXVlbmN5Py5mcmVxdWVuY3k7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHNbJ3dpbmRvdyddID0gZnJlcXVlbmN5Py5yZW1pbmRfYmVmb3JlX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHNbJ2ZhaWxlZFRpbWUnXSA9IGZyZXF1ZW5jeT8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgJ2ZyZXF1ZW5jeURldGFpbHNmcmVxdWVuY3lEZXRhaWxzZnJlcXVlbmN5RGV0YWlscycsXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlsc1xyXG4gICAgKTtcclxuICB9XHJcbiAgaXNOZXh0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBzd2l0Y2hUYWIodGFiOnN0cmluZyl7XHJcbiAgLy8gICB0aGlzLmZyZXF1ZW5jeVRhYiA9IHRhYjtcclxuICAvLyB9XHJcblxyXG4gIGZyZXF1ZW5jeVRhYiA9ICd3ZWVrbHknO1xyXG4gIGN1cnJlbnRUYWJOYW1lID0gJ2Egd2Vla2x5JztcclxuXHJcbiAgLy8gQElucHV0KCkgZnJlcXVlbmN5RGV0YWlsczogYW55O1xyXG4gIC8vIEBPdXRwdXQoKSBzZWxlY3RlZEZyZXF1ZW5jeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8vIEBPdXRwdXQoKSBjbG9zZUZyZXF1ZW5jeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8vIEBJbnB1dCgpIG1vZGU6IGFueT0nJztcclxuXHJcbiAgZnJlcXVlbmN5RGF0YTogYW55O1xyXG5cclxuICBmcmVxdWVuY3lMaXN0ID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAnRGFpbHknLFxyXG4gICAgICB0eXBlOiAnZGFpbHknLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ1dlZWtseScsXHJcbiAgICAgIHR5cGU6ICd3ZWVrbHknLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ01vbnRobHknLFxyXG4gICAgICB0eXBlOiAnbW9udGhseScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnUXVhcnRlcmx5JyxcclxuICAgICAgdHlwZTogJ3F1YXJ0ZXJseScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnQmlhbm51YWwnLFxyXG4gICAgICB0eXBlOiAnYmlhbm51YWwnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ0FubnVhbCcsXHJcbiAgICAgIHR5cGU6ICdhbm51YWwnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ09uZSBUaW1lJyxcclxuICAgICAgdHlwZTogJ29uZVRpbWUnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ1JhbmRvbScsXHJcbiAgICAgIHR5cGU6ICdyYW5kb20nLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ09uIENvbXBsZXRpb24gT2YnLFxyXG4gICAgICB0eXBlOiAnb25Db21wbGV0aW9uT2YnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ09uZ29pbmcnLFxyXG4gICAgICB0eXBlOiAnb25nb2luZycsXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkRnJlcXVlbmN5RGF0YTogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4gIT0gJycpIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUZyZXF1ZW5jeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRnJlcXVlbmN5RGF0YSA9IE9iamVjdC5hc3NpZ24oeyAuLi50aGlzLmZyZXF1ZW5jeURldGFpbHMgfSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEgPSBPYmplY3QuYXNzaWduKHsgLi4udGhpcy5mcmVxdWVuY3lEZXRhaWxzIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlRnJlcXVlbmN5LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uRnJlcXVlbmN5U2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50Li4uLi4nLCBldmVudCk7XHJcblxyXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhID0gZXZlbnQ7XHJcbiAgICB0aGlzLmlzTmV4dERpc2FibGVkID0gdGhpcy5pc0ludmFsaWQoKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xyXG4gICAgY29uc3QgZnJlcXVlbmN5UGF0dGVybiA9IHBhcnNlSW50KFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4uc3BsaXQoJ34nKVswXVxyXG4gICAgKTtcclxuICAgIHN3aXRjaCAoZnJlcXVlbmN5UGF0dGVybikge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25lVGltZSc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIG9uZSB0aW1lJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgZGFpbHknO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnd2Vla2x5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egd2Vla2x5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ21vbnRobHknO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBtb250aGx5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2FubnVhbCc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBhbm51YWwgJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA1OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgZGFpbHknO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25Db21wbGV0aW9uT2YnO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYW4gb24gY29tcGxldGlvbiBvZic7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLnJlcG9ydF9pZCA9IHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ3F1YXJ0ZXJseSc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIHF1YXJ0ZXJseSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODpcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdyYW5kb20nO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSByYW5kb20nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnYmlhbm51YWwnO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBiaWFubnVhbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25nb2luZyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBvbmdvaW5nJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFRhYihmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lUYWIgPSBmcmVxdWVuY3k7XHJcbiAgICBpZiAoZnJlcXVlbmN5ID09ICdvbmVUaW1lJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egb25lIHRpbWUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9XHJcbiAgICAgICAgZnJlcXVlbmN5LnN0YXJ0c1dpdGgoJ09uJykgfHwgZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCkgPT09ICdhbm51YWwnXHJcbiAgICAgICAgICA/ICdhbiAnICsgZnJlcXVlbmN5XHJcbiAgICAgICAgICA6ICdhICcgKyBmcmVxdWVuY3k7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuPy5zcGxpdCgnficpO1xyXG4gICAgc3dpdGNoICh0aGlzLmZyZXF1ZW5jeVRhYikge1xyXG4gICAgICBjYXNlICdkYWlseSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdJbnB1dCB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdJbnB1dCB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1sxXSA9PSAnJyB8fFxyXG4gICAgICAgICAgIWZyZXF1ZW5jeURldGFpbHNbMV0gfHxcclxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoIDwgNFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbW9udGhseSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdJbnB1dCB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXSA9PSAnJyB8fFxyXG4gICAgICAgICAgIWZyZXF1ZW5jeURldGFpbHNbMl0gfHxcclxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoIDwgNFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYmlhbm51YWwnOlxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdID09PSAnJyB8fFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpPy5sZW5ndGggPCAyXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZVRpbWUnOlxyXG4gICAgICAgIGlmIChmcmVxdWVuY3lEZXRhaWxzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZFRpbWUgPSBtb21lbnQoXHJcbiAgICAgICAgICAgIGAke2ZyZXF1ZW5jeURldGFpbHNbM119LSR7ZnJlcXVlbmN5RGV0YWlsc1syXX0tJHtmcmVxdWVuY3lEZXRhaWxzWzFdfSAke3RoaXMuZnJlcXVlbmN5RGF0YS50aW1lSW4xMmhyfWAsXHJcbiAgICAgICAgICAgICdERC1NTS1ZWVlZIEhIOm1tIGEnXHJcbiAgICAgICAgICApLnVuaXgoKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwID5cclxuICAgICAgICAgICAgc2VsZWN0ZWRUaW1lXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdQbGVhc2Ugc2V0IGEgZnV0dXJlIGRhdGUuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uQ29tcGxldGlvbk9mJzpcclxuICAgICAgICBpZiAodGhpcy5mcmVxdWVuY3lEYXRhLnJlcG9ydElkID4gMCkge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmFuZG9tJzpcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PSAyICYmXHJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlsc1syXSA9PSAnJyB8fFxyXG4gICAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1syXSB8fFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA8IDQpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNJbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGxldCBmcmVxdWVuY3lfZGV0YWlscyA9IHtcclxuICAgICAgZnJlcXVlbmN5OiB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4sXHJcbiAgICAgIHN0YXJ0ZWRfYXQ6IHRoaXMuZnJlcXVlbmN5U2VydmljZT8uY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSlcclxuICAgICAgICA/IG1vbWVudCh0aGlzLmZyZXF1ZW5jeVNlcnZpY2U/LmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpKT8uZm9ybWF0KFxyXG4gICAgICAgICAgICAnWVlZWS1NTS1ERCdcclxuICAgICAgICAgIClcclxuICAgICAgICA6IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogdGhpcy5mcmVxdWVuY3lEYXRhPy50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHRoaXMuZnJlcXVlbmN5RGF0YT8ud2luZG93LFxyXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5mcmVxdWVuY3lEYXRhPy5wbGFjZWhvbGRlcixcclxuICAgIH07XHJcbiAgICBjb25zb2xlLmxvZygnZnJlcXVlbmN5X2RldGFpbHNmcmVxdWVuY3lfZGV0YWlscycsIGZyZXF1ZW5jeV9kZXRhaWxzKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGcmVxdWVuY3kuZW1pdChmcmVxdWVuY3lfZGV0YWlscyk7XHJcbiAgICB0aGlzLmNsb3NlRnJlcXVlbmN5LmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWhlYWQgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy10aXRsZSB2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2V0IGEgUmVhc3Nlc3NtZW50IEZyZXF1ZW5jeTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctdGFiIHZ4LW1iLTMgdngtZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYignd2Vla2x5JylcIiBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1saC02XCIgW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT09ICd3ZWVrbHknXCI+V0VFS0xZPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYignbW9udGhseScpXCIgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNlwiIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09PSAnbW9udGhseSdcIj5NT05USExZPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYigncXVhcnRlcmx5JylcIiBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1saC02XCIgW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT09ICdxdWFydGVybHknXCI+UVVBUlRFUkxZPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYignYmlhbm51YWwnKVwiIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTZcIiBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVRhYiA9PT0gJ2JpYW5udWFsJ1wiPkJJQU5OVUFMPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYignYW5udWFsJylcIiBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1saC02XCIgW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT09ICdhbm51YWwnXCI+QU5OVUFMPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN3aXRjaFRhYignb25lVGltZScpXCIgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNlwiIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09PSAnb25lVGltZSdcIj5PTkUgVElNRTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPCEtLSA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctd2Vla2x5ICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnV0VFS0xZJ1wiPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctd2Vla2x5PiAtLT5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXdlZWtseSAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ3dlZWtseSdcIlxyXG4gICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgICAgICAgICAgID48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXdlZWtseT5cclxuICAgICAgICAgICAgPCEtLSA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseSAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ01PTlRITFknXCI+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5PiAtLT5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdtb250aGx5J1wiXHJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseT5cclxuICAgICAgICAgICAgPCEtLSA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctcXVhcnRlcmx5ICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnUVVBUlRFUkxZJ1wiPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctcXVhcnRlcmx5PlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdCSUFOTlVBTCdcIj48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsPlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnQU5OVUFMJ1wiPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsPlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdPTkVUSU1FJ1wiPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWU+IC0tPlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctcXVhcnRlcmx5IFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdxdWFydGVybHknXCJcclxuICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj5cclxuICAgICAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1xdWFydGVybHk+XHJcbiAgICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbCBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnYmlhbm51YWwnXCJcclxuICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj5cclxuICAgICAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbD5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWFubnVhbCBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnYW5udWFsJ1wiXHJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsPlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUgXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ29uZVRpbWUnXCJcclxuICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj5cclxuICAgICAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctZm9vdGVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0XCI+WW91IGhhdmUgc2VsZWN0ZWQgPHNwYW4gY2xhc3M9XCJ2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+e3tjdXJyZW50VGFiTmFtZX19PC9zcGFuPiBmcmVxdWVuY3kuPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC1yZWQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wbC0yIHZ4LXByLTIgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtN1wiIChjbGljayk9XCJjbG9zZSgpXCI+Q0FOQ0VMPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuZXh0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LW0tMCB2eC1tbC0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtN1wiIFtjbGFzcy5kaXNhYmxlZF09XCJpc05leHREaXNhYmxlZFwiIChjbGljayk9XCJzYXZlKClcIj5ORVhUIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTQgdngtbWwtMlwiPiYjeGU5MWU7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3ktZGlhbG9nL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lci9mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlDQUFpQztJQWlFNUMsWUFDVSxnQkFBa0MsRUFDbEMsUUFBeUI7UUFEekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQWxFbkMsZUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN0QixxQkFBZ0IsR0FBUTtZQUN0QixPQUFPLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxDQUFDO1lBQ1QsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO1FBQ0YsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxVQUFVLENBQUM7UUFFNUIsa0JBQWEsR0FBRztZQUNkO2dCQUNFLElBQUksRUFBRSxPQUFPO2dC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Q0FBQztJQUM3QixDQUFDOzs4SEExUlUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsOFFDVjlDLG9wS0FnRU07MkZEdERPLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxnQ0FBZ0M7cUlBMkRqQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ3lCLG1CQUFtQjtzQkFBakQsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBTWYsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lEaWFsb2dDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGN1cnJlbnRUYWIgPSAnV0VFS0xZJztcclxuICBmcmVxdWVuY3lEZXRhaWxzOiBhbnkgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIHRpbWVJbjEyaHI6ICcnLFxyXG4gIH07XHJcbiAgaXNOZXh0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmcmVxdWVuY3lUYWIgPSAnd2Vla2x5JztcclxuICBjdXJyZW50VGFiTmFtZSA9ICdhIHdlZWtseSc7XHJcbiAgZnJlcXVlbmN5RGF0YTogYW55O1xyXG4gIGZyZXF1ZW5jeUxpc3QgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdEYWlseScsXHJcbiAgICAgIHR5cGU6ICdkYWlseScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnV2Vla2x5JyxcclxuICAgICAgdHlwZTogJ3dlZWtseScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnTW9udGhseScsXHJcbiAgICAgIHR5cGU6ICdtb250aGx5JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdRdWFydGVybHknLFxyXG4gICAgICB0eXBlOiAncXVhcnRlcmx5JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdCaWFubnVhbCcsXHJcbiAgICAgIHR5cGU6ICdiaWFubnVhbCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnQW5udWFsJyxcclxuICAgICAgdHlwZTogJ2FubnVhbCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnT25lIFRpbWUnLFxyXG4gICAgICB0eXBlOiAnb25lVGltZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnUmFuZG9tJyxcclxuICAgICAgdHlwZTogJ3JhbmRvbScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnT24gQ29tcGxldGlvbiBPZicsXHJcbiAgICAgIHR5cGU6ICdvbkNvbXBsZXRpb25PZicsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnT25nb2luZycsXHJcbiAgICAgIHR5cGU6ICdvbmdvaW5nJyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzZWxlY3RlZEZyZXF1ZW5jeURhdGE6IGFueTtcclxuXHJcbiAgQElucHV0KCkgbW9kZTogYW55ID0gJyc7XHJcbiAgQElucHV0KCdmcmVxdWVuY3lEZXRhaWxzJykgc2V0IGdldEZyZXF1ZW5jeURldGFpbHMoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlsc1sncGF0dGVybiddID0gZnJlcXVlbmN5Py5mcmVxdWVuY3k7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHNbJ3dpbmRvdyddID0gZnJlcXVlbmN5Py5yZW1pbmRfYmVmb3JlX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHNbJ2ZhaWxlZFRpbWUnXSA9IGZyZXF1ZW5jeT8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2VGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4gIT0gJycpIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUZyZXF1ZW5jeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRnJlcXVlbmN5RGF0YSA9IE9iamVjdC5hc3NpZ24oeyAuLi50aGlzLmZyZXF1ZW5jeURldGFpbHMgfSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEgPSBPYmplY3QuYXNzaWduKHsgLi4udGhpcy5mcmVxdWVuY3lEZXRhaWxzIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlRnJlcXVlbmN5LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uRnJlcXVlbmN5U2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhID0gZXZlbnQ7XHJcbiAgICB0aGlzLmlzTmV4dERpc2FibGVkID0gdGhpcy5pc0ludmFsaWQoKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xyXG4gICAgY29uc3QgZnJlcXVlbmN5UGF0dGVybiA9IHBhcnNlSW50KFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4uc3BsaXQoJ34nKVswXVxyXG4gICAgKTtcclxuICAgIHN3aXRjaCAoZnJlcXVlbmN5UGF0dGVybikge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25lVGltZSc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIG9uZSB0aW1lJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgZGFpbHknO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnd2Vla2x5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egd2Vla2x5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ21vbnRobHknO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBtb250aGx5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2FubnVhbCc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBhbm51YWwgJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA1OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgZGFpbHknO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25Db21wbGV0aW9uT2YnO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYW4gb24gY29tcGxldGlvbiBvZic7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLnJlcG9ydF9pZCA9IHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3OlxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ3F1YXJ0ZXJseSc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIHF1YXJ0ZXJseSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODpcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdyYW5kb20nO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSByYW5kb20nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnYmlhbm51YWwnO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBiaWFubnVhbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25nb2luZyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBvbmdvaW5nJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFRhYihmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lUYWIgPSBmcmVxdWVuY3k7XHJcbiAgICBpZiAoZnJlcXVlbmN5ID09ICdvbmVUaW1lJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egb25lIHRpbWUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9XHJcbiAgICAgICAgZnJlcXVlbmN5LnN0YXJ0c1dpdGgoJ09uJykgfHwgZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCkgPT09ICdhbm51YWwnXHJcbiAgICAgICAgICA/ICdhbiAnICsgZnJlcXVlbmN5XHJcbiAgICAgICAgICA6ICdhICcgKyBmcmVxdWVuY3k7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuPy5zcGxpdCgnficpO1xyXG4gICAgc3dpdGNoICh0aGlzLmZyZXF1ZW5jeVRhYikge1xyXG4gICAgICBjYXNlICdkYWlseSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdJbnB1dCB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdJbnB1dCB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzFdID09ICcnIHx8XHJcbiAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1sxXSB8fFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlscy5sZW5ndGggPCA0XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRobHknOlxyXG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGEuY29udGludW91c19mYWlsZWRfZGF5cyA8IDIpIHtcclxuICAgICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnSW5wdXQgdmFsdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLicsICdhbGVydCcpO1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXSA9PSAnJyB8fFxyXG4gICAgICAgICAgIWZyZXF1ZW5jeURldGFpbHNbMl0gfHxcclxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoIDwgNFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYmlhbm51YWwnOlxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdID09PSAnJyB8fFxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpPy5sZW5ndGggPCAyXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZVRpbWUnOlxyXG4gICAgICAgIGlmIChmcmVxdWVuY3lEZXRhaWxzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZFRpbWUgPSBtb21lbnQoXHJcbiAgICAgICAgICAgIGAke2ZyZXF1ZW5jeURldGFpbHNbM119LSR7ZnJlcXVlbmN5RGV0YWlsc1syXX0tJHtmcmVxdWVuY3lEZXRhaWxzWzFdfSAke3RoaXMuZnJlcXVlbmN5RGF0YS50aW1lSW4xMmhyfWAsXHJcbiAgICAgICAgICAgICdERC1NTS1ZWVlZIEhIOm1tIGEnXHJcbiAgICAgICAgICApLnVuaXgoKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwID5cclxuICAgICAgICAgICAgc2VsZWN0ZWRUaW1lXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFja2Jhci5zaG93KCdQbGVhc2Ugc2V0IGEgZnV0dXJlIGRhdGUuJywgJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uQ29tcGxldGlvbk9mJzpcclxuICAgICAgICBpZiAodGhpcy5mcmVxdWVuY3lEYXRhLnJlcG9ydElkID4gMCkge1xyXG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmFuZG9tJzpcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PSAyICYmXHJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlsc1syXSA9PSAnJyB8fFxyXG4gICAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1syXSB8fFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA8IDQpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNJbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGxldCBmcmVxdWVuY3lfZGV0YWlscyA9IHtcclxuICAgICAgZnJlcXVlbmN5OiB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4sXHJcbiAgICAgIHN0YXJ0ZWRfYXQ6IHRoaXMuZnJlcXVlbmN5U2VydmljZT8uY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSlcclxuICAgICAgICA/IG1vbWVudCh0aGlzLmZyZXF1ZW5jeVNlcnZpY2U/LmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpKT8uZm9ybWF0KFxyXG4gICAgICAgICAgICAnWVlZWS1NTS1ERCdcclxuICAgICAgICAgIClcclxuICAgICAgICA6IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogdGhpcy5mcmVxdWVuY3lEYXRhPy50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHRoaXMuZnJlcXVlbmN5RGF0YT8ud2luZG93LFxyXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5mcmVxdWVuY3lEYXRhPy5wbGFjZWhvbGRlcixcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IHRoaXMuZnJlcXVlbmN5RGF0YT8uY2FuX2Fzc2Vzc19iZWZvcmVfZGF5cyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNlbGVjdGVkRnJlcXVlbmN5LmVtaXQoZnJlcXVlbmN5X2RldGFpbHMpO1xyXG4gICAgdGhpcy5jbG9zZUZyZXF1ZW5jeS5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1oZWFkIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctdGl0bGUgdngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNldCBhIFJlYXNzZXNzbWVudCBGcmVxdWVuY3k8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLXRhYiB2eC1tYi0zIHZ4LWQtZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ3dlZWtseScpXCIgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNlwiIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09PSAnd2Vla2x5J1wiPldFRUtMWTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ21vbnRobHknKVwiIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTZcIiBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVRhYiA9PT0gJ21vbnRobHknXCI+TU9OVEhMWTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ3F1YXJ0ZXJseScpXCIgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNlwiIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09PSAncXVhcnRlcmx5J1wiPlFVQVJURVJMWTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ2JpYW5udWFsJylcIiBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1saC02XCIgW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT09ICdiaWFubnVhbCdcIj5CSUFOTlVBTDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ2FubnVhbCcpXCIgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNlwiIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09PSAnYW5udWFsJ1wiPkFOTlVBTDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hUYWIoJ29uZVRpbWUnKVwiIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTZcIiBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVRhYiA9PT0gJ29uZVRpbWUnXCI+T05FIFRJTUU8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXdlZWtseSAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ1dFRUtMWSdcIj48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXdlZWtseT4gLS0+XHJcbiAgICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy13ZWVrbHkgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICd3ZWVrbHknXCJcclxuICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy13ZWVrbHk+XHJcbiAgICAgICAgICAgIDwhLS0gPGFwcC1mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdNT05USExZJ1wiPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseT4gLS0+XHJcbiAgICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5ICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnbW9udGhseSdcIlxyXG4gICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHk+XHJcbiAgICAgICAgICAgIDwhLS0gPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXF1YXJ0ZXJseSAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ1FVQVJURVJMWSdcIj48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXF1YXJ0ZXJseT5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnQklBTk5VQUwnXCI+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbD5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWFubnVhbCAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ0FOTlVBTCdcIj48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWFubnVhbD5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAnT05FVElNRSdcIj48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lPiAtLT5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXF1YXJ0ZXJseSBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZnJlcXVlbmN5VGFiID09PSAncXVhcnRlcmx5J1wiXHJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctcXVhcnRlcmx5PlxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwgXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ2JpYW5udWFsJ1wiXHJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWw+XHJcbiAgICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwgXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZyZXF1ZW5jeVRhYiA9PT0gJ2FubnVhbCdcIlxyXG4gICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWFubnVhbD5cclxuICAgICAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lIFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmcmVxdWVuY3lUYWIgPT09ICdvbmVUaW1lJ1wiXHJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWZvb3RlciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPllvdSBoYXZlIHNlbGVjdGVkIDxzcGFuIGNsYXNzPVwidngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPnt7Y3VycmVudFRhYk5hbWV9fTwvc3Bhbj4gZnJlcXVlbmN5LjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWwtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtcmVkIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTdcIiAoY2xpY2spPVwiY2xvc2UoKVwiPkNBTkNFTDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmV4dC1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBsLTIgdngtcHItMiB2eC1tLTAgdngtbWwtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXNOZXh0RGlzYWJsZWRcIiAoY2xpY2spPVwic2F2ZSgpXCI+TkVYVCA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTE0IHZ4LW1sLTJcIj4mI3hlOTFlOzwvaT48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -3,28 +3,24 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/forms";
4
4
  export class FrequencyDialogDueDateComponent {
5
5
  constructor() {
6
- this.mode = '';
7
6
  this.defaultWindow = 1;
8
7
  this.defaultFailed = 0;
9
8
  this.defaultDeactivate = 0;
9
+ this.mode = '';
10
10
  this.completedValue = 5; // take input for completed
11
11
  this.deactivateValue = 15;
12
12
  this.isDeactivated = false;
13
13
  this.id = 0;
14
14
  this.pageName = '';
15
+ this.windowCloses = 2;
15
16
  this.valueChange = new EventEmitter();
17
+ this.windowOpenChange = new EventEmitter();
18
+ this.extensionValueChange = new EventEmitter();
16
19
  }
17
- ;
18
- ;
19
- ngOnInit() {
20
- }
20
+ ngOnInit() { }
21
21
  onValueChange(event, actionType) {
22
- if (!Number.isNaN(Number(event?.target?.value)) && parseInt(event?.target?.value) > 0) {
23
- console.log({
24
- type: actionType,
25
- value: Number(event?.target?.value),
26
- pageName: this.pageName,
27
- }, "dsdsdsdsdsd");
22
+ if (!Number.isNaN(Number(event?.target?.value)) &&
23
+ parseInt(event?.target?.value) > 0) {
28
24
  this.valueChange.emit({
29
25
  type: actionType,
30
26
  value: Number(event?.target?.value),
@@ -42,12 +38,52 @@ export class FrequencyDialogDueDateComponent {
42
38
  }
43
39
  }
44
40
  }
41
+ onWindowOpenChange(event, actionType) {
42
+ if (!Number.isNaN(Number(event?.target?.value)) &&
43
+ parseInt(event?.target?.value) > 0) {
44
+ this.windowOpenChange.emit({
45
+ type: actionType,
46
+ value: Number(event?.target?.value),
47
+ pageName: this.pageName,
48
+ });
49
+ }
50
+ else {
51
+ if (actionType === 'window open') {
52
+ this.completedValue = this.defaultWindow;
53
+ this.windowOpenChange.emit({
54
+ type: actionType,
55
+ value: this.defaultWindow,
56
+ pageName: this.pageName,
57
+ });
58
+ }
59
+ }
60
+ }
61
+ onExtensionValueChange(event, actionType) {
62
+ if (!Number.isNaN(Number(event?.target?.value)) &&
63
+ parseInt(event?.target?.value) > 0) {
64
+ this.extensionValueChange.emit({
65
+ type: actionType,
66
+ value: Number(event?.target?.value),
67
+ pageName: this.pageName,
68
+ });
69
+ }
70
+ else {
71
+ if (actionType === 'extension') {
72
+ this.completedValue = this.defaultWindow;
73
+ this.extensionValueChange.emit({
74
+ type: actionType,
75
+ value: this.defaultWindow,
76
+ pageName: this.pageName,
77
+ });
78
+ }
79
+ }
80
+ }
45
81
  }
46
82
  FrequencyDialogDueDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogDueDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- FrequencyDialogDueDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: { mode: "mode", completedValue: "completedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- <div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send email reminders every</div>\r\n <input type=\"number\" value=\"5\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">days to <span class=\"vx-fw-500\">complete</span> the risk assessment if it is not done.</div>\r\n</div>\r\n<div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send email reminders every</div>\r\n <input type=\"number\" value=\"10\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">days to <span class=\"vx-fw-500\">not complete</span> the risk assessment if it is not done.</div>\r\n</div> -->\r\n\r\n<div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send an email reminder</div>\r\n <input [id]=\"'complete-' + id\" \r\n type=\"number\" \r\n [(ngModel)]=\"completedValue\" \r\n (change)=\"onValueChange($event, 'completed')\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">{{ completedValue < 2 ? 'day' : 'days' }} before the risk assessment due date if it is not done.</div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog-due-date-item{border-top:1px solid #f1f1f1;height:3.5rem}::ng-deep .frequency-dialog-due-date-item:first-of-type,::ng-deep .frequency-dialog-due-date-item:only-child{border-top:none}::ng-deep .frequency-dialog-due-date-item input[type=number]{background:transparent;border-radius:0;border:none;border-bottom:1px solid #dbdbdb;color:#161b2f;font-size:13px;height:1.5rem;width:3rem;text-align:center;outline:none}::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-outer-spin-button,::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-inner-spin-button{-moz-appearance:none;-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
83
+ FrequencyDialogDueDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: { mode: "mode", completedValue: "completedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName", windowCloses: "windowCloses", assessWindowOpen: "assessWindowOpen" }, outputs: { valueChange: "valueChange", windowOpenChange: "windowOpenChange", extensionValueChange: "extensionValueChange" }, ngImport: i0, template: "<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Assessment window opens\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk can be assessed on the assessment due date and\r\n <input\r\n class=\"countNum\"\r\n [id]=\"'complete-' + id\"\r\n type=\"number\"\r\n [(ngModel)]=\"assessWindowOpen\"\r\n (change)=\"onWindowOpenChange($event, 'window open')\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n days before the assessment due date. .\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Extension\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk can be assessed\r\n <input\r\n class=\"countNum\"\r\n type=\"number\"\r\n [id]=\"'not-completed-' + id\"\r\n [(ngModel)]=\"windowCloses\"\r\n (change)=\"onExtensionValueChange($event, 'extension')\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n days after the assessment due date.\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Assessment window closes:\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk cannot be assessed\r\n <span class=\"vx-fw-500 vx-label-txt\">{{windowCloses}}</span>\r\n days after the assessment due date.\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n REASSESSMENT EMAIL NOTIFICATION:\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n VComply will send an email reminder\r\n <input\r\n class=\"countNum\"\r\n [id]=\"'complete-' + id\"\r\n type=\"number\"\r\n [(ngModel)]=\"completedValue\"\r\n (change)=\"onValueChange($event, 'completed')\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n {{ completedValue < 2 ? 'day' : 'days' }} before the risk assessment due date if it is not done.\r\n </div>\r\n</div>\r\n\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}::ng-deep .frequency-dialog-due-date-item{border-top:1px solid #f1f1f1;height:3.5rem}::ng-deep .frequency-dialog-due-date-item:first-of-type,::ng-deep .frequency-dialog-due-date-item:only-child{border-top:none}::ng-deep .frequency-dialog-due-date-item input[type=number]{background:transparent;border-radius:0;border:none;border-bottom:1px solid #dbdbdb;color:#161b2f;font-size:13px;height:1.5rem;width:3rem;text-align:center;outline:none}::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-outer-spin-button,::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-inner-spin-button{-moz-appearance:none;-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
48
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogDueDateComponent, decorators: [{
49
85
  type: Component,
50
- args: [{ selector: 'app-frequency-dialog-due-date', template: "<!-- <div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send email reminders every</div>\r\n <input type=\"number\" value=\"5\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">days to <span class=\"vx-fw-500\">complete</span> the risk assessment if it is not done.</div>\r\n</div>\r\n<div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send email reminders every</div>\r\n <input type=\"number\" value=\"10\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">days to <span class=\"vx-fw-500\">not complete</span> the risk assessment if it is not done.</div>\r\n</div> -->\r\n\r\n<div class=\"frequency-dialog-due-date-item vx-p-3 vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mr-2\">VComply will send an email reminder</div>\r\n <input [id]=\"'complete-' + id\" \r\n type=\"number\" \r\n [(ngModel)]=\"completedValue\" \r\n (change)=\"onValueChange($event, 'completed')\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-ml-2\">{{ completedValue < 2 ? 'day' : 'days' }} before the risk assessment due date if it is not done.</div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog-due-date-item{border-top:1px solid #f1f1f1;height:3.5rem}::ng-deep .frequency-dialog-due-date-item:first-of-type,::ng-deep .frequency-dialog-due-date-item:only-child{border-top:none}::ng-deep .frequency-dialog-due-date-item input[type=number]{background:transparent;border-radius:0;border:none;border-bottom:1px solid #dbdbdb;color:#161b2f;font-size:13px;height:1.5rem;width:3rem;text-align:center;outline:none}::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-outer-spin-button,::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-inner-spin-button{-moz-appearance:none;-webkit-appearance:none;margin:0}\n"] }]
86
+ args: [{ selector: 'app-frequency-dialog-due-date', template: "<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Assessment window opens\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk can be assessed on the assessment due date and\r\n <input\r\n class=\"countNum\"\r\n [id]=\"'complete-' + id\"\r\n type=\"number\"\r\n [(ngModel)]=\"assessWindowOpen\"\r\n (change)=\"onWindowOpenChange($event, 'window open')\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n days before the assessment due date. .\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Extension\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk can be assessed\r\n <input\r\n class=\"countNum\"\r\n type=\"number\"\r\n [id]=\"'not-completed-' + id\"\r\n [(ngModel)]=\"windowCloses\"\r\n (change)=\"onExtensionValueChange($event, 'extension')\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n days after the assessment due date.\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n Assessment window closes:\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n The risk cannot be assessed\r\n <span class=\"vx-fw-500 vx-label-txt\">{{windowCloses}}</span>\r\n days after the assessment due date.\r\n </div>\r\n</div>\r\n\r\n<div class=\"frequency-bottom-item vx-mt-5\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\r\n REASSESSMENT EMAIL NOTIFICATION:\r\n </div>\r\n <div\r\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\r\n >\r\n VComply will send an email reminder\r\n <input\r\n class=\"countNum\"\r\n [id]=\"'complete-' + id\"\r\n type=\"number\"\r\n [(ngModel)]=\"completedValue\"\r\n (change)=\"onValueChange($event, 'completed')\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n {{ completedValue < 2 ? 'day' : 'days' }} before the risk assessment due date if it is not done.\r\n </div>\r\n</div>\r\n\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}::ng-deep .frequency-dialog-due-date-item{border-top:1px solid #f1f1f1;height:3.5rem}::ng-deep .frequency-dialog-due-date-item:first-of-type,::ng-deep .frequency-dialog-due-date-item:only-child{border-top:none}::ng-deep .frequency-dialog-due-date-item input[type=number]{background:transparent;border-radius:0;border:none;border-bottom:1px solid #dbdbdb;color:#161b2f;font-size:13px;height:1.5rem;width:3rem;text-align:center;outline:none}::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-outer-spin-button,::ng-deep .frequency-dialog-due-date-item input[type=number]::-webkit-inner-spin-button{-moz-appearance:none;-webkit-appearance:none;margin:0}\n"] }]
51
87
  }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
52
88
  type: Input
53
89
  }], completedValue: [{
@@ -60,7 +96,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
60
96
  type: Input
61
97
  }], pageName: [{
62
98
  type: Input
99
+ }], windowCloses: [{
100
+ type: Input
101
+ }], assessWindowOpen: [{
102
+ type: Input
63
103
  }], valueChange: [{
64
104
  type: Output
105
+ }], windowOpenChange: [{
106
+ type: Output
107
+ }], extensionValueChange: [{
108
+ type: Output
65
109
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlL2ZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTy9FLE1BQU0sT0FBTywrQkFBK0I7SUFFMUM7UUFDUyxTQUFJLEdBQUMsRUFBRSxDQUFDO1FBRWpCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUVyQixtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtRQUMvQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1AsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUViLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFiOUMsQ0FBQztJQUlTLENBQUM7SUFDRyxDQUFDO0lBVS9CLFFBQVE7SUFDUixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVUsRUFBRSxVQUFlO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JGLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0JBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixFQUFFLGFBQWEsQ0FBQyxDQUFBO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNwQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztnQkFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLElBQUksRUFBRSxVQUFVO29CQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDeEIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7OzRIQTFDVSwrQkFBK0I7Z0hBQS9CLCtCQUErQiw4UUNQNUMsdzVDQW1CTTsyRkRaTywrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsK0JBQStCOzBFQU9oQyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeURpYWxvZ0R1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIEBJbnB1dCgpIG1vZGU9Jyc7XHJcblxyXG4gIGRlZmF1bHRXaW5kb3c6IG51bWJlciA9IDE7XHJcbiAgZGVmYXVsdEZhaWxlZDogbnVtYmVyID0gMDs7XHJcbiAgZGVmYXVsdERlYWN0aXZhdGU6IG51bWJlciA9IDA7O1xyXG5cclxuICBASW5wdXQoKSBjb21wbGV0ZWRWYWx1ZSA9IDU7IC8vIHRha2UgaW5wdXQgZm9yIGNvbXBsZXRlZFxyXG4gIEBJbnB1dCgpIGRlYWN0aXZhdGVWYWx1ZSA9IDE1O1xyXG4gIEBJbnB1dCgpIGlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpZCA9IDA7XHJcbiAgQElucHV0KCkgcGFnZU5hbWUgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBhbnksIGFjdGlvblR5cGU6IGFueSkge1xyXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4oTnVtYmVyKGV2ZW50Py50YXJnZXQ/LnZhbHVlKSkgJiYgcGFyc2VJbnQoZXZlbnQ/LnRhcmdldD8udmFsdWUpID4gMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyh7XHJcbiAgICAgICAgdHlwZTogYWN0aW9uVHlwZSxcclxuICAgICAgICB2YWx1ZTogTnVtYmVyKGV2ZW50Py50YXJnZXQ/LnZhbHVlKSxcclxuICAgICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgfSwgXCJkc2RzZHNkc2RzZFwiKVxyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgIHR5cGU6IGFjdGlvblR5cGUsXHJcbiAgICAgICAgdmFsdWU6IE51bWJlcihldmVudD8udGFyZ2V0Py52YWx1ZSksXHJcbiAgICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFjdGlvblR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZWRWYWx1ZSA9IHRoaXMuZGVmYXVsdFdpbmRvdztcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgdHlwZTogYWN0aW9uVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRXaW5kb3csXHJcbiAgICAgICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS1pdGVtIHZ4LXAtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0yXCI+VkNvbXBseSB3aWxsIHNlbmQgZW1haWwgcmVtaW5kZXJzIGV2ZXJ5PC9kaXY+XHJcbiAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwiNVwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yXCI+ZGF5cyB0byA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmNvbXBsZXRlPC9zcGFuPiB0aGUgcmlzayBhc3Nlc3NtZW50IGlmIGl0IGlzIG5vdCBkb25lLjwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGUtaXRlbSB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMlwiPlZDb21wbHkgd2lsbCBzZW5kIGVtYWlsIHJlbWluZGVycyBldmVyeTwvZGl2PlxyXG4gICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiB2YWx1ZT1cIjEwXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTJcIj5kYXlzIHRvIDxzcGFuIGNsYXNzPVwidngtZnctNTAwXCI+bm90IGNvbXBsZXRlPC9zcGFuPiB0aGUgcmlzayBhc3Nlc3NtZW50IGlmIGl0IGlzIG5vdCBkb25lLjwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS1pdGVtIHZ4LXAtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0yXCI+VkNvbXBseSB3aWxsIHNlbmQgYW4gZW1haWwgcmVtaW5kZXI8L2Rpdj5cclxuICAgIDxpbnB1dCBbaWRdPVwiJ2NvbXBsZXRlLScgKyBpZFwiIFxyXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbXBsZXRlZFZhbHVlXCIgXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudCwgJ2NvbXBsZXRlZCcpXCJcclxuICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMFwiIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMlwiPnt7IGNvbXBsZXRlZFZhbHVlIDwgMiA/ICdkYXknIDogJ2RheXMnIH19IGJlZm9yZSB0aGUgcmlzayBhc3Nlc3NtZW50IGR1ZSBkYXRlIGlmIGl0IGlzIG5vdCBkb25lLjwvZGl2PlxyXG48L2Rpdj4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlL2ZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTy9FLE1BQU0sT0FBTywrQkFBK0I7SUFDMUM7UUFFQSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFFckIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLG1CQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1FBQy9DLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQUUsR0FBRyxDQUFDLENBQUM7UUFDUCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFHeEIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCx5QkFBb0IsR0FB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O1NBQ0Y7SUFDSCxDQUFDOzs0SEF0RlUsK0JBQStCO2dIQUEvQiwrQkFBK0Isc2FDUDVDLG1yRkE0RUE7MkZEckVhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSwrQkFBK0I7MEVBV2hDLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RGlhbG9nRHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBkZWZhdWx0V2luZG93OiBudW1iZXIgPSAxO1xyXG4gIGRlZmF1bHRGYWlsZWQ6IG51bWJlciA9IDA7XHJcbiAgZGVmYXVsdERlYWN0aXZhdGU6IG51bWJlciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIG1vZGUgPSAnJztcclxuICBASW5wdXQoKSBjb21wbGV0ZWRWYWx1ZSA9IDU7IC8vIHRha2UgaW5wdXQgZm9yIGNvbXBsZXRlZFxyXG4gIEBJbnB1dCgpIGRlYWN0aXZhdGVWYWx1ZSA9IDE1O1xyXG4gIEBJbnB1dCgpIGlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpZCA9IDA7XHJcbiAgQElucHV0KCkgcGFnZU5hbWUgPSAnJztcclxuICBASW5wdXQoKSB3aW5kb3dDbG9zZXM6IG51bWJlciA9IDI7XHJcbiAgQElucHV0KCkgYXNzZXNzV2luZG93T3BlbiE6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgd2luZG93T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4dGVuc2lvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBhbnksIGFjdGlvblR5cGU6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhTnVtYmVyLmlzTmFOKE51bWJlcihldmVudD8udGFyZ2V0Py52YWx1ZSkpICYmXHJcbiAgICAgIHBhcnNlSW50KGV2ZW50Py50YXJnZXQ/LnZhbHVlKSA+IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgIHR5cGU6IGFjdGlvblR5cGUsXHJcbiAgICAgICAgdmFsdWU6IE51bWJlcihldmVudD8udGFyZ2V0Py52YWx1ZSksXHJcbiAgICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFjdGlvblR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZWRWYWx1ZSA9IHRoaXMuZGVmYXVsdFdpbmRvdztcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgdHlwZTogYWN0aW9uVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRXaW5kb3csXHJcbiAgICAgICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25XaW5kb3dPcGVuQ2hhbmdlKGV2ZW50OiBhbnksIGFjdGlvblR5cGU6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhTnVtYmVyLmlzTmFOKE51bWJlcihldmVudD8udGFyZ2V0Py52YWx1ZSkpICYmXHJcbiAgICAgIHBhcnNlSW50KGV2ZW50Py50YXJnZXQ/LnZhbHVlKSA+IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLndpbmRvd09wZW5DaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgdHlwZTogYWN0aW9uVHlwZSxcclxuICAgICAgICB2YWx1ZTogTnVtYmVyKGV2ZW50Py50YXJnZXQ/LnZhbHVlKSxcclxuICAgICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWN0aW9uVHlwZSA9PT0gJ3dpbmRvdyBvcGVuJykge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVkVmFsdWUgPSB0aGlzLmRlZmF1bHRXaW5kb3c7XHJcbiAgICAgICAgdGhpcy53aW5kb3dPcGVuQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgdHlwZTogYWN0aW9uVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRXaW5kb3csXHJcbiAgICAgICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FeHRlbnNpb25WYWx1ZUNoYW5nZShldmVudDogYW55LCBhY3Rpb25UeXBlOiBhbnkpIHtcclxuICAgIGlmIChcclxuICAgICAgIU51bWJlci5pc05hTihOdW1iZXIoZXZlbnQ/LnRhcmdldD8udmFsdWUpKSAmJlxyXG4gICAgICBwYXJzZUludChldmVudD8udGFyZ2V0Py52YWx1ZSkgPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5leHRlbnNpb25WYWx1ZUNoYW5nZS5lbWl0KHtcclxuICAgICAgICB0eXBlOiBhY3Rpb25UeXBlLFxyXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoZXZlbnQ/LnRhcmdldD8udmFsdWUpLFxyXG4gICAgICAgIHBhZ2VOYW1lOiB0aGlzLnBhZ2VOYW1lLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhY3Rpb25UeXBlID09PSAnZXh0ZW5zaW9uJykge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVkVmFsdWUgPSB0aGlzLmRlZmF1bHRXaW5kb3c7XHJcbiAgICAgICAgdGhpcy5leHRlbnNpb25WYWx1ZUNoYW5nZS5lbWl0KHtcclxuICAgICAgICAgIHR5cGU6IGFjdGlvblR5cGUsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5kZWZhdWx0V2luZG93LFxyXG4gICAgICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbSB2eC1tdC01XCI+XHJcbiAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cclxuICAgIEFzc2Vzc21lbnQgd2luZG93IG9wZW5zXHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0tYm94IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtcC0zIHZ4LXB0LTQgdngtcGItNCB2eC1kLWJsb2NrXCJcclxuICA+XHJcbiAgICBUaGUgcmlzayBjYW4gYmUgYXNzZXNzZWQgb24gdGhlIGFzc2Vzc21lbnQgZHVlIGRhdGUgYW5kXHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJjb3VudE51bVwiXHJcbiAgICAgIFtpZF09XCInY29tcGxldGUtJyArIGlkXCJcclxuICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiYXNzZXNzV2luZG93T3BlblwiXHJcbiAgICAgIChjaGFuZ2UpPVwib25XaW5kb3dPcGVuQ2hhbmdlKCRldmVudCwgJ3dpbmRvdyBvcGVuJylcIlxyXG4gICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCJcclxuICAgICAgbWluPVwiMFwiXHJcbiAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxyXG4gICAgLz5cclxuICAgIGRheXMgYmVmb3JlIHRoZSBhc3Nlc3NtZW50IGR1ZSBkYXRlLiAuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbSB2eC1tdC01XCI+XHJcbiAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cclxuICAgIEV4dGVuc2lvblxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtLWJveCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXAtMyB2eC1wdC00IHZ4LXBiLTQgdngtZC1ibG9ja1wiXHJcbiAgPlxyXG4gIFRoZSByaXNrIGNhbiBiZSBhc3Nlc3NlZFxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiY291bnROdW1cIlxyXG4gICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgW2lkXT1cIidub3QtY29tcGxldGVkLScgKyBpZFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwid2luZG93Q2xvc2VzXCJcclxuICAgICAgKGNoYW5nZSk9XCJvbkV4dGVuc2lvblZhbHVlQ2hhbmdlKCRldmVudCwgJ2V4dGVuc2lvbicpXCJcclxuICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiXHJcbiAgICAgIG1pbj1cIjBcIlxyXG4gICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcclxuICAgIC8+XHJcbiAgICBkYXlzIGFmdGVyIHRoZSBhc3Nlc3NtZW50IGR1ZSBkYXRlLlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0gdngtbXQtNVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XHJcbiAgICBBc3Nlc3NtZW50IHdpbmRvdyBjbG9zZXM6XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0tYm94IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtcC0zIHZ4LXB0LTQgdngtcGItNCB2eC1kLWJsb2NrXCJcclxuICA+XHJcbiAgICBUaGUgcmlzayBjYW5ub3QgYmUgYXNzZXNzZWRcclxuICAgIDxzcGFuIGNsYXNzPVwidngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPnt7d2luZG93Q2xvc2VzfX08L3NwYW4+XHJcbiAgICBkYXlzIGFmdGVyIHRoZSBhc3Nlc3NtZW50IGR1ZSBkYXRlLlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0gdngtbXQtNVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XHJcbiAgICBSRUFTU0VTU01FTlQgRU1BSUwgTk9USUZJQ0FUSU9OOlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtLWJveCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXAtMyB2eC1wdC00IHZ4LXBiLTQgdngtZC1ibG9ja1wiXHJcbiAgPlxyXG4gICAgVkNvbXBseSB3aWxsIHNlbmQgYW4gZW1haWwgcmVtaW5kZXJcclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImNvdW50TnVtXCJcclxuICAgICAgW2lkXT1cIidjb21wbGV0ZS0nICsgaWRcIlxyXG4gICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJjb21wbGV0ZWRWYWx1ZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQsICdjb21wbGV0ZWQnKVwiXHJcbiAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIiBtaW49XCIwXCIgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiIC8+XHJcbiAgICAgIHt7IGNvbXBsZXRlZFZhbHVlIDwgMiA/ICdkYXknIDogJ2RheXMnIH19IGJlZm9yZSB0aGUgcmlzayBhc3Nlc3NtZW50IGR1ZSBkYXRlIGlmIGl0IGlzIG5vdCBkb25lLlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==