@pega/angular-sdk-components 0.23.1 → 0.23.2
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/LICENSE +201 -0
- package/README.md +2 -23
- package/SECURITY.md +10 -0
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +2 -2
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +3 -1
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +2 -2
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
- package/esm2022/lib/_components/field/text/text.component.mjs +3 -3
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +3 -3
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +3 -3
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +3 -3
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +3 -3
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +3 -3
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +3 -3
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +3 -3
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +3 -3
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +3 -3
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +3 -3
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +3 -3
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +3 -3
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +11 -4
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +3 -3
- package/fesm2022/pega-angular-sdk-components.mjs +87 -78
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/field/date-time/date-time.component.d.ts +1 -1
- package/package.json +4 -7
- package/_shared/styles.scss +0 -28
|
@@ -566,8 +566,15 @@ export class FileUtilityComponent {
|
|
|
566
566
|
const caseID = this.getCaseID();
|
|
567
567
|
if (caseID) {
|
|
568
568
|
this.lu_bLoading$ = true;
|
|
569
|
-
this.fetchCaseAttachments(caseID)
|
|
569
|
+
this.fetchCaseAttachments(caseID)
|
|
570
|
+
.then(resp => {
|
|
570
571
|
this.handleAttachmentsResponse(resp);
|
|
572
|
+
})
|
|
573
|
+
.catch(err => {
|
|
574
|
+
console.log(err);
|
|
575
|
+
})
|
|
576
|
+
.finally(() => {
|
|
577
|
+
this.lu_bLoading$ = false;
|
|
571
578
|
});
|
|
572
579
|
}
|
|
573
580
|
}
|
|
@@ -620,12 +627,12 @@ export class FileUtilityComponent {
|
|
|
620
627
|
return false;
|
|
621
628
|
}
|
|
622
629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUtilityComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
623
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileUtilityComponent, isStandalone: true, selector: "app-file-utility", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color
|
|
630
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileUtilityComponent, isStandalone: true, selector: "app-file-utility", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatIconButton; }), selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatFormFieldModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatFormField; }), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.MatLabel; }), selector: "mat-label" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatInputModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i6.MatInput; }), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
624
631
|
}
|
|
625
632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUtilityComponent, decorators: [{
|
|
626
633
|
type: Component,
|
|
627
|
-
args: [{ selector: 'app-file-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color
|
|
634
|
+
args: [{ selector: 'app-file-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"] }]
|
|
628
635
|
}], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
|
|
629
636
|
type: Input
|
|
630
637
|
}] } });
|
|
631
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQXlEL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpEeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFD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Q3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUc7UUFDbkIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYztRQUNaLHFGQUFxRjtRQUNyRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUU7WUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0EvdEJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBHQ3RCakMsZzFIQW9HQSw2dENEaEZZLFlBQVksZ05BQUUsZUFBZSw2aEJBQUUsa0JBQWtCLCtaQUFFLGNBQWMseWJBQW1CLHdCQUF3Qjs7NEZBRTNHLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7c0pBRy9HLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCBkb3dubG9hZCBmcm9tICdkb3dubG9hZGpzJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgRmlsZVV0aWxpdHlQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXV0aWxpdHknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11dGlsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11dGlsaXR5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXRpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBhckZ1bGxMaXN0QXR0YWNobWVudHM6IGFueVtdID0gW107XG5cbiAgbHVfbmFtZSQgPSAnJztcbiAgbHVfaWNvbiQgPSAnJztcbiAgbHVfYkxvYWRpbmckID0gZmFsc2U7XG4gIGx1X2NvdW50JCA9IDA7XG4gIGx1X2FyQWN0aW9ucyQ6IGFueVtdID0gW107XG4gIGx1X2FySXRlbXMkOiBhbnkgPSBbXTtcblxuICB2YV9hckl0ZW1zJDogYW55W10gPSBbXTtcblxuICBsdV9vblZpZXdBbGxGdW5jdGlvbjogYW55O1xuXG4gIGJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuICBiU2hvd0xpbmtNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dWaWV3QWxsTW9kYWwkID0gZmFsc2U7XG5cbiAgYXJGaWxlTWFpbkJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBhckZpbGVTZWNvbmRhcnlCdXR0b25zJDogYW55W10gPSBbXTtcblxuICBhckxpbmtNYWluQnV0dG9ucyQ6IGFueVtdID0gW107XG4gIGFyTGlua1NlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuXG4gIGFyRmlsZXMkOiBhbnlbXSA9IFtdO1xuICBhckZpbGVMaXN0JDogYW55W10gPSBbXTtcbiAgcmVtb3ZlRmlsZUZyb21MaXN0JDogYW55O1xuXG4gIGFyTGlua3MkOiBhbnlbXSA9IFtdO1xuICBhckxpbmtzTGlzdCQ6IGFueVtdID0gW107XG4gIHJlbW92ZUxpbmtzRnJvbUxpc3QkOiBhbnk7XG5cbiAgbGlua190aXRsZSQgPSAnJztcbiAgbGlua191cmwkID0gJyc7XG5cbiAgY2xvc2VTdmdJY29uJCA9ICcnO1xuXG4gIGN1cnJlbnRDYXNlSUQgPSAnJztcblxuICBhZGRBdHRhY2htZW50c0FjdGlvbnM6IGFueVtdID0gW1xuICAgIHtcbiAgICAgIHRleHQ6ICdBZGQgZmlsZXMnLFxuICAgICAgaWQ6ICdhZGROZXdGaWxlcycsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLmNyZWF0ZU1vZGFsKCdhZGRMb2NhbEZpbGUnKVxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDogJ0FkZCBsaW5rcycsXG4gICAgICBpZDogJ2FkZE5ld0xpbmtzJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsTGluaycpXG4gICAgfVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEZpbGVVdGlsaXR5UHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLmx1X25hbWUkID0gY29uZmlnUHJvcHMubGFiZWwgPz8gJyc7XG4gICAgdGhpcy5sdV9pY29uJCA9ICdwYXBlci1jbGlwJztcblxuICAgIHRoaXMuY2xvc2VTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RpbWVzJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuXG4gICAgLy8gY29uc3Qgb25WaWV3QWxsQ2FsbGJhY2sgPSAoKSA9PiB0aGlzLm9uVmlld0FsbCh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyk7XG5cbiAgICB0aGlzLmx1X29uVmlld0FsbEZ1bmN0aW9uID0geyBvbkNsaWNrOiB0aGlzLm9uVmlld0FsbC5iaW5kKHRoaXMpIH07XG5cbiAgICB0aGlzLnJlbW92ZUZpbGVGcm9tTGlzdCQgPSB7IG9uQ2xpY2s6IHRoaXMucmVtb3ZlRmlsZUZyb21MaXN0LmJpbmQodGhpcykgfTtcbiAgICB0aGlzLnJlbW92ZUxpbmtzRnJvbUxpc3QkID0geyBvbkNsaWNrOiB0aGlzLnJlbW92ZUxpbmtzRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuXG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGFsQnV0dG9ucygpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAoUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCkgYXMgYW55KS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVyxcbiAgICAgIHRoaXMudXBkYXRlU2VsZi5iaW5kKHRoaXMpLFxuICAgICAgJ2Nhc2VBdHRhY2htZW50c1VwZGF0ZUZyb21DYXNldmlldydcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoXG4gICAgICAoUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCkgYXMgYW55KS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVyxcbiAgICAgICdjYXNlQXR0YWNobWVudHNVcGRhdGVGcm9tQ2FzZXZpZXcnXG4gICAgKTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIGFkZGluZyBhIHByb3BlcnR5IHRvIHRyYWNrIGluIGNvbmZpZ1Byb3BzLCB3aGVuIGV2ZXIgdGhlIGF0dGFjaG1lbnQgZmlsZSBjaGFuZ2VzXG4gICAgLy8gbmVlZCB0byB0cmlnZ2VyIGEgcmVkcmF3XG4gICAgdGhpcy5wQ29ubiQucmVnaXN0ZXJBZGRpdGlvbmFsUHJvcHMoe1xuICAgICAgbGFzdFJlZnJlc2hUaW1lOiBgQFAgJHtQQ29yZS5nZXRDb25zdGFudHMoKS5TVU1NQVJZX09GX0FUVEFDSE1FTlRTX0xBU1RfUkVGUkVTSF9USU1FfWBcbiAgICB9KTtcblxuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYgfHwgdGhpcy5jYXNlSGFzQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICBvbkF0dGFjaEZpbGVzKGZpbGVzKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBjb25zdCB1cGxvYWRlZEZpbGVzID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGF0dGFjaG1lbnRVdGlsc1xuICAgICAgICAudXBsb2FkQXR0YWNobWVudChmaWxlLCB0aGlzLm9uVXBsb2FkUHJvZ3Jlc3MsIHRoaXMuZXJyb3JIYW5kbGVyLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKVxuICAgICAgICAudGhlbigoZmlsZVJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZmlsZVJlc3BvbnNlLnR5cGUgPT09ICdGaWxlJykge1xuICAgICAgICAgICAgKGF0dGFjaG1lbnRVdGlscy5saW5rQXR0YWNobWVudHNUb0Nhc2UoY2FzZUlELCBbZmlsZVJlc3BvbnNlXSwgJ0ZpbGUnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSBhcyBQcm9taXNlPGFueT4pXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBdHRhY2htZW50cygpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IFtdO1xuICB9XG5cbiAgcmVmcmVzaEF0dGFjaG1lbnRzKCkge1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgb25VcGxvYWRQcm9ncmVzcygpIHt9XG5cbiAgZXJyb3JIYW5kbGVyKCkge31cblxuICBvbkF0dGFjaExpbmtzKGxpbmtzKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuXG4gICAgaWYgKGxpbmtzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5rc1RvQXR0YWNoID0gbGlua3MubWFwKGxpbmsgPT4gKHtcbiAgICAgIHR5cGU6ICdVUkwnLFxuICAgICAgY2F0ZWdvcnk6ICdVUkwnLFxuICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgIG5hbWU6IGxpbmsubGlua1RpdGxlXG4gICAgfSkpO1xuXG4gICAgKGF0dGFjaG1lbnRVdGlscy5saW5rQXR0YWNobWVudHNUb0Nhc2UoY2FzZUlELCBsaW5rc1RvQXR0YWNoLCAnVVJMJywgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSkgYXMgUHJvbWlzZTxhbnk+KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hBdHRhY2htZW50cygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH1cblxuICBhZGRBdHRhY2htZW50cyhhdHRzRnJvbVJlc3A6IGFueVtdID0gW10pIHtcbiAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuXG4gICAgYXR0c0Zyb21SZXNwID0gYXR0c0Zyb21SZXNwLm1hcChyZXNwQXR0ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRBdHQgPSB7XG4gICAgICAgIC4uLnJlc3BBdHQsXG4gICAgICAgIG1ldGE6IGAke3Jlc3BBdHQuY2F0ZWdvcnl9IC4gJHt0aGlzLnV0aWxzLmdlbmVyYXRlRGF0ZVRpbWUocmVzcEF0dC5jcmVhdGVUaW1lLCAnRGF0ZVRpbWUtU2luY2UnKX0sICR7cmVzcEF0dC5jcmVhdGVkQnl9YFxuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVkQXR0LnR5cGUgPT09ICdGSUxFJykge1xuICAgICAgICB1cGRhdGVkQXR0Lm5hbWVXaXRoRXh0ID0gdXBkYXRlZEF0dC5maWxlTmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1cGRhdGVkQXR0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF0dHNGcm9tUmVzcDtcbiAgfVxuXG4gIG9uVmlld0FsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IHRydWU7XG5cbiAgICAvLyBhZGQgY2xpY2tBd2F5IGxpc3RlbmVyXG4gICAgLy8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvLyBCZWxvdyBtZXRob2QgaXMgbm90IG5lZWRlZCwgc3RpbGwgaGF2aW5nIGl0IGNvbW1lbnRlZCBpbiBjYXNlIHdlIHdhbnQgaW4gZnV0dXJlXG4gIC8vIF9jbGlja0F3YXkoZXZlbnQ6IGFueSkge1xuICAvLyAgIGxldCBiSW5Qb3BVcCA9IGZhbHNlO1xuXG4gIC8vICAgLy8gcnVuIHRocm91Z2ggbGlzdCBvZiBlbGVtZW50cyBpbiBwYXRoLCBpZiBtZW51IG5vdCBpbiB0aCBwYXRoLCB0aGVuIHdhbnQgdG9cbiAgLy8gICAvLyBoaWRlICh0b2dnbGUpIHRoZSBtZW51XG4gIC8vICAgZm9yIChjb25zdCBpIGluIGV2ZW50LnBhdGgpIHtcbiAgLy8gICAgIGlmIChldmVudC5wYXRoW2ldLmNsYXNzTmFtZSA9PSAncHNkay1tb2RhbC1maWxlLXRvcCcgfHwgZXZlbnQucGF0aFtpXS50YWdOYW1lID09ICdCVVRUT04nKSB7XG4gIC8vICAgICAgIGJJblBvcFVwID0gdHJ1ZTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyAgIGlmICghYkluUG9wVXApIHtcbiAgLy8gICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gZmFsc2U7XG5cbiAgLy8gICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIF9jbG9zZVZpZXdBbGwoKSB7XG4gICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICAgIC8vIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICB9XG5cbiAgcmVtb3ZlRmlsZUZyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGlmIChpdGVtICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGFyRmlsZUxpc3QgPSB0aGlzLmFyRmlsZUxpc3QkO1xuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbS5pZDtcblxuICAgICAgZm9yIChsZXQgZmlsZUluZGV4ID0gMDsgZmlsZUluZGV4IDwgYXJGaWxlTGlzdC5sZW5ndGg7IGZpbGVJbmRleCsrKSB7XG4gICAgICAgIGlmIChhckZpbGVMaXN0W2ZpbGVJbmRleF0uaWQgPT0gaXRlbUlkKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGxpc3QgYW5kIHJlZHJhd1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBhckZpbGVMaXN0LnNwbGljZShmaWxlSW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlTGlua3NGcm9tTGlzdChpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBsb2NhbExpbmtzTGlzdCA9IHRoaXMuYXJMaW5rc0xpc3QkLnNsaWNlKCk7XG5cbiAgICBpZiAoaXRlbSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmlkO1xuXG4gICAgICBmb3IgKGxldCBsaW5rSW5kZXggPSAwOyBsaW5rSW5kZXggPCBsb2NhbExpbmtzTGlzdC5sZW5ndGg7IGxpbmtJbmRleCsrKSB7XG4gICAgICAgIGlmIChsb2NhbExpbmtzTGlzdFtsaW5rSW5kZXhdLmlkID09IGl0ZW1JZCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZmlsZSBmcm9tIHRoZSBsaXN0IGFuZCByZWRyYXdcbiAgICAgICAgICBsb2NhbExpbmtzTGlzdC5zcGxpY2UobGlua0luZGV4LCAxKTtcblxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFyTGlua3NMaXN0JCA9IGxvY2FsTGlua3NMaXN0LnNsaWNlKCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzID0gKHsgYXR0LCBjYW5jZWxGaWxlLCBkb3dubG9hZEZpbGUsIGRlbGV0ZUZpbGUsIHJlbW92ZUZpbGUgfSkgPT4ge1xuICAgIGxldCBhY3Rpb25zO1xuICAgIGxldCBpc0Rvd25sb2FkYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKGF0dC5wcm9ncmVzcyAmJiBhdHQucHJvZ3Jlc3MgIT09IDEwMCkge1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBgQ2FuY2VsLSR7YXR0LklEfWAsXG4gICAgICAgICAgdGV4dDogJ0NhbmNlbCcsXG4gICAgICAgICAgaWNvbjogJ3RpbWVzJyxcbiAgICAgICAgICBvbkNsaWNrOiBjYW5jZWxGaWxlXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChhdHQubGlua3MpIHtcbiAgICAgIGNvbnN0IGlzRmlsZSA9IGF0dC50eXBlID09PSAnRklMRSc7XG4gICAgICBjb25zdCBJRCA9IGF0dC5JRC5yZXBsYWNlKC9cXHMvZ2ksICcnKTtcbiAgICAgIGNvbnN0IGFjdGlvbnNNYXAgPSBuZXcgTWFwKFtcbiAgICAgICAgW1xuICAgICAgICAgICdkb3dubG9hZCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBkb3dubG9hZC0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiBpc0ZpbGUgPyAnRG93bmxvYWQnIDogJ09wZW4nLFxuICAgICAgICAgICAgaWNvbjogaXNGaWxlID8gJ2Rvd25sb2FkJyA6ICdvcGVuJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGRvd25sb2FkRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICdkZWxldGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgRGVsZXRlLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGRlbGV0ZUZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIF0pO1xuICAgICAgYWN0aW9ucyA9IFtdO1xuICAgICAgYWN0aW9uc01hcC5mb3JFYWNoKChhY3Rpb24sIGFjdGlvbktleSkgPT4ge1xuICAgICAgICBpZiAoYXR0LmxpbmtzW2FjdGlvbktleV0pIHtcbiAgICAgICAgICBhY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICBpc0Rvd25sb2FkYWJsZSA9IGF0dC5saW5rcy5kb3dubG9hZDtcbiAgICB9IGVsc2UgaWYgKGF0dC5lcnJvcikge1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBgUmVtb3ZlLSR7YXR0LklEfWAsXG4gICAgICAgICAgdGV4dDogJ1JlbW92ZScsXG4gICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICBvbkNsaWNrOiByZW1vdmVGaWxlXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBhdHQuSUQsXG4gICAgICB2aXN1YWw6IHtcbiAgICAgICAgaWNvbjogdGhpcy51dGlscy5nZXRJY29uRm9yQXR0YWNobWVudChhdHQpLFxuICAgICAgICBwcm9ncmVzczogYXR0LnByb2dyZXNzID09IDEwMCA/IHVuZGVmaW5lZCA6IGF0dC5wcm9ncmVzc1xuICAgICAgfSxcbiAgICAgIHByaW1hcnk6IHtcbiAgICAgICAgdHlwZTogYXR0LnR5cGUsXG4gICAgICAgIG5hbWU6IGF0dC5uYW1lLFxuICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICBjbGljazogcmVtb3ZlRmlsZVxuICAgICAgfSxcbiAgICAgIHNlY29uZGFyeToge1xuICAgICAgICB0ZXh0OiBhdHQubWV0YVxuICAgICAgfSxcbiAgICAgIGFjdGlvbnNcbiAgICB9O1xuICB9O1xuXG4gIGdldExpc3RVdGlsaXR5SXRlbVByb3BzID0gKHsgYXR0LCBjYW5jZWxGaWxlLCBkb3dubG9hZEZpbGUsIGRlbGV0ZUZpbGUsIHJlbW92ZUZpbGUgfSkgPT4ge1xuICAgIGxldCBhY3Rpb25zO1xuICAgIGxldCBpc0Rvd25sb2FkYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKGF0dC5wcm9ncmVzcyAmJiBhdHQucHJvZ3Jlc3MgIT09IDEwMCkge1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBgQ2FuY2VsLSR7YXR0LklEfWAsXG4gICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0NhbmNlbCcsICcnLCAnJyksXG4gICAgICAgICAgaWNvbjogJ3RpbWVzJyxcbiAgICAgICAgICBvbkNsaWNrOiBjYW5jZWxGaWxlXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChhdHQubGlua3MpIHtcbiAgICAgIGNvbnN0IGlzRmlsZSA9IGF0dC50eXBlID09PSAnRklMRSc7XG4gICAgICBjb25zdCBJRCA9IGF0dC5JRC5yZXBsYWNlKC9cXHMvZ2ksICcnKTtcbiAgICAgIGNvbnN0IGFjdGlvbnNNYXAgPSBuZXcgTWFwKFtcbiAgICAgICAgW1xuICAgICAgICAgICdkb3dubG9hZCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBkb3dubG9hZC0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiBpc0ZpbGUgPyB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRG93bmxvYWQnLCAnJywgJycpIDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ09wZW4nLCAnJywgJycpLFxuICAgICAgICAgICAgaWNvbjogaXNGaWxlID8gJ2Rvd25sb2FkJyA6ICdvcGVuJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGRvd25sb2FkRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICdkZWxldGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgRGVsZXRlLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEZWxldGUnLCAnJywgJycpLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGRlbGV0ZUZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIF0pO1xuICAgICAgYWN0aW9ucyA9IFtdO1xuICAgICAgYWN0aW9uc01hcC5mb3JFYWNoKChhY3Rpb24sIGFjdGlvbktleSkgPT4ge1xuICAgICAgICBpZiAoYXR0LmxpbmtzW2FjdGlvbktleV0pIHtcbiAgICAgICAgICBhY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICBpc0Rvd25sb2FkYWJsZSA9IGF0dC5saW5rcy5kb3dubG9hZDtcbiAgICB9IGVsc2UgaWYgKGF0dC5lcnJvcikge1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBgUmVtb3ZlLSR7YXR0LklEfWAsXG4gICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ1JlbW92ZScsICcnLCAnJyksXG4gICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICBvbkNsaWNrOiByZW1vdmVGaWxlXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBhdHQuSUQsXG4gICAgICB2aXN1YWw6IHtcbiAgICAgICAgaWNvbjogdGhpcy51dGlscy5nZXRJY29uRm9yQXR0YWNobWVudChhdHQpLFxuICAgICAgICBwcm9ncmVzczogYXR0LnByb2dyZXNzID09IDEwMCA/IHVuZGVmaW5lZCA6IGF0dC5wcm9ncmVzc1xuICAgICAgfSxcbiAgICAgIHByaW1hcnk6IHtcbiAgICAgICAgdHlwZTogYXR0LnR5cGUsXG4gICAgICAgIG5hbWU6IGF0dC5uYW1lLFxuICAgICAgICBpY29uOiAnb3BlbicsXG4gICAgICAgIGNsaWNrOiBkb3dubG9hZEZpbGVcbiAgICAgIH0sXG4gICAgICBzZWNvbmRhcnk6IHtcbiAgICAgICAgdGV4dDogYXR0Lm1ldGFcbiAgICAgIH0sXG4gICAgICBhY3Rpb25zXG4gICAgfTtcbiAgfTtcblxuICBfYWRkTGluaygpIHtcbiAgICAvLyBjb3B5IGxpc3QgbG9jYWxseVxuICAgIGNvbnN0IGxvY2FsTGlzdCA9IHRoaXMuYXJMaW5rc0xpc3QkLnNsaWNlKCk7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmxpbmtfdXJsJDtcblxuICAgIGlmICghL14oaHR0cHxodHRwcyk6XFwvXFwvLy50ZXN0KHRoaXMubGlua191cmwkKSkge1xuICAgICAgdGhpcy5saW5rX3VybCQgPSBgaHR0cDovLyR7dGhpcy5saW5rX3VybCR9YDtcbiAgICB9XG5cbiAgICAvLyBsaXN0IGZvciBkaXNwbGF5XG4gICAgbGV0IG9MaW5rOiBhbnkgPSB7fTtcbiAgICBvTGluay5pY29uID0gJ2NoYWluJztcblxuICAgIG9MaW5rLklEID0gYCR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YDtcblxuICAgIG9MaW5rID0gdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICBhdHQ6IG9MaW5rLFxuICAgICAgZG93bmxvYWRGaWxlOiBudWxsLFxuICAgICAgY2FuY2VsRmlsZTogbnVsbCxcbiAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICByZW1vdmVGaWxlOiBudWxsXG4gICAgfSk7XG5cbiAgICBvTGluay50eXBlID0gJ1VSTCc7XG4gICAgb0xpbmsucHJpbWFyeS50eXBlID0gb0xpbmsudHlwZTtcbiAgICBvTGluay52aXN1YWwuaWNvbiA9ICdjaGFpbic7XG4gICAgb0xpbmsucHJpbWFyeS5uYW1lID0gdGhpcy5saW5rX3RpdGxlJDtcbiAgICBvTGluay5wcmltYXJ5Lmljb24gPSAnb3Blbic7XG4gICAgb0xpbmsuc2Vjb25kYXJ5LnRleHQgPSB1cmw7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gbmVlZCB0byBjcmVhdGUgYSBuZXcgYXJyYXkgb3Igc3VtbWFyeSBsaXN0IHdvbid0IGRldGVjdCBjaGFuZ2VzXG4gICAgICB0aGlzLmFyTGlua3NMaXN0JCA9IGxvY2FsTGlzdC5zbGljZSgpO1xuICAgICAgdGhpcy5hckxpbmtzTGlzdCQucHVzaChvTGluayk7XG5cbiAgICAgIC8vIGxpc3QgZm9yIGFjdHVhbGx5IGF0dGFjaG1lbnRzXG4gICAgICBjb25zdCBsaW5rOiBhbnkgPSB7fTtcbiAgICAgIGxpbmsuaWQgPSBvTGluay5pZDtcbiAgICAgIGxpbmsubGlua1RpdGxlID0gdGhpcy5saW5rX3RpdGxlJDtcbiAgICAgIGxpbmsudHlwZSA9IG9MaW5rLnR5cGU7XG4gICAgICBsaW5rLnVybCA9IHVybDtcblxuICAgICAgdGhpcy5hckxpbmtzJC5wdXNoKGxpbmspO1xuXG4gICAgICAvLyBjbGVhciB2YWx1ZXNcbiAgICAgIHRoaXMubGlua190aXRsZSQgPSAnJztcbiAgICAgIHRoaXMubGlua191cmwkID0gJyc7XG4gICAgfSk7XG4gIH1cblxuICBfY2hhbmdlVGl0bGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua190aXRsZSQgPSBldmVudC5zcmNFbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgX2NoYW5nZVVybChldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3VybCQgPSBldmVudC5zcmNFbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgZG93bmxvYWRGaWxlKGF0dDogYW55KSB7XG4gICAgY29uc3QgYXR0YWNoVXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICBjb25zdCB7IElELCBuYW1lLCBleHRlbnNpb24sIHR5cGUgfSA9IGF0dDtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgIGF0dGFjaFV0aWxzXG4gICAgICAvLyBAdHMtaWdub3JlIC0gM3JkIHBhcmFtZXRlciBcInJlc3BvbnNlRW5jb2RpbmdcIiBpcyBvcHRpb25hbFxuICAgICAgLmRvd25sb2FkQXR0YWNobWVudChJRCwgY29udGV4dClcbiAgICAgIC50aGVuKChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdGSUxFJykge1xuICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkKGNvbnRlbnQuZGF0YSwgbmFtZSwgZXh0ZW5zaW9uKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnVVJMJykge1xuICAgICAgICAgIGxldCB7IGRhdGEgfSA9IGNvbnRlbnQ7XG4gICAgICAgICAgaWYgKCEvXihodHRwfGh0dHBzKTpcXC9cXC8vLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgICAgIGRhdGEgPSBgLy8ke2RhdGF9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2luZG93Lm9wZW4oY29udGVudC5kYXRhLCAnX2JsYW5rJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cblxuICBmaWxlRG93bmxvYWQgPSAoZGF0YSwgZmlsZU5hbWUsIGV4dCkgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBleHQgPyBgJHtmaWxlTmFtZX0uJHtleHR9YCA6IGZpbGVOYW1lO1xuICAgIGRvd25sb2FkKGF0b2IoZGF0YSksIGZpbGUpO1xuICB9O1xuXG4gIGNhbmNlbEZpbGUoKSB7XG4gICAgYWxlcnQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgZGVsZXRlRmlsZShhdHQ6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgYXR0YWNoVXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAgIGNvbnN0IHsgSUQgfSA9IGF0dDtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuXG4gICAgICBhdHRhY2hVdGlsc1xuICAgICAgICAuZGVsZXRlQXR0YWNobWVudChJRCwgY29udGV4dClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgICAgICAgIC8vIGxldCBuZXdBdHRhY2htZW50cztcbiAgICAgICAgICAvLyBzZXRBdHRhY2htZW50cygoY3VycmVudCkgPT4ge1xuICAgICAgICAgIC8vICAgbmV3QXR0YWNobWVudHMgPSBjdXJyZW50LmZpbHRlcigoZmlsZSkgPT4gZmlsZS5JRCAhPT0gSUQpO1xuICAgICAgICAgIC8vICAgcmV0dXJuIG5ld0F0dGFjaG1lbnRzO1xuICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgIC8vIGlmIChjYWxsYmFja0ZuKSB7XG4gICAgICAgICAgLy8gICBjYWxsYmFja0ZuKG5ld0F0dGFjaG1lbnRzKTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUoKSB7XG4gICAgYWxlcnQoJ3JlbW92ZScpO1xuICB9XG5cbiAgcmVtb3ZlTmV3RmlsZSgpIHtcbiAgICBhbGVydCgncmVtb3ZlJyk7XG4gIH1cblxuICBjcmVhdGVNb2RhbChtb2RhbFR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAobW9kYWxUeXBlKSB7XG4gICAgICBjYXNlICdhZGRMb2NhbEZpbGUnOlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYlNob3dGaWxlTW9kYWwkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZGRMb2NhbExpbmsnOlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlTW9kYWxCdXR0b25zKCkge1xuICAgIHRoaXMuYXJGaWxlTWFpbkJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2F0dGFjaCcsIGpzQWN0aW9uOiAnYXR0YWNoRmlsZXMnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQXR0YWNoIGZpbGVzJywgJycsICcnKSB9KTtcbiAgICB0aGlzLmFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2NhbmNlbCcsIGpzQWN0aW9uOiAnY2FuY2VsJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0NhbmNlbCcsICcnLCAnJykgfSk7XG5cbiAgICB0aGlzLmFyTGlua01haW5CdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdhdHRhY2gnLCBqc0FjdGlvbjogJ2F0dGFjaExpbmtzJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaCBsaW5rcycsICcnLCAnJykgfSk7XG4gICAgdGhpcy5hckxpbmtTZWNvbmRhcnlCdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdjYW5jZWwnLCBqc0FjdGlvbjogJ2NhbmNlbCcsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdDYW5jZWwnLCAnJywgJycpIH0pO1xuICB9XG5cbiAgdXBsb2FkTXlGaWxlcygkZXZlbnQpIHtcbiAgICAvLyBhbGVydCgkZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTsgLy8gb3V0cHV0cyB0aGUgZmlyc3QgZmlsZVxuICAgIHRoaXMuYXJGaWxlcyQgPSB0aGlzLmdldEZpbGVzKCRldmVudC50YXJnZXQuZmlsZXMpO1xuXG4gICAgLy8gY29udmVydCBGaWxlTGlzdCB0byBhbiBhcnJheVxuICAgIGNvbnN0IG15RmlsZXMgPSBBcnJheS5mcm9tKHRoaXMuYXJGaWxlcyQpO1xuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IG15RmlsZXMubWFwKGF0dCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICAgIGF0dCxcbiAgICAgICAgZG93bmxvYWRGaWxlOiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kb3dubG9hZEZpbGUoYXR0KSA6IG51bGwsXG4gICAgICAgIGNhbmNlbEZpbGU6IGF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuY2FuY2VsRmlsZSgpIDogbnVsbCxcbiAgICAgICAgZGVsZXRlRmlsZTogIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZGVsZXRlRmlsZShhdHQpIDogbnVsbCxcbiAgICAgICAgcmVtb3ZlRmlsZTogYXR0LmVycm9yID8gKCkgPT4gdGhpcy5yZW1vdmVOZXdGaWxlKCkgOiBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZpbGVzKGFyRmlsZXM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNldE5ld0ZpbGVzKGFyRmlsZXMpO1xuICB9XG5cbiAgc2V0TmV3RmlsZXMoYXJGaWxlcykge1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGFyRmlsZXMpIHtcbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZU1heFNpemUoZmlsZSwgNSkpIHtcbiAgICAgICAgZmlsZS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZpbGUubWV0YSA9ICdGaWxlIGlzIHRvbyBiaWcuIE1heCBhbGxvd2VkIHNpemUgaXMgNU1CLic7XG4gICAgICB9XG4gICAgICBmaWxlLm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgZmlsZS5pY29uID0gdGhpcy51dGlscy5nZXRJY29uRnJvbUZpbGVUeXBlKGZpbGUudHlwZSk7XG4gICAgICBmaWxlLklEID0gYCR7bmV3IERhdGUoKS5nZXRUaW1lKCl9SSR7aW5kZXh9YDtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyRmlsZXM7XG4gIH1cblxuICB2YWxpZGF0ZU1heFNpemUoZmlsZU9iaiwgbWF4U2l6ZUluTUIpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IChmaWxlT2JqLnNpemUgLyAxMDQ4NTc2KS50b0ZpeGVkKDIpO1xuICAgIHJldHVybiBmaWxlU2l6ZSA8IG1heFNpemVJbk1CO1xuICB9XG5cbiAgb25GaWxlQWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIC8vIG1vZGFsIGJ1dHRvbnNcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xuICAgICAgY2FzZSAnY2FuY2VsJzpcbiAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0RmlsZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdHRhY2hGaWxlcyc6XG4gICAgICAgIHRoaXMuYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25BdHRhY2hGaWxlcyh0aGlzLmFyRmlsZXMkKTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0RmlsZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvbkxpbmtBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRMaW5rcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2F0dGFjaExpbmtzJzpcbiAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkF0dGFjaExpbmtzKHRoaXMuYXJMaW5rcyQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRMaW5rcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyT3V0RmlsZXMoKSB7XG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IFtdO1xuICAgIHRoaXMuYXJGaWxlcyQgPSBbXTtcbiAgfVxuXG4gIGNsZWFyT3V0TGlua3MoKSB7XG4gICAgdGhpcy5hckxpbmtzTGlzdCQgPSBbXTtcbiAgICB0aGlzLmFyTGlua3MkID0gW107XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9ICcnO1xuICAgIHRoaXMubGlua191cmwkID0gJyc7XG4gIH1cblxuICBhZGRBTGluaygpIHt9XG5cbiAgX2ZpZWxkT25DaGFuZ2VMaW5rKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgX2ZpZWxkT25DaGFuZ2VVUkwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua191cmwkID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLmdldENhc2VJRCgpO1xuXG4gICAgaWYgKGNhc2VJRCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuXG4gICAgICB0aGlzLmZldGNoQ2FzZUF0dGFjaG1lbnRzKGNhc2VJRCkudGhlbihyZXNwID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVBdHRhY2htZW50c1Jlc3BvbnNlKHJlc3ApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2FzZUlEKCkge1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICByZXR1cm4gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCkgfHwgJyc7XG4gIH1cblxuICBmZXRjaENhc2VBdHRhY2htZW50cyhjYXNlSUQpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICByZXR1cm4gYXR0YWNobWVudFV0aWxzLmdldENhc2VBdHRhY2htZW50cyhjYXNlSUQsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpO1xuICB9XG5cbiAgaGFuZGxlQXR0YWNobWVudHNSZXNwb25zZShyZXNwKSB7XG4gICAgdGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMgPSB0aGlzLmFkZEF0dGFjaG1lbnRzKHJlc3ApO1xuICAgIHRoaXMubHVfY291bnQkID0gdGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMubGVuZ3RoO1xuICAgIHRoaXMubHVfYXJBY3Rpb25zJCA9IHRoaXMuYWRkQXR0YWNobWVudHNBY3Rpb25zO1xuXG4gICAgdGhpcy5sdV9hckl0ZW1zJCA9IHRoaXMuZ2V0VXRpbGl0eUl0ZW1zKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzLnNsaWNlKDAsIDMpKTtcbiAgICB0aGlzLnZhX2FySXRlbXMkID0gdGhpcy5nZXRVdGlsaXR5SXRlbXModGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMpO1xuICB9XG5cbiAgZ2V0VXRpbGl0eUl0ZW1zKGF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuIGF0dGFjaG1lbnRzLm1hcCh0aGlzLm1hcEF0dGFjaG1lbnRUb1V0aWxpdHlJdGVtLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbWFwQXR0YWNobWVudFRvVXRpbGl0eUl0ZW0oYXR0KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgYXR0LFxuICAgICAgZG93bmxvYWRGaWxlOiB0aGlzLmdldERvd25sb2FkRnVuY3Rpb24oYXR0KSxcbiAgICAgIGNhbmNlbEZpbGU6IHRoaXMuZ2V0Q2FuY2VsRnVuY3Rpb24oYXR0KSxcbiAgICAgIGRlbGV0ZUZpbGU6IHRoaXMuZ2V0RGVsZXRlRnVuY3Rpb24oYXR0KSxcbiAgICAgIHJlbW92ZUZpbGU6IHRoaXMuZ2V0UmVtb3ZlRnVuY3Rpb24oYXR0KVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RG93bmxvYWRGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZG93bmxvYWRGaWxlKGF0dCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q2FuY2VsRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuIGF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuY2FuY2VsRmlsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldERlbGV0ZUZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kZWxldGVGaWxlKGF0dCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0UmVtb3ZlRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuIGF0dC5lcnJvciA/ICgpID0+IHRoaXMucmVtb3ZlRmlsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGNhc2VIYXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcbiAgICBpZiAodGhpcy5jdXJyZW50Q2FzZUlEICE9PSBjYXNlSUQpIHtcbiAgICAgIHRoaXMuY3VycmVudENhc2VJRCA9IGNhc2VJRDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiTGlzdFV0aWxpdHlcIlxuICAgIFtwcm9wc109XCJ7XG4gICAgICBuYW1lJDogbHVfbmFtZSQsXG4gICAgICBpY29uJDogbHVfaWNvbiQsXG4gICAgICBiTG9hZGluZyQ6IGx1X2JMb2FkaW5nJCxcbiAgICAgIGNvdW50JDogbHVfY291bnQkLFxuICAgICAgYXJBY3Rpb25zJDogbHVfYXJBY3Rpb25zJCxcbiAgICAgIGFySXRlbXMkOiBsdV9hckl0ZW1zJCxcbiAgICAgIG9uVmlld0FsbCQ6IGx1X29uVmlld0FsbEZ1bmN0aW9uLFxuICAgICAgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUZpbGVGcm9tTGlzdCRcbiAgICB9XCJcbiAgPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dGaWxlTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxvY2FsIGZpbGVzJywgJycsICcnKSB9fTwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS1zZWxlY3RvclwiPlxuICAgICAgICA8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgI3VwbG9hZGVyIChjaGFuZ2UpPVwidXBsb2FkTXlGaWxlcygkZXZlbnQpXCIgLz5cblxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBsb2FkZXIuY2xpY2soKVwiPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnVXBsb2FkIGZpbGUocyknLCAnJywgJycpIH19PC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIlN1bW1hcnlMaXN0XCJcbiAgICAgICAgW3Byb3BzXT1cInsgYXJJdGVtcyQ6IGFyRmlsZUxpc3QkLCBtZW51SWNvbk92ZXJyaWRlJDogJ3RyYXNoJywgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUZpbGVGcm9tTGlzdCQgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBY3Rpb25CdXR0b25zXCJcbiAgICAgIFtwcm9wc109XCJ7IGFyTWFpbkJ1dHRvbnMkOiBhckZpbGVNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25GaWxlQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93TGlua01vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLXRvcFwiPlxuICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0FkZCBsb2NhbCBsaW5rJywgJycsICcnKSB9fTwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1lbnRyeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rcy1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1saW5rcy10d28tY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWRhdGFcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MaW5rIHRpdGxlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcmVxdWlyZWQ9XCJ0cnVlXCIgKGNoYW5nZSk9XCJfZmllbGRPbkNoYW5nZUxpbmsoJGV2ZW50KVwiIFt2YWx1ZV09XCJsaW5rX3RpdGxlJFwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZGF0YVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVSTDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIHJlcXVpcmVkPVwidHJ1ZVwiIChjaGFuZ2UpPVwiX2ZpZWxkT25DaGFuZ2VVUkwoJGV2ZW50KVwiIFt2YWx1ZV09XCJsaW5rX3VybCRcIiAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWFkZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiX2FkZExpbmsoKVwiPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIExpbmsnLCAnJywgJycpIH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgbmFtZT1cIlN1bW1hcnlMaXN0XCJcbiAgICAgICAgICBbcHJvcHNdPVwieyBhckl0ZW1zJDogYXJMaW5rc0xpc3QkLCBtZW51SWNvbk92ZXJyaWRlJDogJ3RyYXNoJywgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUxpbmtzRnJvbUxpc3QkIH1cIlxuICAgICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFjdGlvbkJ1dHRvbnNcIlxuICAgICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQ6IGFyTGlua01haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJDogYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkxpbmtBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dWaWV3QWxsTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdmlldy1hbGwtaGVhZGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2htZW50cycsICcnLCAnJykgfX08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiX2Nsb3NlVmlld0FsbCgpXCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBjbG9zZVN2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay12aWV3LWFsbC1ib2R5XCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiU3VtbWFyeUxpc3RcIiBbcHJvcHNdPVwieyBhckl0ZW1zJDogdmFfYXJJdGVtcyQsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVMaW5rc0Zyb21MaXN0JCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
638
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQXlEL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpEeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFD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QUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztzSkFHL0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gJ2Rvd25sb2FkanMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGaWxlVXRpbGl0eVByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBsYWJlbD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXRpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVdGlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGFyRnVsbExpc3RBdHRhY2htZW50czogYW55W10gPSBbXTtcblxuICBsdV9uYW1lJCA9ICcnO1xuICBsdV9pY29uJCA9ICcnO1xuICBsdV9iTG9hZGluZyQgPSBmYWxzZTtcbiAgbHVfY291bnQkID0gMDtcbiAgbHVfYXJBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgbHVfYXJJdGVtcyQ6IGFueSA9IFtdO1xuXG4gIHZhX2FySXRlbXMkOiBhbnlbXSA9IFtdO1xuXG4gIGx1X29uVmlld0FsbEZ1bmN0aW9uOiBhbnk7XG5cbiAgYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG4gIGJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICBiU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICBhckZpbGVNYWluQnV0dG9ucyQ6IGFueVtdID0gW107XG4gIGFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuXG4gIGFyTGlua01haW5CdXR0b25zJDogYW55W10gPSBbXTtcbiAgYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdID0gW107XG5cbiAgYXJGaWxlcyQ6IGFueVtdID0gW107XG4gIGFyRmlsZUxpc3QkOiBhbnlbXSA9IFtdO1xuICByZW1vdmVGaWxlRnJvbUxpc3QkOiBhbnk7XG5cbiAgYXJMaW5rcyQ6IGFueVtdID0gW107XG4gIGFyTGlua3NMaXN0JDogYW55W10gPSBbXTtcbiAgcmVtb3ZlTGlua3NGcm9tTGlzdCQ6IGFueTtcblxuICBsaW5rX3RpdGxlJCA9ICcnO1xuICBsaW5rX3VybCQgPSAnJztcblxuICBjbG9zZVN2Z0ljb24kID0gJyc7XG5cbiAgY3VycmVudENhc2VJRCA9ICcnO1xuXG4gIGFkZEF0dGFjaG1lbnRzQWN0aW9uczogYW55W10gPSBbXG4gICAge1xuICAgICAgdGV4dDogJ0FkZCBmaWxlcycsXG4gICAgICBpZDogJ2FkZE5ld0ZpbGVzJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsRmlsZScpXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiAnQWRkIGxpbmtzJyxcbiAgICAgIGlkOiAnYWRkTmV3TGlua3MnLFxuICAgICAgb25DbGljazogKCkgPT4gdGhpcy5jcmVhdGVNb2RhbCgnYWRkTG9jYWxMaW5rJylcbiAgICB9XG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICBjb25zdCBjb25maWdQcm9wczogRmlsZVV0aWxpdHlQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcblxuICAgIHRoaXMubHVfbmFtZSQgPSBjb25maWdQcm9wcy5sYWJlbCA/PyAnJztcbiAgICB0aGlzLmx1X2ljb24kID0gJ3BhcGVyLWNsaXAnO1xuXG4gICAgdGhpcy5jbG9zZVN2Z0ljb24kID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGltZXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG5cbiAgICAvLyBjb25zdCBvblZpZXdBbGxDYWxsYmFjayA9ICgpID0+IHRoaXMub25WaWV3QWxsKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzKTtcblxuICAgIHRoaXMubHVfb25WaWV3QWxsRnVuY3Rpb24gPSB7IG9uQ2xpY2s6IHRoaXMub25WaWV3QWxsLmJpbmQodGhpcykgfTtcblxuICAgIHRoaXMucmVtb3ZlRmlsZUZyb21MaXN0JCA9IHsgb25DbGljazogdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuICAgIHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdCQgPSB7IG9uQ2xpY2s6IHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdC5iaW5kKHRoaXMpIH07XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcblxuICAgIHRoaXMuY3JlYXRlTW9kYWxCdXR0b25zKCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKSBhcyBhbnkpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLFxuICAgICAgdGhpcy51cGRhdGVTZWxmLmJpbmQodGhpcyksXG4gICAgICAnY2FzZUF0dGFjaG1lbnRzVXBkYXRlRnJvbUNhc2V2aWV3J1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShcbiAgICAgIChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKSBhcyBhbnkpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLFxuICAgICAgJ2Nhc2VBdHRhY2htZW50c1VwZGF0ZUZyb21DYXNldmlldydcbiAgICApO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gYWRkaW5nIGEgcHJvcGVydHkgdG8gdHJhY2sgaW4gY29uZmlnUHJvcHMsIHdoZW4gZXZlciB0aGUgYXR0YWNobWVudCBmaWxlIGNoYW5nZXNcbiAgICAvLyBuZWVkIHRvIHRyaWdnZXIgYSByZWRyYXdcbiAgICB0aGlzLnBDb25uJC5yZWdpc3RlckFkZGl0aW9uYWxQcm9wcyh7XG4gICAgICBsYXN0UmVmcmVzaFRpbWU6IGBAUCAke1BDb3JlLmdldENvbnN0YW50cygpLlNVTU1BUllfT0ZfQVRUQUNITUVOVFNfTEFTVF9SRUZSRVNIX1RJTUV9YFxuICAgIH0pO1xuXG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZiB8fCB0aGlzLmNhc2VIYXNDaGFuZ2VkKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoRmlsZXMoZmlsZXMpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG5cbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgYXR0YWNobWVudFV0aWxzXG4gICAgICAgIC51cGxvYWRBdHRhY2htZW50KGZpbGUsIHRoaXMub25VcGxvYWRQcm9ncmVzcywgdGhpcy5lcnJvckhhbmRsZXIsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpXG4gICAgICAgIC50aGVuKChmaWxlUmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChmaWxlUmVzcG9uc2UudHlwZSA9PT0gJ0ZpbGUnKSB7XG4gICAgICAgICAgICAoYXR0YWNobWVudFV0aWxzLmxpbmtBdHRhY2htZW50c1RvQ2FzZShjYXNlSUQsIFtmaWxlUmVzcG9uc2VdLCAnRmlsZScsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpIGFzIFByb21pc2U8YW55PilcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEF0dGFjaG1lbnRzKCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gW107XG4gIH1cblxuICByZWZyZXNoQXR0YWNobWVudHMoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gIH1cblxuICBvblVwbG9hZFByb2dyZXNzKCkge31cblxuICBlcnJvckhhbmRsZXIoKSB7fVxuXG4gIG9uQXR0YWNoTGlua3MobGlua3MpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG5cbiAgICBpZiAobGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtzVG9BdHRhY2ggPSBsaW5rcy5tYXAobGluayA9PiAoe1xuICAgICAgdHlwZTogJ1VSTCcsXG4gICAgICBjYXRlZ29yeTogJ1VSTCcsXG4gICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgbmFtZTogbGluay5saW5rVGl0bGVcbiAgICB9KSk7XG5cbiAgICAoYXR0YWNobWVudFV0aWxzLmxpbmtBdHRhY2htZW50c1RvQ2FzZShjYXNlSUQsIGxpbmtzVG9BdHRhY2gsICdVUkwnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSBhcyBQcm9taXNlPGFueT4pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaEF0dGFjaG1lbnRzKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfVxuXG4gIGFkZEF0dGFjaG1lbnRzKGF0dHNGcm9tUmVzcDogYW55W10gPSBbXSkge1xuICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG5cbiAgICBhdHRzRnJvbVJlc3AgPSBhdHRzRnJvbVJlc3AubWFwKHJlc3BBdHQgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEF0dCA9IHtcbiAgICAgICAgLi4ucmVzcEF0dCxcbiAgICAgICAgbWV0YTogYCR7cmVzcEF0dC5jYXRlZ29yeX0gLiAke3RoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShyZXNwQXR0LmNyZWF0ZVRpbWUsICdEYXRlVGltZS1TaW5jZScpfSwgJHtyZXNwQXR0LmNyZWF0ZWRCeX1gXG4gICAgICB9O1xuICAgICAgaWYgKHVwZGF0ZWRBdHQudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgIHVwZGF0ZWRBdHQubmFtZVdpdGhFeHQgPSB1cGRhdGVkQXR0LmZpbGVOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZWRBdHQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0c0Zyb21SZXNwO1xuICB9XG5cbiAgb25WaWV3QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gdHJ1ZTtcblxuICAgIC8vIGFkZCBjbGlja0F3YXkgbGlzdGVuZXJcbiAgICAvLyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8vIEJlbG93IG1ldGhvZCBpcyBub3QgbmVlZGVkLCBzdGlsbCBoYXZpbmcgaXQgY29tbWVudGVkIGluIGNhc2Ugd2Ugd2FudCBpbiBmdXR1cmVcbiAgLy8gX2NsaWNrQXdheShldmVudDogYW55KSB7XG4gIC8vICAgbGV0IGJJblBvcFVwID0gZmFsc2U7XG5cbiAgLy8gICAvLyBydW4gdGhyb3VnaCBsaXN0IG9mIGVsZW1lbnRzIGluIHBhdGgsIGlmIG1lbnUgbm90IGluIHRoIHBhdGgsIHRoZW4gd2FudCB0b1xuICAvLyAgIC8vIGhpZGUgKHRvZ2dsZSkgdGhlIG1lbnVcbiAgLy8gICBmb3IgKGNvbnN0IGkgaW4gZXZlbnQucGF0aCkge1xuICAvLyAgICAgaWYgKGV2ZW50LnBhdGhbaV0uY2xhc3NOYW1lID09ICdwc2RrLW1vZGFsLWZpbGUtdG9wJyB8fCBldmVudC5wYXRoW2ldLnRhZ05hbWUgPT0gJ0JVVFRPTicpIHtcbiAgLy8gICAgICAgYkluUG9wVXAgPSB0cnVlO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFiSW5Qb3BVcCkge1xuICAvLyAgICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICAvLyAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgX2Nsb3NlVmlld0FsbCgpIHtcbiAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIH1cblxuICByZW1vdmVGaWxlRnJvbUxpc3QoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgYXJGaWxlTGlzdCA9IHRoaXMuYXJGaWxlTGlzdCQ7XG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmlkO1xuXG4gICAgICBmb3IgKGxldCBmaWxlSW5kZXggPSAwOyBmaWxlSW5kZXggPCBhckZpbGVMaXN0Lmxlbmd0aDsgZmlsZUluZGV4KyspIHtcbiAgICAgICAgaWYgKGFyRmlsZUxpc3RbZmlsZUluZGV4XS5pZCA9PSBpdGVtSWQpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgcmVkcmF3XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGFyRmlsZUxpc3Quc3BsaWNlKGZpbGVJbmRleCwgMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVMaW5rc0Zyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGxvY2FsTGlua3NMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGlmIChpdGVtICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uaWQ7XG5cbiAgICAgIGZvciAobGV0IGxpbmtJbmRleCA9IDA7IGxpbmtJbmRleCA8IGxvY2FsTGlua3NMaXN0Lmxlbmd0aDsgbGlua0luZGV4KyspIHtcbiAgICAgICAgaWYgKGxvY2FsTGlua3NMaXN0W2xpbmtJbmRleF0uaWQgPT0gaXRlbUlkKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGxpc3QgYW5kIHJlZHJhd1xuICAgICAgICAgIGxvY2FsTGlua3NMaXN0LnNwbGljZShsaW5rSW5kZXgsIDEpO1xuXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaW5rc0xpc3Quc2xpY2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/ICdEb3dubG9hZCcgOiAnT3BlbicsXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnUmVtb3ZlJyxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNsaWNrOiByZW1vdmVGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgZ2V0TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEb3dubG9hZCcsICcnLCAnJykgOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnT3BlbicsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0RlbGV0ZScsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnUmVtb3ZlJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICdvcGVuJyxcbiAgICAgICAgY2xpY2s6IGRvd25sb2FkRmlsZVxuICAgICAgfSxcbiAgICAgIHNlY29uZGFyeToge1xuICAgICAgICB0ZXh0OiBhdHQubWV0YVxuICAgICAgfSxcbiAgICAgIGFjdGlvbnNcbiAgICB9O1xuICB9O1xuXG4gIF9hZGRMaW5rKCkge1xuICAgIC8vIGNvcHkgbGlzdCBsb2NhbGx5XG4gICAgY29uc3QgbG9jYWxMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGNvbnN0IHVybCA9IHRoaXMubGlua191cmwkO1xuXG4gICAgaWYgKCEvXihodHRwfGh0dHBzKTpcXC9cXC8vLnRlc3QodGhpcy5saW5rX3VybCQpKSB7XG4gICAgICB0aGlzLmxpbmtfdXJsJCA9IGBodHRwOi8vJHt0aGlzLmxpbmtfdXJsJH1gO1xuICAgIH1cblxuICAgIC8vIGxpc3QgZm9yIGRpc3BsYXlcbiAgICBsZXQgb0xpbms6IGFueSA9IHt9O1xuICAgIG9MaW5rLmljb24gPSAnY2hhaW4nO1xuXG4gICAgb0xpbmsuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuXG4gICAgb0xpbmsgPSB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgIGF0dDogb0xpbmssXG4gICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgZGVsZXRlRmlsZTogbnVsbCxcbiAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICB9KTtcblxuICAgIG9MaW5rLnR5cGUgPSAnVVJMJztcbiAgICBvTGluay5wcmltYXJ5LnR5cGUgPSBvTGluay50eXBlO1xuICAgIG9MaW5rLnZpc3VhbC5pY29uID0gJ2NoYWluJztcbiAgICBvTGluay5wcmltYXJ5Lm5hbWUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgIG9MaW5rLnByaW1hcnkuaWNvbiA9ICdvcGVuJztcbiAgICBvTGluay5zZWNvbmRhcnkudGV4dCA9IHVybDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBhcnJheSBvciBzdW1tYXJ5IGxpc3Qgd29uJ3QgZGV0ZWN0IGNoYW5nZXNcbiAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaXN0LnNsaWNlKCk7XG4gICAgICB0aGlzLmFyTGlua3NMaXN0JC5wdXNoKG9MaW5rKTtcblxuICAgICAgLy8gbGlzdCBmb3IgYWN0dWFsbHkgYXR0YWNobWVudHNcbiAgICAgIGNvbnN0IGxpbms6IGFueSA9IHt9O1xuICAgICAgbGluay5pZCA9IG9MaW5rLmlkO1xuICAgICAgbGluay5saW5rVGl0bGUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgICAgbGluay50eXBlID0gb0xpbmsudHlwZTtcbiAgICAgIGxpbmsudXJsID0gdXJsO1xuXG4gICAgICB0aGlzLmFyTGlua3MkLnB1c2gobGluayk7XG5cbiAgICAgIC8vIGNsZWFyIHZhbHVlc1xuICAgICAgdGhpcy5saW5rX3RpdGxlJCA9ICcnO1xuICAgICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgICB9KTtcbiAgfVxuXG4gIF9jaGFuZ2VUaXRsZShldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBfY2hhbmdlVXJsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdXJsJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBkb3dubG9hZEZpbGUoYXR0OiBhbnkpIHtcbiAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIGNvbnN0IHsgSUQsIG5hbWUsIGV4dGVuc2lvbiwgdHlwZSB9ID0gYXR0O1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuXG4gICAgYXR0YWNoVXRpbHNcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwicmVzcG9uc2VFbmNvZGluZ1wiIGlzIG9wdGlvbmFsXG4gICAgICAuZG93bmxvYWRBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgdGhpcy5maWxlRG93bmxvYWQoY29udGVudC5kYXRhLCBuYW1lLCBleHRlbnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdVUkwnKSB7XG4gICAgICAgICAgbGV0IHsgZGF0YSB9ID0gY29udGVudDtcbiAgICAgICAgICBpZiAoIS9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdChkYXRhKSkge1xuICAgICAgICAgICAgZGF0YSA9IGAvLyR7ZGF0YX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aW5kb3cub3Blbihjb250ZW50LmRhdGEsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxuXG4gIGZpbGVEb3dubG9hZCA9IChkYXRhLCBmaWxlTmFtZSwgZXh0KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV4dCA/IGAke2ZpbGVOYW1lfS4ke2V4dH1gIDogZmlsZU5hbWU7XG4gICAgZG93bmxvYWQoYXRvYihkYXRhKSwgZmlsZSk7XG4gIH07XG5cbiAgY2FuY2VsRmlsZSgpIHtcbiAgICBhbGVydCgnY2FuY2VsJyk7XG4gIH1cblxuICBkZWxldGVGaWxlKGF0dDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgICAgY29uc3QgeyBJRCB9ID0gYXR0O1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgIGF0dGFjaFV0aWxzXG4gICAgICAgIC5kZWxldGVBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgICAgLy8gbGV0IG5ld0F0dGFjaG1lbnRzO1xuICAgICAgICAgIC8vIHNldEF0dGFjaG1lbnRzKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgLy8gICBuZXdBdHRhY2htZW50cyA9IGN1cnJlbnQuZmlsdGVyKChmaWxlKSA9PiBmaWxlLklEICE9PSBJRCk7XG4gICAgICAgICAgLy8gICByZXR1cm4gbmV3QXR0YWNobWVudHM7XG4gICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgLy8gaWYgKGNhbGxiYWNrRm4pIHtcbiAgICAgICAgICAvLyAgIGNhbGxiYWNrRm4obmV3QXR0YWNobWVudHMpO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRmlsZSgpIHtcbiAgICBhbGVydCgncmVtb3ZlJyk7XG4gIH1cblxuICByZW1vdmVOZXdGaWxlKCkge1xuICAgIGFsZXJ0KCdyZW1vdmUnKTtcbiAgfVxuXG4gIGNyZWF0ZU1vZGFsKG1vZGFsVHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChtb2RhbFR5cGUpIHtcbiAgICAgIGNhc2UgJ2FkZExvY2FsRmlsZSc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkZExvY2FsTGluayc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjcmVhdGVNb2RhbEJ1dHRvbnMoKSB7XG4gICAgdGhpcy5hckZpbGVNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnYXR0YWNoJywganNBY3Rpb246ICdhdHRhY2hGaWxlcycsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2ggZmlsZXMnLCAnJywgJycpIH0pO1xuICAgIHRoaXMuYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSB9KTtcblxuICAgIHRoaXMuYXJMaW5rTWFpbkJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2F0dGFjaCcsIGpzQWN0aW9uOiAnYXR0YWNoTGlua3MnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQXR0YWNoIGxpbmtzJywgJycsICcnKSB9KTtcbiAgICB0aGlzLmFyTGlua1NlY29uZGFyeUJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2NhbmNlbCcsIGpzQWN0aW9uOiAnY2FuY2VsJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0NhbmNlbCcsICcnLCAnJykgfSk7XG4gIH1cblxuICB1cGxvYWRNeUZpbGVzKCRldmVudCkge1xuICAgIC8vIGFsZXJ0KCRldmVudC50YXJnZXQuZmlsZXNbMF0pOyAvLyBvdXRwdXRzIHRoZSBmaXJzdCBmaWxlXG4gICAgdGhpcy5hckZpbGVzJCA9IHRoaXMuZ2V0RmlsZXMoJGV2ZW50LnRhcmdldC5maWxlcyk7XG5cbiAgICAvLyBjb252ZXJ0IEZpbGVMaXN0IHRvIGFuIGFycmF5XG4gICAgY29uc3QgbXlGaWxlcyA9IEFycmF5LmZyb20odGhpcy5hckZpbGVzJCk7XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gbXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgYXR0LFxuICAgICAgICBkb3dubG9hZEZpbGU6ICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRvd25sb2FkRmlsZShhdHQpIDogbnVsbCxcbiAgICAgICAgY2FuY2VsRmlsZTogYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5jYW5jZWxGaWxlKCkgOiBudWxsLFxuICAgICAgICBkZWxldGVGaWxlOiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kZWxldGVGaWxlKGF0dCkgOiBudWxsLFxuICAgICAgICByZW1vdmVGaWxlOiBhdHQuZXJyb3IgPyAoKSA9PiB0aGlzLnJlbW92ZU5ld0ZpbGUoKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmlsZXMoYXJGaWxlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TmV3RmlsZXMoYXJGaWxlcyk7XG4gIH1cblxuICBzZXROZXdGaWxlcyhhckZpbGVzKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXJGaWxlcykge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlTWF4U2l6ZShmaWxlLCA1KSkge1xuICAgICAgICBmaWxlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZmlsZS5tZXRhID0gJ0ZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyA1TUIuJztcbiAgICAgIH1cbiAgICAgIGZpbGUubWltZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgICBmaWxlLmljb24gPSB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZmlsZS50eXBlKTtcbiAgICAgIGZpbGUuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1JJHtpbmRleH1gO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gYXJGaWxlcztcbiAgfVxuXG4gIHZhbGlkYXRlTWF4U2l6ZShmaWxlT2JqLCBtYXhTaXplSW5NQik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbGVTaXplID0gKGZpbGVPYmouc2l6ZSAvIDEwNDg1NzYpLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIGZpbGVTaXplIDwgbWF4U2l6ZUluTUI7XG4gIH1cblxuICBvbkZpbGVBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2F0dGFjaEZpbGVzJzpcbiAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkF0dGFjaEZpbGVzKHRoaXMuYXJGaWxlcyQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBtb2RhbCBidXR0b25zXG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXR0YWNoTGlua3MnOlxuICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQXR0YWNoTGlua3ModGhpcy5hckxpbmtzJCk7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJPdXRGaWxlcygpIHtcbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gW107XG4gICAgdGhpcy5hckZpbGVzJCA9IFtdO1xuICB9XG5cbiAgY2xlYXJPdXRMaW5rcygpIHtcbiAgICB0aGlzLmFyTGlua3NMaXN0JCA9IFtdO1xuICAgIHRoaXMuYXJMaW5rcyQgPSBbXTtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gJyc7XG4gICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgfVxuXG4gIGFkZEFMaW5rKCkge31cblxuICBfZmllbGRPbkNoYW5nZUxpbmsoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua190aXRsZSQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBfZmllbGRPbkNoYW5nZVVSTChldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3VybCQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMuZ2V0Q2FzZUlEKCk7XG5cbiAgICBpZiAoY2FzZUlEKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG5cbiAgICAgIHRoaXMuZmV0Y2hDYXNlQXR0YWNobWVudHMoY2FzZUlEKVxuICAgICAgICAudGhlbihyZXNwID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUF0dGFjaG1lbnRzUmVzcG9uc2UocmVzcCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXNlSUQoKSB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIHJldHVybiB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKSB8fCAnJztcbiAgfVxuXG4gIGZldGNoQ2FzZUF0dGFjaG1lbnRzKGNhc2VJRCkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIHJldHVybiBhdHRhY2htZW50VXRpbHMuZ2V0Q2FzZUF0dGFjaG1lbnRzKGNhc2VJRCwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG4gIH1cblxuICBoYW5kbGVBdHRhY2htZW50c1Jlc3BvbnNlKHJlc3ApIHtcbiAgICB0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyA9IHRoaXMuYWRkQXR0YWNobWVudHMocmVzcCk7XG4gICAgdGhpcy5sdV9jb3VudCQgPSB0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cy5sZW5ndGg7XG4gICAgdGhpcy5sdV9hckFjdGlvbnMkID0gdGhpcy5hZGRBdHRhY2htZW50c0FjdGlvbnM7XG5cbiAgICB0aGlzLmx1X2FySXRlbXMkID0gdGhpcy5nZXRVdGlsaXR5SXRlbXModGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMuc2xpY2UoMCwgMykpO1xuICAgIHRoaXMudmFfYXJJdGVtcyQgPSB0aGlzLmdldFV0aWxpdHlJdGVtcyh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyk7XG4gIH1cblxuICBnZXRVdGlsaXR5SXRlbXMoYXR0YWNobWVudHMpIHtcbiAgICByZXR1cm4gYXR0YWNobWVudHMubWFwKHRoaXMubWFwQXR0YWNobWVudFRvVXRpbGl0eUl0ZW0uYmluZCh0aGlzKSk7XG4gIH1cblxuICBtYXBBdHRhY2htZW50VG9VdGlsaXR5SXRlbShhdHQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICBhdHQsXG4gICAgICBkb3dubG9hZEZpbGU6IHRoaXMuZ2V0RG93bmxvYWRGdW5jdGlvbihhdHQpLFxuICAgICAgY2FuY2VsRmlsZTogdGhpcy5nZXRDYW5jZWxGdW5jdGlvbihhdHQpLFxuICAgICAgZGVsZXRlRmlsZTogdGhpcy5nZXREZWxldGVGdW5jdGlvbihhdHQpLFxuICAgICAgcmVtb3ZlRmlsZTogdGhpcy5nZXRSZW1vdmVGdW5jdGlvbihhdHQpXG4gICAgfSk7XG4gIH1cblxuICBnZXREb3dubG9hZEZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kb3dubG9hZEZpbGUoYXR0KSA6IG51bGw7XG4gIH1cblxuICBnZXRDYW5jZWxGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5jYW5jZWxGaWxlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RGVsZXRlRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoYXR0KSA6IG51bGw7XG4gIH1cblxuICBnZXRSZW1vdmVGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gYXR0LmVycm9yID8gKCkgPT4gdGhpcy5yZW1vdmVGaWxlKCkgOiBudWxsO1xuICB9XG5cbiAgY2FzZUhhc0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRDYXNlSUQgIT09IGNhc2VJRCkge1xuICAgICAgdGhpcy5jdXJyZW50Q2FzZUlEID0gY2FzZUlEO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8Y29tcG9uZW50LW1hcHBlclxuICAgIG5hbWU9XCJMaXN0VXRpbGl0eVwiXG4gICAgW3Byb3BzXT1cIntcbiAgICAgIG5hbWUkOiBsdV9uYW1lJCxcbiAgICAgIGljb24kOiBsdV9pY29uJCxcbiAgICAgIGJMb2FkaW5nJDogbHVfYkxvYWRpbmckLFxuICAgICAgY291bnQkOiBsdV9jb3VudCQsXG4gICAgICBhckFjdGlvbnMkOiBsdV9hckFjdGlvbnMkLFxuICAgICAgYXJJdGVtcyQ6IGx1X2FySXRlbXMkLFxuICAgICAgb25WaWV3QWxsJDogbHVfb25WaWV3QWxsRnVuY3Rpb24sXG4gICAgICBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JFxuICAgIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd0ZpbGVNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbG9jYWwgZmlsZXMnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1maWxlLXNlbGVjdG9yXCI+XG4gICAgICAgIDxpbnB1dCBoaWRkZW4gdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAjdXBsb2FkZXIgKGNoYW5nZSk9XCJ1cGxvYWRNeUZpbGVzKCRldmVudClcIiAvPlxuXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGxvYWRlci5jbGljaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVcGxvYWQgZmlsZShzKScsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICBbcHJvcHNdPVwieyBhckl0ZW1zJDogYXJGaWxlTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFjdGlvbkJ1dHRvbnNcIlxuICAgICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQ6IGFyRmlsZU1haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJDogYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkZpbGVBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dMaW5rTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstdG9wXCI+XG4gICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxvY2FsIGxpbmsnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWVudHJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmtzLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWxpbmtzLXR3by1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZGF0YVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxpbmsgdGl0bGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiByZXF1aXJlZD1cInRydWVcIiAoY2hhbmdlKT1cIl9maWVsZE9uQ2hhbmdlTGluaygkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdGl0bGUkXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1kYXRhXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VVJMPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcmVxdWlyZWQ9XCJ0cnVlXCIgKGNoYW5nZSk9XCJfZmllbGRPbkNoYW5nZVVSTCgkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdXJsJFwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstYWRkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJfYWRkTGluaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgTGluaycsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICAgIFtwcm9wc109XCJ7IGFySXRlbXMkOiBhckxpbmtzTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlTGlua3NGcm9tTGlzdCQgfVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJMaW5rTWFpbkJ1dHRvbnMkLCBhclNlY29uZGFyeUJ1dHRvbnMkOiBhckxpbmtTZWNvbmRhcnlCdXR0b25zJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd1ZpZXdBbGxNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay12aWV3LWFsbC1oZWFkZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaG1lbnRzJywgJycsICcnKSB9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJfY2xvc2VWaWV3QWxsKClcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay11dGlsaXR5LWNhcmQtYWN0aW9ucy1zdmctaWNvblwiIHNyYz1cInt7IGNsb3NlU3ZnSWNvbiQgfX1cIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXZpZXctYWxsLWJvZHlcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTdW1tYXJ5TGlzdFwiIFtwcm9wc109XCJ7IGFySXRlbXMkOiB2YV9hckl0ZW1zJCwgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUxpbmtzRnJvbUxpc3QkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -32,11 +32,11 @@ export class ListUtilityComponent {
|
|
|
32
32
|
return `${this.utils.getSDKStaticContentUrl()}assets/icons/`;
|
|
33
33
|
}
|
|
34
34
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListUtilityComponent, deps: [{ token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListUtilityComponent, isStandalone: true, selector: "app-list-utility", inputs: { name$: "name$", icon$: "icon$", bLoading$: "bLoading$", count$: "count$", arActions$: "arActions$", arItems$: "arItems$", menuIconOverrideAction$: "menuIconOverrideAction$", onViewAll$: "onViewAll$" }, ngImport: i0, template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListUtilityComponent, isStandalone: true, selector: "app-list-utility", inputs: { name$: "name$", icon$: "icon$", bLoading$: "bLoading$", count$: "count$", arActions$: "arActions$", arItems$: "arItems$", menuIconOverrideAction$: "menuIconOverrideAction$", onViewAll$: "onViewAll$" }, ngImport: i0, template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return i3.MatIconButton; }), selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatMenuModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatMenu; }), selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatMenuItem; }), selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatMenuTrigger; }), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListUtilityComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
|
-
args: [{ selector: 'app-list-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule, MatProgressSpinnerModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid
|
|
39
|
+
args: [{ selector: 'app-list-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule, MatProgressSpinnerModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"] }]
|
|
40
40
|
}], ctorParameters: function () { return [{ type: i1.Utils }]; }, propDecorators: { name$: [{
|
|
41
41
|
type: Input
|
|
42
42
|
}], icon$: [{
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
54
54
|
}], onViewAll$: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvbGlzdC11dGlsaXR5L2xpc3QtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2xpc3QtdXRpbGl0eS9saXN0LXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBbEJ2QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQiw0QkFBdUIsR0FBVSxFQUFFLENBQUM7UUFRN0Msb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFFN0IsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVtQixDQUFDO0lBRXBDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsQ0FBQztJQUMvRCxDQUFDOytHQTlCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnU0NmakMsMC9DQWdDQSx3K0REbkJZLFlBQVksb1hBQUUsZUFBZSw2aEJBQUUsYUFBYSwyaUJBQUUsd0JBQXdCLGlUQUFtQix3QkFBd0I7OzRGQUVoSCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzRGQUdwSCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpc3QtdXRpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXV0aWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXV0aWxpdHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTGlzdFV0aWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBuYW1lJCA9ICcnO1xuICBASW5wdXQoKSBpY29uJCA9ICcnO1xuICBASW5wdXQoKSBiTG9hZGluZyQgPSBmYWxzZTtcbiAgQElucHV0KCkgY291bnQkID0gMDtcbiAgQElucHV0KCkgYXJBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYXJJdGVtcyQ6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiBhbnlbXSA9IFtdO1xuXG4gIC8vIGZ1bmN0aW9uIHRvIGFsbFxuICBASW5wdXQoKSBvblZpZXdBbGwkOiBhbnk7XG5cbiAgaGVhZGVyU3ZnSWNvbiQ6IHN0cmluZztcbiAgc2V0dGluZ3NTdmdJY29uJDogc3RyaW5nO1xuXG4gIG5vSXRlbXNNZXNzYWdlJCA9ICdObyBJdGVtcyc7XG5cbiAgaW1hZ2VQYXRoJCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXRpbHM6IFV0aWxzKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VQYXRoJCA9IHRoaXMuZ2V0SWNvblBhdGgoKTtcblxuICAgIHRoaXMuaGVhZGVyU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKHRoaXMuaWNvbiQsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLnNldHRpbmdzU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdtb3JlJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICB9XG5cbiAgZ2V0SWNvblBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCl9YXNzZXRzL2ljb25zL2A7XG4gIH1cbn1cbiIsIjxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWxpdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1zdmctaWNvblwiIHNyYz1cInt7IGhlYWRlclN2Z0ljb24kIH19XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10ZXh0XCI+e3sgbmFtZSQgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWxpdHktY291bnRcIiBpZD1cImF0dGFjaG1lbnRzLWNvdW50XCI+e3sgY291bnQkIH19PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInV0aWxpdHlNZW51XCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBzZXR0aW5nc1N2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudSAjdXRpbGl0eU1lbnU9XCJtYXRNZW51XCIgb3ZlcmxhcFRyaWdnZXI9XCJmYWxzZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhckFjdGlvbnMkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFjdGlvbi5vbkNsaWNrKClcIj57eyBhY3Rpb24udGV4dCB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdXRpbHRpeS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPGJyIC8+XG4gICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYkxvYWRpbmckXCIgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPGRpdiAqbmdJZj1cImNvdW50JCA9PSAwXCIgY2xhc3M9XCJtZXNzYWdlXCI+e3sgbm9JdGVtc01lc3NhZ2UkIH19PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvdW50JCA+IDBcIiBjbGFzcz1cInBzZGstdXRpbGl0eS1pdGVtc1wiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlN1bW1hcnlMaXN0XCIgW3Byb3BzXT1cInsgYXJJdGVtcyQsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdXRpbGl0eS12aWV3LWFsbFwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvdW50JCA+IDNcIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvblZpZXdBbGwkLm9uQ2xpY2soKVwiPlZpZXcgYWxsPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|