@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.8 → 1.0.0
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.
- package/README.md +51 -13
- package/USAGE_GUIDE.md +716 -0
- package/assets/images/fad-signature-fea/signature-summary/rejected.svg +19 -19
- package/assets/images/fad-signature-fea/signature-summary/send.svg +10 -10
- package/esm2022/lib/components/document-approval-list/document-approval-list.component.mjs +13 -13
- package/esm2022/lib/components/generic-error-fea/generic-error-fea.component.mjs +8 -4
- package/esm2022/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.mjs +8 -5
- package/esm2022/lib/components/signature-summary/signature-summary.component.mjs +8 -4
- package/esm2022/lib/components/upload-e-signature/upload-e-signature.component.mjs +17 -13
- package/esm2022/lib/components/validate-rfc/validate-rfc.component.mjs +14 -19
- package/esm2022/lib/components/validate-signature/validate-signature.component.mjs +11 -14
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-code.mjs +2 -1
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-description.mjs +3 -1
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-code.mjs +2 -1
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-description.mjs +4 -2
- package/esm2022/public-api.mjs +1 -2
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs +147 -194
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs.map +1 -1
- package/lib/components/document-approval-list/document-approval-list.component.d.ts +2 -5
- package/lib/components/generic-error-fea/generic-error-fea.component.d.ts +1 -1
- package/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.d.ts +1 -1
- package/lib/components/signature-summary/signature-summary.component.d.ts +1 -1
- package/lib/components/upload-e-signature/upload-e-signature.component.d.ts +1 -1
- package/lib/components/validate-rfc/validate-rfc.component.d.ts +2 -3
- package/lib/components/validate-signature/validate-signature.component.d.ts +2 -3
- package/lib/constants/errors/validate-rfc/validate-rfc-error-code.d.ts +2 -1
- package/lib/constants/errors/validate-rfc/validate-rfc-error-description.d.ts +1 -1
- package/lib/constants/errors/validate-signature/validate-signature-error-code.d.ts +2 -1
- package/lib/constants/errors/validate-signature/validate-signature-error-description.d.ts +1 -1
- package/package.json +7 -8
- package/public-api.d.ts +0 -1
- package/esm2022/lib/ng-fad-signature-fea.module.mjs +0 -71
- package/lib/ng-fad-signature-fea.module.d.ts +0 -18
|
@@ -2,9 +2,10 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
|
2
2
|
import { SIGNATURE_SUMMARY_DEFAULT } from '../../constants/configuration/signature-summary/signature-summary-configuration.const';
|
|
3
3
|
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
4
4
|
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
5
|
+
import { NgFadImageInlineComponent } from '@fad-producto/ng-fad-image-inline';
|
|
6
|
+
import { CommonModule } from '@angular/common';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@fad-producto/ng-fad-image-inline";
|
|
8
9
|
export class SignatureSummaryComponent {
|
|
9
10
|
constructor(hostContext) {
|
|
10
11
|
this.hostContext = hostContext;
|
|
@@ -80,11 +81,14 @@ export class SignatureSummaryComponent {
|
|
|
80
81
|
this.configuration = Utils.mergeConfiguration(new Configuration(), SIGNATURE_SUMMARY_DEFAULT, this.configuration);
|
|
81
82
|
}
|
|
82
83
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignatureSummaryComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SignatureSummaryComponent, selector: "ng-fad-signature-fea-signature-summary", inputs: { documentRequest: "documentRequest", configuration: "configuration" }, outputs: { oncomplete: "oncomplete" }, ngImport: i0, template: "<div class=\"fad-portal-content\">\n \n <ng-container *ngIf=\"!isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.send\"\n >\n </ng-fad-image-inline>\n <div class=\"fad-portal-title-bold\">\n {{pdfsName}}\n </div>\n <div class=\"fad-portal-content-bold date\">{{ currentDate }}</div>\n <div class=\"summary\">\n <div class=\"fad-portal-content-bold signeds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.signed}}</div>\n <div>{{signedCount}}</div>\n </div>\n <div class=\"line\">\n\n </div>\n <div class=\"fad-portal-content-bold rejecteds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.rejected}}</div>\n <div>{{rejectedCount}}</div>\n </div>\n </div>\n <div class=\"legends\">\n {{configuration.customization?.moduleCustomization?.legends?.legend}}\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.reject\"\n >\n </ng-fad-image-inline>\n <div class=\"document-rejected\"> {{configuration.customization?.moduleCustomization?.legends?.documentRejected}} </div>\n <div class=\"fad-portal-title-bold title-document\">\n {{pdfsName}}\n </div>\n <div class=\"id-requisition\">\n ID {{id}} | {{ currentDate }}\n </div>\n </ng-container>\n \n</div>", styles: [".fad-portal-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm)}.fad-portal-content .fad-portal-title{margin-top:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .date{color:#aaa}.fad-portal-content .summary{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-xs)}.fad-portal-content .summary .signeds,.fad-portal-content .summary .rejecteds{width:100%;display:flex;justify-content:space-between}.fad-portal-content .summary .line{width:100%;border:1px solid var(--fad-portal-common-border-color)}.fad-portal-content .legends{text-align:center}.fad-portal-content .document-rejected{color:#aaa;margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .id-requisition{color:#aaa;margin-top:var(--fad-portal-common-separation-sm)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SignatureSummaryComponent, isStandalone: true, selector: "ng-fad-signature-fea-signature-summary", inputs: { documentRequest: "documentRequest", configuration: "configuration" }, outputs: { oncomplete: "oncomplete" }, ngImport: i0, template: "<div class=\"fad-portal-content\">\r\n \r\n <ng-container *ngIf=\"!isAllDocumentsRejected\" >\r\n <ng-fad-image-inline\r\n [src]=\"images.send\"\r\n >\r\n </ng-fad-image-inline>\r\n <div class=\"fad-portal-title-bold\">\r\n {{pdfsName}}\r\n </div>\r\n <div class=\"fad-portal-content-bold date\">{{ currentDate }}</div>\r\n <div class=\"summary\">\r\n <div class=\"fad-portal-content-bold signeds\">\r\n <div>{{configuration.customization?.moduleCustomization?.legends?.signed}}</div>\r\n <div>{{signedCount}}</div>\r\n </div>\r\n <div class=\"line\">\r\n\r\n </div>\r\n <div class=\"fad-portal-content-bold rejecteds\">\r\n <div>{{configuration.customization?.moduleCustomization?.legends?.rejected}}</div>\r\n <div>{{rejectedCount}}</div>\r\n </div>\r\n </div>\r\n <div class=\"legends\">\r\n {{configuration.customization?.moduleCustomization?.legends?.legend}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isAllDocumentsRejected\" >\r\n <ng-fad-image-inline\r\n [src]=\"images.reject\"\r\n >\r\n </ng-fad-image-inline>\r\n <div class=\"document-rejected\"> {{configuration.customization?.moduleCustomization?.legends?.documentRejected}} </div>\r\n <div class=\"fad-portal-title-bold title-document\">\r\n {{pdfsName}}\r\n </div>\r\n <div class=\"id-requisition\">\r\n ID {{id}} | {{ currentDate }}\r\n </div>\r\n </ng-container>\r\n \r\n</div>", styles: [".fad-portal-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm)}.fad-portal-content .fad-portal-title{margin-top:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .date{color:#aaa}.fad-portal-content .summary{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-xs)}.fad-portal-content .summary .signeds,.fad-portal-content .summary .rejecteds{width:100%;display:flex;justify-content:space-between}.fad-portal-content .summary .line{width:100%;border:1px solid var(--fad-portal-common-border-color)}.fad-portal-content .legends{text-align:center}.fad-portal-content .document-rejected{color:#aaa;margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .id-requisition{color:#aaa;margin-top:var(--fad-portal-common-separation-sm)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"], outputs: ["load", "onerror"] }] }); }
|
|
84
85
|
}
|
|
85
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignatureSummaryComponent, decorators: [{
|
|
86
87
|
type: Component,
|
|
87
|
-
args: [{ selector: 'ng-fad-signature-fea-signature-summary',
|
|
88
|
+
args: [{ selector: 'ng-fad-signature-fea-signature-summary', standalone: true, imports: [
|
|
89
|
+
CommonModule,
|
|
90
|
+
NgFadImageInlineComponent
|
|
91
|
+
], template: "<div class=\"fad-portal-content\">\r\n \r\n <ng-container *ngIf=\"!isAllDocumentsRejected\" >\r\n <ng-fad-image-inline\r\n [src]=\"images.send\"\r\n >\r\n </ng-fad-image-inline>\r\n <div class=\"fad-portal-title-bold\">\r\n {{pdfsName}}\r\n </div>\r\n <div class=\"fad-portal-content-bold date\">{{ currentDate }}</div>\r\n <div class=\"summary\">\r\n <div class=\"fad-portal-content-bold signeds\">\r\n <div>{{configuration.customization?.moduleCustomization?.legends?.signed}}</div>\r\n <div>{{signedCount}}</div>\r\n </div>\r\n <div class=\"line\">\r\n\r\n </div>\r\n <div class=\"fad-portal-content-bold rejecteds\">\r\n <div>{{configuration.customization?.moduleCustomization?.legends?.rejected}}</div>\r\n <div>{{rejectedCount}}</div>\r\n </div>\r\n </div>\r\n <div class=\"legends\">\r\n {{configuration.customization?.moduleCustomization?.legends?.legend}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isAllDocumentsRejected\" >\r\n <ng-fad-image-inline\r\n [src]=\"images.reject\"\r\n >\r\n </ng-fad-image-inline>\r\n <div class=\"document-rejected\"> {{configuration.customization?.moduleCustomization?.legends?.documentRejected}} </div>\r\n <div class=\"fad-portal-title-bold title-document\">\r\n {{pdfsName}}\r\n </div>\r\n <div class=\"id-requisition\">\r\n ID {{id}} | {{ currentDate }}\r\n </div>\r\n </ng-container>\r\n \r\n</div>", styles: [".fad-portal-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm)}.fad-portal-content .fad-portal-title{margin-top:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .date{color:#aaa}.fad-portal-content .summary{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;row-gap:var(--fad-portal-common-separation-sm);margin-bottom:var(--fad-portal-common-separation-xs)}.fad-portal-content .summary .signeds,.fad-portal-content .summary .rejecteds{width:100%;display:flex;justify-content:space-between}.fad-portal-content .summary .line{width:100%;border:1px solid var(--fad-portal-common-border-color)}.fad-portal-content .legends{text-align:center}.fad-portal-content .document-rejected{color:#aaa;margin-bottom:var(--fad-portal-common-separation-sm)}.fad-portal-content .id-requisition{color:#aaa;margin-top:var(--fad-portal-common-separation-sm)}\n"] }]
|
|
88
92
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { documentRequest: [{
|
|
89
93
|
type: Input
|
|
90
94
|
}], configuration: [{
|
|
@@ -92,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
92
96
|
}], oncomplete: [{
|
|
93
97
|
type: Output
|
|
94
98
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbmF0dXJlLXN1bW1hcnkvc2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbmF0dXJlLXN1bW1hcnkvc2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQztBQUNsSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0FBT3BFLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQXFCLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBWmxDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9DLFdBQU0sR0FBRztZQUNMLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFBO1FBQ0QsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFD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Q0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUMsRUFBRSxDQUFFLENBQUM7Z0JBQ2xELFdBQVcsR0FBRyxHQUFHLENBQUMsYUFBYyxDQUFBO2dCQUNoQyxXQUFXLEdBQUcsR0FBRyxDQUFDLGFBQWMsQ0FBQTthQUNoQztZQUNELFdBQVcsR0FBRyxHQUFHLENBQUMsYUFBYyxDQUFDO1lBQ2pDLElBQUcsV0FBVyxLQUFLLFdBQVcsRUFBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsSUFBRyxHQUFHLEdBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBQyxFQUFFLENBQUUsQ0FBQztnQkFDdEQsV0FBVyxHQUFHLEdBQUcsQ0FBQyxhQUFjLENBQUE7Z0JBQ2hDLFdBQVcsR0FBRyxHQUFHLENBQUMsYUFBYyxDQUFBO2FBQ2hDO1FBRUosQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QscUJBQXFCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUMzQyxJQUFJLGFBQWEsRUFBRSxFQUNuQix5QkFBeUIsRUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNSLENBQUM7K0dBM0ZVLHlCQUF5QjttR0FBekIseUJBQXlCLHFNQ1h0QyxpcURBMENNOzs0RkQvQk8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdDQUF3QztpR0FNekMsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSVNpZ25hdHVyZVN1bW1hcnlDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNJR05BVFVSRV9TVU1NQVJZX0RFRkFVTFQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlndXJhdGlvbi9zaWduYXR1cmUtc3VtbWFyeS9zaWduYXR1cmUtc3VtbWFyeS1jb25maWd1cmF0aW9uLmNvbnN0JztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLXNpZ25hdHVyZS1zdW1tYXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25hdHVyZS1zdW1tYXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWduYXR1cmVTdW1tYXJ5Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBkb2N1bWVudFJlcXVlc3QhOiBEb2N1bWVudEFwcHJvdmFsRmVhW107XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJU2lnbmF0dXJlU3VtbWFyeUNvbmZpZ3VyYXRpb247XG4gIEBPdXRwdXQoKSBvbmNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaW1hZ2VzID0ge1xuICAgICAgcmVqZWN0OiAnJyxcbiAgICAgIHNlbmQ6ICcnXG4gIH1cbiAgc2lnbmVkQ291bnQgPSAwO1xuICByZWplY3RlZENvdW50ID0gMDtcbiAgaXNBbGxEb2N1bWVudHNSZWplY3RlZCA9IHRydWU7XG4gIGN1cnJlbnREYXRlOiBzdHJpbmcgPSAnJztcbiAgaWQgPSAnJztcbiAgcGRmc05hbWUgPSAnJztcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaG9zdENvbnRleHQ6IEVsZW1lbnRSZWYgKSB7fVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFJlcXVlc3QpXG4gICAgdGhpcy5zZXRDdXN0b21pemF0aW9uU3R5bGUodGhpcy5ob3N0Q29udGV4dC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeSkge1xuICAgICAgdGhpcy5pbWFnZXMucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8ucmVqZWN0ID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9yZWplY3RlZC5zdmdgO1xuICAgICAgdGhpcy5pbWFnZXMuc2VuZCA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LnNlbmQgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L3NlbmQuc3ZnYDtcbiAgICAgIFxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZURvY3VtZW50Q291bnRzKCk7XG4gICAgdGhpcy5nZXRQZGZOYW1lcygpO1xuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgfVxuXG4gIHNldEN1cnJlbnREYXRlKCkge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG5cbiAgICBsZXQgaG91cnMgPSBub3cuZ2V0SG91cnMoKTtcbiAgICBjb25zdCBtaW51dGVzID0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICBjb25zdCBhbVBtID0gaG91cnMgPj0gMTIgPyAnUE0nIDogJ0FNJztcbiAgXG4gICAgaG91cnMgPSBob3VycyAlIDEyIHx8IDEyOyBcbiAgXG4gICAgY29uc3QgZm9ybWF0dGVkTWludXRlcyA9IG1pbnV0ZXMgPCAxMCA/ICcwJyArIG1pbnV0ZXMgOiBtaW51dGVzO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBgJHtub3cudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuY29uZmlndXJhdGlvbi5kYXRlRm9ybWF0KX0gfCAke2hvdXJzfToke2Zvcm1hdHRlZE1pbnV0ZXN9ICR7YW1QbX1gO1xuICB9XG4gIFxuXG4gIHVwZGF0ZURvY3VtZW50Q291bnRzKCkge1xuICAgIC8vIENvbnRhciBkb2N1bWVudG9zIGZpcm1hZG9zIChhcHByb3ZlZDogdHJ1ZSlcbiAgICB0aGlzLmRvY3VtZW50UmVxdWVzdC5mb3JFYWNoKChkb2MpID0+e1xuICAgICAgdGhpcy5pZD0gZG9jLmlkITtcbiAgICAgIGlmKGRvYy5hcHByb3ZlZCl7XG4gICAgICAgICAgdGhpcy5zaWduZWRDb3VudCArPSAxO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMucmVqZWN0ZWRDb3VudCArPSAxO1xuICAgICAgfVxuICAgIH0pXG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFJlcXVlc3QsIHRoaXMuc2lnbmVkQ291bnQsdGhpcy5yZWplY3RlZENvdW50KVxuICAgaWYodGhpcy5zaWduZWRDb3VudCA+IDApe1xuICAgIHRoaXMuaXNBbGxEb2N1bWVudHNSZWplY3RlZCA9IGZhbHNlXG4gICB9ZWxzZXtcbiAgICB0aGlzLmlzQWxsRG9jdW1lbnRzUmVqZWN0ZWQgPSB0cnVlXG4gICB9XG4gICAgXG4gIH1cblxuICBnZXRQZGZOYW1lcygpe1xuICAgIGxldCBjdXJyZW50RmxhZyA9ICcnO1xuICAgIGxldCBwcmV2aWV3RmxhZyA9ICcnO1xuICAgIHRoaXMuZG9jdW1lbnRSZXF1ZXN0LmZvckVhY2goKGRvYykgPT57XG4gICAgICAgaWYodGhpcy5wZGZzTmFtZSA9PT0gJycpe1xuICAgICAgICB0aGlzLnBkZnNOYW1lID0gZG9jLmRvYz8ubmFtZS5yZXBsYWNlKCcucGRmJywnJykhO1xuICAgICAgICBjdXJyZW50RmxhZyA9IGRvYy5pZFJlcXVpc2l0aW9uIVxuICAgICAgICBwcmV2aWV3RmxhZyA9IGRvYy5pZFJlcXVpc2l0aW9uIVxuICAgICAgIH1cbiAgICAgICBjdXJyZW50RmxhZyA9IGRvYy5pZFJlcXVpc2l0aW9uITtcbiAgICAgICBpZihjdXJyZW50RmxhZyAhPT0gcHJldmlld0ZsYWcpe1xuICAgICAgICB0aGlzLnBkZnNOYW1lKz0gJywnK2RvYy5kb2M/Lm5hbWUucmVwbGFjZSgnLnBkZicsJycpITtcbiAgICAgICAgY3VycmVudEZsYWcgPSBkb2MuaWRSZXF1aXNpdGlvbiFcbiAgICAgICAgcHJldmlld0ZsYWcgPSBkb2MuaWRSZXF1aXNpdGlvbiFcbiAgICAgICB9XG4gICAgICBcbiAgICB9KTtcbiAgfVxuICBcblxuICBzZXRDdXN0b21pemF0aW9uU3R5bGUodGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBVdGlscy5tZXJnZUNvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgbmV3IENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgICBTSUdOQVRVUkVfU1VNTUFSWV9ERUZBVUxULFxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblxuICAgICAgICApO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj5cbiAgICBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWxsRG9jdW1lbnRzUmVqZWN0ZWRcIiA+XG4gICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZVxuICAgICAgICAgICAgW3NyY109XCJpbWFnZXMuc2VuZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC10aXRsZS1ib2xkXCI+XG4gICAgICAgICAgICAgICAge3twZGZzTmFtZX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCBkYXRlXCI+e3sgY3VycmVudERhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHNpZ25lZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbmVkfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e3NpZ25lZENvdW50fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHJlamVjdGVkc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5yZWplY3RlZH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tyZWplY3RlZENvdW50fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZHNcIj5cbiAgICAgICAgICAgICAgICB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ubGVnZW5kfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FsbERvY3VtZW50c1JlamVjdGVkXCIgPlxuICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZVxuICAgICAgICBbc3JjXT1cImltYWdlcy5yZWplY3RcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXJlamVjdGVkXCI+IHt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudFJlamVjdGVkfX0gPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGQgdGl0bGUtZG9jdW1lbnRcIj5cbiAgICAgICAgICAgIHt7cGRmc05hbWV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlkLXJlcXVpc2l0aW9uXCI+XG4gICAgICAgICAgICBJRCB7e2lkfX0gfCB7eyBjdXJyZW50RGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbjwvZGl2PiJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbmF0dXJlLXN1bW1hcnkvc2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbmF0dXJlLXN1bW1hcnkvc2lnbmF0dXJlLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQztBQUNsSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBWS9DLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQXFCLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBWmxDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9DLFdBQU0sR0FBRztZQUNMLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFBO1FBQ0QsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSVNpZ25hdHVyZVN1bW1hcnlDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgU0lHTkFUVVJFX1NVTU1BUllfREVGQVVMVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWd1cmF0aW9uL3NpZ25hdHVyZS1zdW1tYXJ5L3NpZ25hdHVyZS1zdW1tYXJ5LWNvbmZpZ3VyYXRpb24uY29uc3QnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi9tb2RlbHMvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IE5nRmFkSW1hZ2VJbmxpbmVDb21wb25lbnQgfSBmcm9tICdAZmFkLXByb2R1Y3RvL25nLWZhZC1pbWFnZS1pbmxpbmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1mYWQtc2lnbmF0dXJlLWZlYS1zaWduYXR1cmUtc3VtbWFyeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25hdHVyZS1zdW1tYXJ5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWduYXR1cmUtc3VtbWFyeS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgTmdGYWRJbWFnZUlubGluZUNvbXBvbmVudFxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlU3VtbWFyeUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGRvY3VtZW50UmVxdWVzdCE6IERvY3VtZW50QXBwcm92YWxGZWFbXTtcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSVNpZ25hdHVyZVN1bW1hcnlDb25maWd1cmF0aW9uO1xyXG4gIEBPdXRwdXQoKSBvbmNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGltYWdlcyA9IHtcclxuICAgICAgcmVqZWN0OiAnJyxcclxuICAgICAgc2VuZDogJydcclxuICB9XHJcbiAgc2lnbmVkQ291bnQgPSAwO1xyXG4gIHJlamVjdGVkQ291bnQgPSAwO1xyXG4gIGlzQWxsRG9jdW1lbnRzUmVqZWN0ZWQgPSB0cnVlO1xyXG4gIGN1cnJlbnREYXRlOiBzdHJpbmcgPSAnJztcclxuICBpZCA9ICcnO1xyXG4gIHBkZnNOYW1lID0gJyc7XHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaG9zdENvbnRleHQ6IEVsZW1lbnRSZWYgKSB7fVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRvY3VtZW50UmVxdWVzdClcclxuICAgIHRoaXMuc2V0Q3VzdG9taXphdGlvblN0eWxlKHRoaXMuaG9zdENvbnRleHQubmF0aXZlRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeSkge1xyXG4gICAgICB0aGlzLmltYWdlcy5yZWplY3QgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5yZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L3JlamVjdGVkLnN2Z2A7XHJcbiAgICAgIHRoaXMuaW1hZ2VzLnNlbmQgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5zZW5kID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9zZW5kLnN2Z2A7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVEb2N1bWVudENvdW50cygpO1xyXG4gICAgdGhpcy5nZXRQZGZOYW1lcygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50RGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudERhdGUoKSB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGxldCBob3VycyA9IG5vdy5nZXRIb3VycygpO1xyXG4gICAgY29uc3QgbWludXRlcyA9IG5vdy5nZXRNaW51dGVzKCk7XHJcbiAgICBjb25zdCBhbVBtID0gaG91cnMgPj0gMTIgPyAnUE0nIDogJ0FNJztcclxuICBcclxuICAgIGhvdXJzID0gaG91cnMgJSAxMiB8fCAxMjsgXHJcbiAgXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRNaW51dGVzID0gbWludXRlcyA8IDEwID8gJzAnICsgbWludXRlcyA6IG1pbnV0ZXM7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gYCR7bm93LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmNvbmZpZ3VyYXRpb24uZGF0ZUZvcm1hdCl9IHwgJHtob3Vyc306JHtmb3JtYXR0ZWRNaW51dGVzfSAke2FtUG19YDtcclxuICB9XHJcbiAgXHJcblxyXG4gIHVwZGF0ZURvY3VtZW50Q291bnRzKCkge1xyXG4gICAgLy8gQ29udGFyIGRvY3VtZW50b3MgZmlybWFkb3MgKGFwcHJvdmVkOiB0cnVlKVxyXG4gICAgdGhpcy5kb2N1bWVudFJlcXVlc3QuZm9yRWFjaCgoZG9jKSA9PntcclxuICAgICAgdGhpcy5pZD0gZG9jLmlkITtcclxuICAgICAgaWYoZG9jLmFwcHJvdmVkKXtcclxuICAgICAgICAgIHRoaXMuc2lnbmVkQ291bnQgKz0gMTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5yZWplY3RlZENvdW50ICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRvY3VtZW50UmVxdWVzdCwgdGhpcy5zaWduZWRDb3VudCx0aGlzLnJlamVjdGVkQ291bnQpXHJcbiAgIGlmKHRoaXMuc2lnbmVkQ291bnQgPiAwKXtcclxuICAgIHRoaXMuaXNBbGxEb2N1bWVudHNSZWplY3RlZCA9IGZhbHNlXHJcbiAgIH1lbHNle1xyXG4gICAgdGhpcy5pc0FsbERvY3VtZW50c1JlamVjdGVkID0gdHJ1ZVxyXG4gICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGdldFBkZk5hbWVzKCl7XHJcbiAgICBsZXQgY3VycmVudEZsYWcgPSAnJztcclxuICAgIGxldCBwcmV2aWV3RmxhZyA9ICcnO1xyXG4gICAgdGhpcy5kb2N1bWVudFJlcXVlc3QuZm9yRWFjaCgoZG9jKSA9PntcclxuICAgICAgIGlmKHRoaXMucGRmc05hbWUgPT09ICcnKXtcclxuICAgICAgICB0aGlzLnBkZnNOYW1lID0gZG9jLmRvYz8ubmFtZS5yZXBsYWNlKCcucGRmJywnJykhO1xyXG4gICAgICAgIGN1cnJlbnRGbGFnID0gZG9jLmlkUmVxdWlzaXRpb24hXHJcbiAgICAgICAgcHJldmlld0ZsYWcgPSBkb2MuaWRSZXF1aXNpdGlvbiFcclxuICAgICAgIH1cclxuICAgICAgIGN1cnJlbnRGbGFnID0gZG9jLmlkUmVxdWlzaXRpb24hO1xyXG4gICAgICAgaWYoY3VycmVudEZsYWcgIT09IHByZXZpZXdGbGFnKXtcclxuICAgICAgICB0aGlzLnBkZnNOYW1lKz0gJywnK2RvYy5kb2M/Lm5hbWUucmVwbGFjZSgnLnBkZicsJycpITtcclxuICAgICAgICBjdXJyZW50RmxhZyA9IGRvYy5pZFJlcXVpc2l0aW9uIVxyXG4gICAgICAgIHByZXZpZXdGbGFnID0gZG9jLmlkUmVxdWlzaXRpb24hXHJcbiAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzZXRDdXN0b21pemF0aW9uU3R5bGUodGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihcclxuICAgICAgICAgIG5ldyBDb25maWd1cmF0aW9uKCksXHJcbiAgICAgICAgICBTSUdOQVRVUkVfU1VNTUFSWV9ERUZBVUxULFxyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uXHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FsbERvY3VtZW50c1JlamVjdGVkXCIgPlxyXG4gICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZVxyXG4gICAgICAgICAgICBbc3JjXT1cImltYWdlcy5zZW5kXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj5cclxuICAgICAgICAgICAgICAgIHt7cGRmc05hbWV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIGRhdGVcIj57eyBjdXJyZW50RGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHNpZ25lZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tzaWduZWRDb3VudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50LWJvbGQgcmVqZWN0ZWRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ucmVqZWN0ZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tyZWplY3RlZENvdW50fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZHNcIj5cclxuICAgICAgICAgICAgICAgIHt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5sZWdlbmR9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWxsRG9jdW1lbnRzUmVqZWN0ZWRcIiA+XHJcbiAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmVcclxuICAgICAgICBbc3JjXT1cImltYWdlcy5yZWplY3RcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXJlamVjdGVkXCI+IHt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudFJlamVjdGVkfX0gPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGUtYm9sZCB0aXRsZS1kb2N1bWVudFwiPlxyXG4gICAgICAgICAgICB7e3BkZnNOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWQtcmVxdWlzaXRpb25cIj5cclxuICAgICAgICAgICAgSUQge3tpZH19IHwge3sgY3VycmVudERhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbjwvZGl2PiJdfQ==
|
|
@@ -2,15 +2,15 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
|
2
2
|
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
3
3
|
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
4
4
|
import { getUploadESignatureErrorDescription, UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, UploadESignatureErrorCode } from '../../constants';
|
|
5
|
-
import { Validators } from '@angular/forms';
|
|
6
|
-
import { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';
|
|
5
|
+
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
|
6
|
+
import { DragDropDocumentDirective, FormErrorsComponent, ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';
|
|
7
7
|
import { finalize } from 'rxjs';
|
|
8
|
+
import { CommonModule } from '@angular/common';
|
|
9
|
+
import { NgFadImageInlineComponent } from '@fad-producto/ng-fad-image-inline';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "@angular/forms";
|
|
10
12
|
import * as i2 from "@fad-producto-portal/ng-fad-services";
|
|
11
13
|
import * as i3 from "@angular/common";
|
|
12
|
-
import * as i4 from "@fad-producto-portal/ng-fad-shared";
|
|
13
|
-
import * as i5 from "@fad-producto/ng-fad-image-inline";
|
|
14
14
|
export class UploadESignatureComponent {
|
|
15
15
|
constructor(hostContext, fb, fad, mifiel) {
|
|
16
16
|
this.hostContext = hostContext;
|
|
@@ -48,10 +48,6 @@ export class UploadESignatureComponent {
|
|
|
48
48
|
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
|
-
if (!this.signerId) {
|
|
52
|
-
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_SIGNER_ID, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_SIGNER_ID), 'ng-fad-signature-fea-upload-e-signature'));
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
51
|
if (!this.rfc) {
|
|
56
52
|
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));
|
|
57
53
|
return false;
|
|
@@ -154,20 +150,22 @@ export class UploadESignatureComponent {
|
|
|
154
150
|
documents: aprrovedDocuments,
|
|
155
151
|
signerId: this.rfc
|
|
156
152
|
};
|
|
153
|
+
this.onloader.emit(true);
|
|
157
154
|
const body = await this.mifiel.getSignBody(data);
|
|
155
|
+
this.onloader.emit(false);
|
|
158
156
|
if (!body) {
|
|
159
157
|
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.PASSWORD_ERROR, getUploadESignatureErrorDescription(UploadESignatureErrorCode.PASSWORD_ERROR), 'ng-fad-signature-fea-upload-e-signature'));
|
|
160
158
|
return;
|
|
161
159
|
}
|
|
162
160
|
this.onloader.emit(true);
|
|
163
|
-
this.fad.signFea(body, this.configuration.credentials?.key, this.configuration.credentials?.iv, this.configuration.services?.
|
|
161
|
+
this.fad.signFea(body, this.configuration.credentials?.key, this.configuration.credentials?.iv, this.configuration.services?.sign).pipe(finalize(() => {
|
|
164
162
|
this.onloader.emit(false);
|
|
165
163
|
})).subscribe({
|
|
166
164
|
next: (res) => {
|
|
167
165
|
if (res.success) {
|
|
168
166
|
const certificate = this.mifiel.parseCertificate(data.cer);
|
|
169
167
|
const cer = {
|
|
170
|
-
cer: certificate
|
|
168
|
+
cer: { ...certificate, serialNumber: '' }
|
|
171
169
|
};
|
|
172
170
|
resolve(cer);
|
|
173
171
|
}
|
|
@@ -241,11 +239,17 @@ export class UploadESignatureComponent {
|
|
|
241
239
|
Utils.setVariableCss('--fad-signature-fea-e-signature-file-img-background-color', this.configuration.customization?.moduleCustomization?.style?.file?.img?.backgroundColor, { targetElement });
|
|
242
240
|
}
|
|
243
241
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadESignatureComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormBuilder }, { token: i2.FadService }, { token: i2.MifielService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadESignatureComponent, selector: "ng-fad-signature-fea-upload-e-signature", inputs: { configuration: "configuration", documents: "documents", signerId: "signerId", rfc: "rfc" }, outputs: { onerror: "onerror", onloader: "onloader", oncomplete: "oncomplete" }, ngImport: i0, template: "<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .fad-portal-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.DragDropDocumentDirective, selector: "[dragDropDocument]", inputs: ["formatList", "acceptMultipleFiles"], outputs: ["onfiledropped", "onerror"] }, { kind: "component", type: i4.FormErrorsComponent, selector: "ng-fad-portal-shared-form-errors", inputs: ["configuration", "formData"], outputs: ["onerror"] }, { kind: "component", type: i5.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }] }); }
|
|
242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadESignatureComponent, isStandalone: true, selector: "ng-fad-signature-fea-upload-e-signature", inputs: { configuration: "configuration", documents: "documents", signerId: "signerId", rfc: "rfc" }, outputs: { onerror: "onerror", onloader: "onloader", oncomplete: "oncomplete" }, ngImport: i0, template: "<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .fad-portal-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"], outputs: ["load", "onerror"] }, { kind: "component", type: FormErrorsComponent, selector: "ng-fad-portal-shared-form-errors", inputs: ["configuration", "formData"], outputs: ["onerror"] }, { kind: "directive", type: DragDropDocumentDirective, selector: "[dragDropDocument]", inputs: ["formatList", "acceptMultipleFiles"], outputs: ["onfiledropped", "onerror"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
245
243
|
}
|
|
246
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadESignatureComponent, decorators: [{
|
|
247
245
|
type: Component,
|
|
248
|
-
args: [{ selector: 'ng-fad-signature-fea-upload-e-signature', template: "<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .fad-portal-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"] }]
|
|
246
|
+
args: [{ selector: 'ng-fad-signature-fea-upload-e-signature', standalone: true, imports: [
|
|
247
|
+
CommonModule,
|
|
248
|
+
NgFadImageInlineComponent,
|
|
249
|
+
FormErrorsComponent,
|
|
250
|
+
DragDropDocumentDirective,
|
|
251
|
+
ReactiveFormsModule
|
|
252
|
+
], template: "<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .fad-portal-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"] }]
|
|
249
253
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i2.FadService }, { type: i2.MifielService }]; }, propDecorators: { configuration: [{
|
|
250
254
|
type: Input
|
|
251
255
|
}], documents: [{
|
|
@@ -261,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
261
265
|
}], oncomplete: [{
|
|
262
266
|
type: Output
|
|
263
267
|
}] } });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1lLXNpZ25hdHVyZS91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWUtc2lnbmF0dXJlL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHdDQUF3QyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFBb0IsV0FBdUIsRUFBVSxFQUFlLEVBQzFELEdBQWUsRUFBVSxNQUFxQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDMUQsUUFBRyxH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LEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXBMLEtBQUssQ0FBQyxjQUFjLENBQUMsb0RBQW9ELEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hMLEtBQUssQ0FBQyxjQUFjLENBQUMsMkRBQTJELEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqTSxDQUFDOytHQWxSVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixzUUNoQnRDLDZ2T0FzSEE7OzRGRHRHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUNBQXlDO2dMQUsxQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgSVVwbG9hZEVTaWduYXR1cmVDb25maWd1cmF0aW9uLCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbiwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XHJcbmltcG9ydCB7IEZhZFNlcnZpY2UsIE1pZmllbFNlcnZpY2UsIFNpZ25hdHVyZUZlYVJlcXVlc3QsIFNpZ25JbnRlcm5hbEZlYVJlcXVlc3QgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRVNpZ25hdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiE6IElVcGxvYWRFU2lnbmF0dXJlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBkb2N1bWVudHM6IFNpZ25JbnRlcm5hbEZlYVJlcXVlc3RbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpZ25lcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJmYyE6IHN0cmluZztcclxuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcclxuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9uY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+KCk7XHJcbiAgdXBsb2FkSW1nITogc3RyaW5nO1xyXG4gIGNoZWNrT25JbWchOiBzdHJpbmc7XHJcbiAgY2hlY2tPZmZJbWchOiBzdHJpbmc7XHJcbiAgZmlsZUltZyE6IHN0cmluZztcclxuICBmb3JtYXRDZXJMaXN0ID0gWydjZXInXTtcclxuICBmb3JtYXRLZXlMaXN0ID0gWydrZXknXTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHBhc3N3b3JkSW5wdXRUeXBlID0gJ3Bhc3N3b3JkJztcclxuICBkb2N1bWVudFBsdXJhbFRpdGxlITogc3RyaW5nO1xyXG4gIGRvY3VtZW50U2luZ3VsYXJUaXRsZSE6IHN0cmluZztcclxuICBpc1ZhbGlkYXRlZCA9IGZhbHNlO1xyXG4gIHNob3dDb21wb25lbnQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RDb250ZXh0OiBFbGVtZW50UmVmLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLCBwcml2YXRlIG1pZmllbDogTWlmaWVsU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8udXBsb2FkIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX11cGxvYWQuc3ZnYDtcclxuICAgIHRoaXMuY2hlY2tPbkltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmNoZWNrT24gfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9uLnN2Z2A7XHJcbiAgICB0aGlzLmNoZWNrT2ZmSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uY2hlY2tPZmYgfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9mZi5zdmdgO1xyXG4gICAgdGhpcy5maWxlSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uZmlsZSB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZmlsZS5zdmdgO1xyXG5cclxuICAgIHRoaXMuc2hvd0NvbXBvbmVudCA9IHRoaXMudmFsaWRhdGVEYXRhKCk7XHJcbiAgICBpZiAodGhpcy5zaG93Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRQbHVyYWxUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5wbHVyYWw/LnJlcGxhY2UoJyNUT1RBTF9ET0NTJywgdGhpcy5kb2N1bWVudHM/Lmxlbmd0aC50b1N0cmluZygpKSE7IC8vIHBvbmVyIGxvbmdpdHVkXHJcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50cz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5kb2N1bWVudHNbMF0uYXBwcm92ZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8uYXBwcm92ZWQhIDogdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8udGl0bGU/LnJlamVjdGVkITtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2luZ3VsYXJUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5zaW5ndWxhcj8ucmVwbGFjZSgnI1NUQVRVU19ET0MnLCBzdGF0dXMpITsgLy8gcG9uZXIgbG9uZ2l0dWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEYXRhKCkge1xyXG4gICAgaWYoIXRoaXMuZG9jdW1lbnRzIHx8IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19ET0NVTUVOVFMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fRE9DVU1FTlRTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLnNpZ25lcklkKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fU0lHTkVSX0lELCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1NJR05FUl9JRCksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5yZmMpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19SRkMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fUkZDKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgY2VyOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAga2V5OiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcGFzc3dvcmQ6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBjZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnY2VyJyk7XHJcbiAgfVxyXG5cclxuICBnZXQga2V5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2tleScpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhc3N3b3JkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsZVBpY2tlcihmaWxlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGlmICghZmlsZSkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSAnY2VyJyAmJiAhL1xcLmNlciQvLnRlc3QoZmlsZS5uYW1lKSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ2tleScgJiYgIS9cXC5rZXkkLy50ZXN0KGZpbGUubmFtZSkpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVkpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZSA9PT0gJ2NlcicgPyB0aGlzLmNlcj8uc2V0VmFsdWUoZmlsZSkgOiB0aGlzLmtleT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvbmZpbGVkcm9wcGVkKGZpbGVzOiBGaWxlTGlzdCwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlID0gZmlsZXNbMF07XHJcbiAgICB0eXBlID09PSAnY2VyJyA/IHRoaXMuY2VyPy5zZXRWYWx1ZShmaWxlKSA6IHRoaXMua2V5Py5zZXRWYWx1ZShmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uZXJyb3JEaXJlY3RpdmUoZXZlbnQ6IFJlc3BvbnNlRXJyb3IsIHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0xKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAtMiAmJiB0eXBlID09PSAnY2VyJykgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0yICYmIHR5cGUgPT09ICdrZXknKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVksIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKCkge1xyXG4gICAgdGhpcy5wYXNzd29yZElucHV0VHlwZSA9IHRoaXMucGFzc3dvcmRJbnB1dFR5cGUgPT09ICd0ZXh0JyA/ICdwYXNzd29yZCcgOiAndGV4dCc7XHJcbiAgfVxyXG5cclxuICBzYXZlUGFzc3dvcmQodmFsdWU6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB2YWx1ZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIHRoaXMucGFzc3dvcmQ/LnNldFZhbHVlKGlucHV0RWxlbWVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhbGxJc1JlamVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzLmV2ZXJ5KGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2lnbkRvY3VtZW50cygpIHtcclxuICAgIGNvbnN0IGFwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gZG9jLmFwcHJvdmVkKTtcclxuICAgIGNvbnN0IHJlamVjdGVkRG9jdW1lbnRzID0gdGhpcy5kb2N1bWVudHMuZmlsdGVyKChkb2MpID0+ICFkb2MuYXBwcm92ZWQpO1xyXG4gICAgbGV0IGNlcjogbnVsbCB8IFVwbG9hZEVTaWduYXR1cmVDb21wbGV0ZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGFwcm92ZWREb2N1bWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2lnbkRvY3VtZW50cygpO1xyXG4gICAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcbiAgICAgIGNlciA9IHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZWplY3RlZERvY3VtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZWplY3REb2N1bWVudHMoKTtcclxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25jb21wbGV0ZS5lbWl0KGNlcik7XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2lnbkRvY3VtZW50cygpOiBQcm9taXNlPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgY2VyID0gYXdhaXQgdGhpcy5nZXRCYXNlNjRGaWxlKHRoaXMuY2VyPy52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICghY2VyKSByZWplY3QobnVsbCk7XHJcblxyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcbiAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZ2V0QmFzZTY0RmlsZSh0aGlzLmtleT8udmFsdWUpO1xyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICBpZiAoIWtleSkgcmVqZWN0KG51bGwpO1xyXG5cclxuICAgICAgY29uc3QgYXBycm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gZG9jLmFwcHJvdmVkKTtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGE6IFNpZ25hdHVyZUZlYVJlcXVlc3QgPSB7XHJcbiAgICAgICAgY2VyOiBjZXIhLnNwbGl0KCcsJylbMV0sXHJcbiAgICAgICAga2V5OiBrZXkhLnNwbGl0KCcsJylbMV0sXHJcbiAgICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQ/LnZhbHVlLFxyXG4gICAgICAgIGRvY3VtZW50czogYXBycm92ZWREb2N1bWVudHMsXHJcbiAgICAgICAgc2lnbmVySWQ6IHRoaXMucmZjXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLm1pZmllbC5nZXRTaWduQm9keShkYXRhKTtcclxuICAgICAgaWYgKCFib2R5KSB7XHJcbiAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5QQVNTV09SRF9FUlJPUiwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5QQVNTV09SRF9FUlJPUiksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuZmFkLnNpZ25GZWEoYm9keSEsIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8ua2V5ISwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5pdiEsIHRoaXMuY29uZmlndXJhdGlvbi5zZXJ2aWNlcz8ucmVqZWN0ISkucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgY29uc3QgY2VydGlmaWNhdGUgPSB0aGlzLm1pZmllbC5wYXJzZUNlcnRpZmljYXRlKGRhdGEuY2VyKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNlcjogVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlID0ge1xyXG4gICAgICAgICAgICAgIGNlcjogY2VydGlmaWNhdGUhXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoY2VyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWplY3REb2N1bWVudHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZWplY3RlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiAhZG9jLmFwcHJvdmVkKTtcclxuXHJcbiAgICAgIGNvbnN0IGJvZHk6IFNpZ25hdHVyZUZlYVJlcXVlc3QgPSB7XHJcbiAgICAgICAgY2VyOiAnJyxcclxuICAgICAgICBrZXk6ICcnLFxyXG4gICAgICAgIHBhc3N3b3JkOiAnJyxcclxuICAgICAgICBkb2N1bWVudHM6IHJlamVjdGVkRG9jdW1lbnRzLm1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHJlcy5pZCxcclxuICAgICAgICAgICAgaWRSZXF1aXNpdGlvbjogcmVzLmlkUmVxdWlzaXRpb24sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc2lnbmVySWQ6IHRoaXMuc2lnbmVySWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5mYWQucmVqZWN0RmVhKGJvZHksIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8ua2V5ISwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5pdiEsIHRoaXMuY29uZmlndXJhdGlvbi5zZXJ2aWNlcz8ucmVqZWN0ISkucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5IVFRQLCBlcnJvci5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QmFzZTY0RmlsZShmaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgU2hhcmVkVXRpbHMuZmlsZVRvQmFzZTY0KGZpbGUpLnRoZW4oYmFzZTY0ID0+IGJhc2U2NCkuY2F0Y2goZXJyb3IgPT4gbnVsbCk7XHJcbiAgICBpZiAoZGF0YSkgcmV0dXJuIGRhdGEgYXMgc3RyaW5nO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRVJST1JfQkFTRV82NCwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5FUlJPUl9CQVNFXzY0KSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXN0b21pemF0aW9uU3R5bGUodGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKG5ldyBDb25maWd1cmF0aW9uKCksIFVQTE9BRF9FX1NJR05BVFVSRV9DT05GSUdVUkFUSU9OX0RFRkFVTFQsIHRoaXMuY29uZmlndXJhdGlvbik7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1kb2N1bWVudHMtYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZG9jdW1lbnRzPy5iYWNrZ3JvdW5kQ29sb3IsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWRvY3VtZW50cy1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5kb2N1bWVudHM/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJvcmRlcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8udXBsb2FkPy5ib3JkZXIsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1idXR0b24tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8udXBsb2FkPy5idXR0b24/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJ1dHRvbi1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYnV0dG9uLWhvdmVyJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uaG92ZXIsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuXHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1maWxlLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LmZpbGU/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtZmlsZS1pbWctYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZmlsZT8uaW1nPy5iYWNrZ3JvdW5kQ29sb3IsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb21wb25lbnRcIj5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyBkb2N1bWVudFBsdXJhbFRpdGxlIH19PC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwiZmFkLXBvcnRhbC10aXRsZS1ib2xkXCI+e3sgZG9jdW1lbnRTaW5ndWxhclRpdGxlIH19PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1kb2N1bWVudCBmYWQtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaSBvZiBkb2N1bWVudHNcIiBjbGFzcz1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdj57eyBpLmRvYy5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cyBmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiPnt7IGkuYXBwcm92ZWQgPyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8uc3RhdHVzPy5hcHByb3ZlZCA6ICBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8uc3RhdHVzPy5yZWplY3RlZCB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlc1wiPnt7IGkuZG9jLnBhZ2VzIH19IHt7IGkuZG9jLnBhZ2VzID4gMSA/IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5wYWdlcz8ucGx1cmFsIDogY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnBhZ2VzPy5zaW5ndWxhciB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFsbElzUmVqZWN0ZWQoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGUtYm9sZFwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8udGl0bGUgfX08L2Rpdj5cclxuXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWluc3RydWN0aW9uLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/LmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNlcj8udmFsdWVcIiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBzZWxlY3QtZmlsZVwiIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlQ2VySW5wdXQpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy51cGxvYWQgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhY2VyPy52YWx1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJjb250YWluZXItdXBsb2FkXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoZmlsZUNlcklucHV0KVwiXHJcbiAgICAgICAgZHJhZ0Ryb3BEb2N1bWVudFxyXG4gICAgICAgIFtmb3JtYXRMaXN0XT1cImZvcm1hdENlckxpc3RcIlxyXG4gICAgICAgIFthY2NlcHRNdWx0aXBsZUZpbGVzXT1cImZhbHNlXCJcclxuICAgICAgICAob25maWxlZHJvcHBlZCk9XCJvbmZpbGVkcm9wcGVkKCRldmVudCwgJ2NlcicpXCJcclxuICAgICAgICAob25lcnJvcik9XCJvbmVycm9yRGlyZWN0aXZlKCRldmVudCwgJ2NlcicpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBpbnN0cnVjdGlvblwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8uY2VyPy5pbnN0cnVjdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCB1cGxvYWQtYnRuXCI+XHJcbiAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBbc3JjXT1cInVwbG9hZEltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgIDxzcGFuPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8uY2VyPy51cGxvYWQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImNlcj8udmFsdWVcIiBjbGFzcz1cImNvbnRhaW5lci1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImZpbGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sgY2VyPy52YWx1ZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmNlclwiICNmaWxlQ2VySW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCAnY2VyJylcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItaW5zdHJ1Y3Rpb24tZmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LmtleT8ubGFiZWwgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwia2V5Py52YWx1ZVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdC1maWxlXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVLZXlJbnB1dClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnVwbG9hZCB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFrZXk/LnZhbHVlXCJcclxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lci11cGxvYWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlS2V5SW5wdXQpXCJcclxuICAgICAgICBkcmFnRHJvcERvY3VtZW50XHJcbiAgICAgICAgW2Zvcm1hdExpc3RdPVwiZm9ybWF0S2V5TGlzdFwiXHJcbiAgICAgICAgW2FjY2VwdE11bHRpcGxlRmlsZXNdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvbmZpbGVkcm9wcGVkKT1cIm9uZmlsZWRyb3BwZWQoJGV2ZW50LCAna2V5JylcIlxyXG4gICAgICAgIChvbmVycm9yKT1cIm9uZXJyb3JEaXJlY3RpdmUoJGV2ZW50LCAna2V5JylcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBpbnN0cnVjdGlvblwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py5pbnN0cnVjdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCB1cGxvYWQtYnRuXCI+XHJcbiAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBbc3JjXT1cInVwbG9hZEltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgIDxzcGFuPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py51cGxvYWQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImtleT8udmFsdWVcIiBjbGFzcz1cImNvbnRhaW5lci1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImZpbGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sga2V5Py52YWx1ZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmtleVwiICNmaWxlS2V5SW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCAna2V5JylcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRhaW5lci1pbnB1dFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIiBmb3I9XCJcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1wYXNzd29yZFwiPlxyXG4gICAgICAgIDxpbnB1dCBbdHlwZV09XCJwYXNzd29yZElucHV0VHlwZVwiIChpbnB1dCk9XCJzYXZlUGFzc3dvcmQoJGV2ZW50KVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCBwYXNzd29yZC1zaG93XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICd0ZXh0J1wiIChjbGljayk9XCJjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5oaWRlIH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICdwYXNzd29yZCdcIiAoY2xpY2spPVwiY2hhbmdlUGFzd29yZElucHV0VHlwZSgpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5wYXNzd29yZD8uc2hvdyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1mYWQtcG9ydGFsLXNoYXJlZC1mb3JtLWVycm9ycyBbZm9ybURhdGFdPVwicGFzc3dvcmQhXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbi5mb3JtRXJyb3JzPy5jb25maWd1cmF0aW9uIVwiPjwvbmctZmFkLXBvcnRhbC1zaGFyZWQtZm9ybS1lcnJvcnM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2PjwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGNvbnRhaW5lci1jb25maXJtXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWFsbElzUmVqZWN0ZWQoKVwiIChjbGljayk9XCJpc1ZhbGlkYXRlZCA9ICFpc1ZhbGlkYXRlZFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lICpuZ0lmPVwiaXNWYWxpZGF0ZWRcIiBbc3JjXT1cImNoZWNrT25JbWdcIj48L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgKm5nSWY9XCIhaXNWYWxpZGF0ZWRcIiBbc3JjXT1cImNoZWNrT2ZmSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPT09IDFcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LnZhbGlkYXRlPy5zaW5ndWxhciB9fTwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDFcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LnZhbGlkYXRlPy5wbHVyYWwgfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXY+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvblwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPT09IDEgJiYgIWFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFpc1ZhbGlkYXRlZFwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5zaWduPy5zaW5ndWxhciB9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxICYmICFhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAhaXNWYWxpZGF0ZWRcIiAoY2xpY2spPVwib25TaWduRG9jdW1lbnRzKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8uc2lnbj8ucGx1cmFsIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5yZWplY3Q/LnNpbmd1bGFyIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDEgJiYgYWxsSXNSZWplY3RlZCgpXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXByaW1hcnlcIiAoY2xpY2spPVwib25TaWduRG9jdW1lbnRzKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8ucmVqZWN0Py5wbHVyYWwgfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1lLXNpZ25hdHVyZS91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWUtc2lnbmF0dXJlL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHdDQUF3QyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQWU5RSxNQUFNLE9BQU8s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QWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVwTCxLQUFLLENBQUMsY0FBYyxDQUFDLG9EQUFvRCxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNoTCxLQUFLLENBQUMsY0FBYyxDQUFDLDJEQUEyRCxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDak0sQ0FBQzsrR0EvUVUseUJBQXlCO21HQUF6Qix5QkFBeUIsMFJDMUJ0Qyw2dk9Bc0hBLG9ySURuR0ksWUFBWSxnUUFDWix5QkFBeUIsK0dBQ3pCLG1CQUFtQiwwSUFDbkIseUJBQXlCLG9KQUN6QixtQkFBbUI7OzRGQUdWLHlCQUF5QjtrQkFickMsU0FBUzsrQkFDRSx5Q0FBeUMsY0FHdkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3FCQUNwQjtnTEFHUSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgSVVwbG9hZEVTaWduYXR1cmVDb25maWd1cmF0aW9uLCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbiwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERyYWdEcm9wRG9jdW1lbnREaXJlY3RpdmUsIEZvcm1FcnJvcnNDb21wb25lbnQsIFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XHJcbmltcG9ydCB7IEZhZFNlcnZpY2UsIE1pZmllbFNlcnZpY2UsIFNpZ25hdHVyZUZlYVJlcXVlc3QsIFNpZ25JbnRlcm5hbEZlYVJlcXVlc3QgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdGYWRJbWFnZUlubGluZUNvbXBvbmVudCB9IGZyb20gJ0BmYWQtcHJvZHVjdG8vbmctZmFkLWltYWdlLWlubGluZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBOZ0ZhZEltYWdlSW5saW5lQ29tcG9uZW50LFxyXG4gICAgRm9ybUVycm9yc0NvbXBvbmVudCxcclxuICAgIERyYWdEcm9wRG9jdW1lbnREaXJlY3RpdmUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRVNpZ25hdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiE6IElVcGxvYWRFU2lnbmF0dXJlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBkb2N1bWVudHM6IFNpZ25JbnRlcm5hbEZlYVJlcXVlc3RbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpZ25lcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJmYyE6IHN0cmluZztcclxuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcclxuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9uY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+KCk7XHJcbiAgdXBsb2FkSW1nITogc3RyaW5nO1xyXG4gIGNoZWNrT25JbWchOiBzdHJpbmc7XHJcbiAgY2hlY2tPZmZJbWchOiBzdHJpbmc7XHJcbiAgZmlsZUltZyE6IHN0cmluZztcclxuICBmb3JtYXRDZXJMaXN0ID0gWydjZXInXTtcclxuICBmb3JtYXRLZXlMaXN0ID0gWydrZXknXTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHBhc3N3b3JkSW5wdXRUeXBlID0gJ3Bhc3N3b3JkJztcclxuICBkb2N1bWVudFBsdXJhbFRpdGxlITogc3RyaW5nO1xyXG4gIGRvY3VtZW50U2luZ3VsYXJUaXRsZSE6IHN0cmluZztcclxuICBpc1ZhbGlkYXRlZCA9IGZhbHNlO1xyXG4gIHNob3dDb21wb25lbnQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RDb250ZXh0OiBFbGVtZW50UmVmLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLCBwcml2YXRlIG1pZmllbDogTWlmaWVsU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8udXBsb2FkIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX11cGxvYWQuc3ZnYDtcclxuICAgIHRoaXMuY2hlY2tPbkltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmNoZWNrT24gfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9uLnN2Z2A7XHJcbiAgICB0aGlzLmNoZWNrT2ZmSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uY2hlY2tPZmYgfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9mZi5zdmdgO1xyXG4gICAgdGhpcy5maWxlSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uZmlsZSB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZmlsZS5zdmdgO1xyXG5cclxuICAgIHRoaXMuc2hvd0NvbXBvbmVudCA9IHRoaXMudmFsaWRhdGVEYXRhKCk7XHJcbiAgICBpZiAodGhpcy5zaG93Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRQbHVyYWxUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5wbHVyYWw/LnJlcGxhY2UoJyNUT1RBTF9ET0NTJywgdGhpcy5kb2N1bWVudHM/Lmxlbmd0aC50b1N0cmluZygpKSE7IC8vIHBvbmVyIGxvbmdpdHVkXHJcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50cz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5kb2N1bWVudHNbMF0uYXBwcm92ZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8uYXBwcm92ZWQhIDogdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8udGl0bGU/LnJlamVjdGVkITtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2luZ3VsYXJUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5zaW5ndWxhcj8ucmVwbGFjZSgnI1NUQVRVU19ET0MnLCBzdGF0dXMpITsgLy8gcG9uZXIgbG9uZ2l0dWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEYXRhKCkge1xyXG4gICAgaWYoIXRoaXMuZG9jdW1lbnRzIHx8IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19ET0NVTUVOVFMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fRE9DVU1FTlRTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLnJmYykge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1JGQywgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19SRkMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBjZXI6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBrZXk6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBwYXNzd29yZDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdjZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBrZXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgna2V5Jyk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFzc3dvcmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKTtcclxuICB9XHJcblxyXG4gIG9wZW5GaWxlUGlja2VyKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdjZXInICYmICEvXFwuY2VyJC8udGVzdChmaWxlLm5hbWUpKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSAna2V5JyAmJiAhL1xcLmtleSQvLnRlc3QoZmlsZS5uYW1lKSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVksIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlID09PSAnY2VyJyA/IHRoaXMuY2VyPy5zZXRWYWx1ZShmaWxlKSA6IHRoaXMua2V5Py5zZXRWYWx1ZShmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uZmlsZWRyb3BwZWQoZmlsZXM6IEZpbGVMaXN0LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgIHR5cGUgPT09ICdjZXInID8gdGhpcy5jZXI/LnNldFZhbHVlKGZpbGUpIDogdGhpcy5rZXk/LnNldFZhbHVlKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25lcnJvckRpcmVjdGl2ZShldmVudDogUmVzcG9uc2VFcnJvciwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gLTEpIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0yICYmIHR5cGUgPT09ICdjZXInKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gLTIgJiYgdHlwZSA9PT0gJ2tleScpIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhc3dvcmRJbnB1dFR5cGUoKSB7XHJcbiAgICB0aGlzLnBhc3N3b3JkSW5wdXRUeXBlID0gdGhpcy5wYXNzd29yZElucHV0VHlwZSA9PT0gJ3RleHQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0JztcclxuICB9XHJcblxyXG4gIHNhdmVQYXNzd29yZCh2YWx1ZTogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgdGhpcy5wYXNzd29yZD8uc2V0VmFsdWUoaW5wdXRFbGVtZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFsbElzUmVqZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHMuZXZlcnkoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TaWduRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgYXByb3ZlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiBkb2MuYXBwcm92ZWQpO1xyXG4gICAgY29uc3QgcmVqZWN0ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gIWRvYy5hcHByb3ZlZCk7XHJcbiAgICBsZXQgY2VyOiBudWxsIHwgVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlID0gbnVsbDtcclxuXHJcbiAgICBpZiAoYXByb3ZlZERvY3VtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zaWduRG9jdW1lbnRzKCk7XHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHJldHVybjtcclxuICAgICAgY2VyID0gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlamVjdGVkRG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlamVjdERvY3VtZW50cygpO1xyXG4gICAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbmNvbXBsZXRlLmVtaXQoY2VyKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzaWduRG9jdW1lbnRzKCk6IFByb21pc2U8bnVsbCB8IFVwbG9hZEVTaWduYXR1cmVDb21wbGV0ZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICBjb25zdCBjZXIgPSBhd2FpdCB0aGlzLmdldEJhc2U2NEZpbGUodGhpcy5jZXI/LnZhbHVlKTtcclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKTtcclxuICAgICAgaWYgKCFjZXIpIHJlamVjdChudWxsKTtcclxuXHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5nZXRCYXNlNjRGaWxlKHRoaXMua2V5Py52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICgha2V5KSByZWplY3QobnVsbCk7XHJcblxyXG4gICAgICBjb25zdCBhcHJyb3ZlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiBkb2MuYXBwcm92ZWQpO1xyXG5cclxuICAgICAgY29uc3QgZGF0YTogU2lnbmF0dXJlRmVhUmVxdWVzdCA9IHtcclxuICAgICAgICBjZXI6IGNlciEuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICBrZXk6IGtleSEuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZD8udmFsdWUsXHJcbiAgICAgICAgZG9jdW1lbnRzOiBhcHJyb3ZlZERvY3VtZW50cyxcclxuICAgICAgICBzaWduZXJJZDogdGhpcy5yZmNcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5taWZpZWwuZ2V0U2lnbkJvZHkoZGF0YSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuUEFTU1dPUkRfRVJST1IsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuUEFTU1dPUkRfRVJST1IpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICB0aGlzLmZhZC5zaWduRmVhKGJvZHkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/LmtleSEsIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8uaXYhLCB0aGlzLmNvbmZpZ3VyYXRpb24uc2VydmljZXM/LnNpZ24hKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IHRoaXMubWlmaWVsLnBhcnNlQ2VydGlmaWNhdGUoZGF0YS5jZXIpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2VyOiBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgPSB7XHJcbiAgICAgICAgICAgICAgY2VyOiB7Li4uY2VydGlmaWNhdGUhLCBzZXJpYWxOdW1iZXI6ICcnIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShjZXIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5TRVJWSUNFLHJlcy5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuSFRUUCwgZXJyb3IuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlamVjdERvY3VtZW50cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlamVjdGVkRG9jdW1lbnRzID0gdGhpcy5kb2N1bWVudHMuZmlsdGVyKChkb2MpID0+ICFkb2MuYXBwcm92ZWQpO1xyXG5cclxuICAgICAgY29uc3QgYm9keTogU2lnbmF0dXJlRmVhUmVxdWVzdCA9IHtcclxuICAgICAgICBjZXI6ICcnLFxyXG4gICAgICAgIGtleTogJycsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxyXG4gICAgICAgIGRvY3VtZW50czogcmVqZWN0ZWREb2N1bWVudHMubWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogcmVzLmlkLFxyXG4gICAgICAgICAgICBpZFJlcXVpc2l0aW9uOiByZXMuaWRSZXF1aXNpdGlvbixcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzaWduZXJJZDogdGhpcy5zaWduZXJJZFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLmZhZC5yZWplY3RGZWEoYm9keSwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5rZXkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/Lml2ISwgdGhpcy5jb25maWd1cmF0aW9uLnNlcnZpY2VzPy5yZWplY3QhKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5TRVJWSUNFLHJlcy5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBTaGFyZWRVdGlscy5maWxlVG9CYXNlNjQoZmlsZSkudGhlbihiYXNlNjQgPT4gYmFzZTY0KS5jYXRjaChlcnJvciA9PiBudWxsKTtcclxuICAgIGlmIChkYXRhKSByZXR1cm4gZGF0YSBhcyBzdHJpbmc7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5FUlJPUl9CQVNFXzY0LCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkVSUk9SX0JBU0VfNjQpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBVdGlscy5tZXJnZUNvbmZpZ3VyYXRpb24obmV3IENvbmZpZ3VyYXRpb24oKSwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgdGhpcy5jb25maWd1cmF0aW9uKTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWRvY3VtZW50cy1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5kb2N1bWVudHM/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtZG9jdW1lbnRzLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LmRvY3VtZW50cz8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcblxyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJhY2tncm91bmQtY29sb3InLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYmFja2dyb3VuZENvbG9yLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYm9yZGVyJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJvcmRlciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcblxyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uYmFja2dyb3VuZENvbG9yLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYnV0dG9uLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYnV0dG9uPy5ib3JkZXJSYWRpdXMsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1idXR0b24taG92ZXInLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYnV0dG9uPy5ob3ZlciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWZpbGUtYm9yZGVyLXJhZGl1cycsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZmlsZT8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1maWxlLWltZy1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5maWxlPy5pbWc/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvbXBvbmVudFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDFcIiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGUtYm9sZFwiPnt7IGRvY3VtZW50UGx1cmFsVGl0bGUgfX08L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyBkb2N1bWVudFNpbmd1bGFyVGl0bGUgfX08L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWRvY3VtZW50IGZhZC1wb3J0YWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIGRvY3VtZW50c1wiIGNsYXNzPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2Pnt7IGkuZG9jLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzIGZhZC1wb3J0YWwtY29udGVudC1ib2xkXCI+e3sgaS5hcHByb3ZlZCA/IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5zdGF0dXM/LmFwcHJvdmVkIDogIGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5zdGF0dXM/LnJlamVjdGVkIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzXCI+e3sgaS5kb2MucGFnZXMgfX0ge3sgaS5kb2MucGFnZXMgPiAxID8gY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnBhZ2VzPy5wbHVyYWwgOiBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8ucGFnZXM/LnNpbmd1bGFyIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWxsSXNSZWplY3RlZCgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC10aXRsZS1ib2xkXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy50aXRsZSB9fTwvZGl2PlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItaW5zdHJ1Y3Rpb24tZmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LmNlcj8ubGFiZWwgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2VyPy52YWx1ZVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdC1maWxlXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVDZXJJbnB1dClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnVwbG9hZCB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFjZXI/LnZhbHVlXCJcclxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lci11cGxvYWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlQ2VySW5wdXQpXCJcclxuICAgICAgICBkcmFnRHJvcERvY3VtZW50XHJcbiAgICAgICAgW2Zvcm1hdExpc3RdPVwiZm9ybWF0Q2VyTGlzdFwiXHJcbiAgICAgICAgW2FjY2VwdE11bHRpcGxlRmlsZXNdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvbmZpbGVkcm9wcGVkKT1cIm9uZmlsZWRyb3BwZWQoJGV2ZW50LCAnY2VyJylcIlxyXG4gICAgICAgIChvbmVycm9yKT1cIm9uZXJyb3JEaXJlY3RpdmUoJGV2ZW50LCAnY2VyJylcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGluc3RydWN0aW9uXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/Lmluc3RydWN0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHVwbG9hZC1idG5cIj5cclxuICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFtzcmNdPVwidXBsb2FkSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgPHNwYW4+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/LnVwbG9hZCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY2VyPy52YWx1ZVwiIGNsYXNzPVwiY29udGFpbmVyLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtaW1nXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZUltZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjZXI/LnZhbHVlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY2VyXCIgI2ZpbGVDZXJJbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsICdjZXInKVwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1pbnN0cnVjdGlvbi1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py5sYWJlbCB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJrZXk/LnZhbHVlXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgc2VsZWN0LWZpbGVcIiAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoZmlsZUtleUlucHV0KVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8udXBsb2FkIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiIWtleT8udmFsdWVcIlxyXG4gICAgICAgIGNsYXNzPVwiY29udGFpbmVyLXVwbG9hZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVLZXlJbnB1dClcIlxyXG4gICAgICAgIGRyYWdEcm9wRG9jdW1lbnRcclxuICAgICAgICBbZm9ybWF0TGlzdF09XCJmb3JtYXRLZXlMaXN0XCJcclxuICAgICAgICBbYWNjZXB0TXVsdGlwbGVGaWxlc109XCJmYWxzZVwiXHJcbiAgICAgICAgKG9uZmlsZWRyb3BwZWQpPVwib25maWxlZHJvcHBlZCgkZXZlbnQsICdrZXknKVwiXHJcbiAgICAgICAgKG9uZXJyb3IpPVwib25lcnJvckRpcmVjdGl2ZSgkZXZlbnQsICdrZXknKVwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGluc3RydWN0aW9uXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5rZXk/Lmluc3RydWN0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHVwbG9hZC1idG5cIj5cclxuICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFtzcmNdPVwidXBsb2FkSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgPHNwYW4+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5rZXk/LnVwbG9hZCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwia2V5Py52YWx1ZVwiIGNsYXNzPVwiY29udGFpbmVyLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtaW1nXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZUltZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBrZXk/LnZhbHVlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIua2V5XCIgI2ZpbGVLZXlJbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsICdrZXknKVwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGFpbmVyLWlucHV0XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiIGZvcj1cIlwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ucGFzc3dvcmQ/LmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXBhc3N3b3JkXCI+XHJcbiAgICAgICAgPGlucHV0IFt0eXBlXT1cInBhc3N3b3JkSW5wdXRUeXBlXCIgKGlucHV0KT1cInNhdmVQYXNzd29yZCgkZXZlbnQpXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIi8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHBhc3N3b3JkLXNob3dcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzd29yZElucHV0VHlwZSA9PT0gJ3RleHQnXCIgKGNsaWNrKT1cImNoYW5nZVBhc3dvcmRJbnB1dFR5cGUoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ucGFzc3dvcmQ/LmhpZGUgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzd29yZElucHV0VHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiIChjbGljayk9XCJjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5zaG93IH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWZhZC1wb3J0YWwtc2hhcmVkLWZvcm0tZXJyb3JzIFtmb3JtRGF0YV09XCJwYXNzd29yZCFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uLmZvcm1FcnJvcnM/LmNvbmZpZ3VyYXRpb24hXCI+PC9uZy1mYWQtcG9ydGFsLXNoYXJlZC1mb3JtLWVycm9ycz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxkaXY+PC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgY29udGFpbmVyLWNvbmZpcm1cIj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYWxsSXNSZWplY3RlZCgpXCIgKGNsaWNrKT1cImlzVmFsaWRhdGVkID0gIWlzVmFsaWRhdGVkXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgKm5nSWY9XCJpc1ZhbGlkYXRlZFwiIFtzcmNdPVwiY2hlY2tPbkltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSAqbmdJZj1cIiFpc1ZhbGlkYXRlZFwiIFtzcmNdPVwiY2hlY2tPZmZJbWdcIj48L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8udmFsaWRhdGU/LnNpbmd1bGFyIH19PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID4gMVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8udmFsaWRhdGU/LnBsdXJhbCB9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdj48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhYWxsSXNSZWplY3RlZCgpXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgIWlzVmFsaWRhdGVkXCIgKGNsaWNrKT1cIm9uU2lnbkRvY3VtZW50cygpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy5idXR0b24/LnNpZ24/LnNpbmd1bGFyIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDEgJiYgIWFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFpc1ZhbGlkYXRlZFwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5zaWduPy5wbHVyYWwgfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxICYmIGFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2lnbkRvY3VtZW50cygpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy5idXR0b24/LnJlamVjdD8uc2luZ3VsYXIgfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID4gMSAmJiBhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5yZWplY3Q/LnBsdXJhbCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|