@posiwise/shared-components 0.0.128 → 0.0.130
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/esm2022/lib/custom-uploader/custom-uploader.component.mjs +1 -1
- package/esm2022/lib/demo-cards/demo-cards.component.mjs +3 -3
- package/esm2022/lib/label-management/entity-group/entity-group.component.mjs +1 -1
- package/esm2022/lib/privacy-policy/privacy-policy.component.mjs +3 -3
- package/esm2022/lib/resource-header/resource-header.component.mjs +38 -4
- package/esm2022/lib/shared-components.module.mjs +16 -10
- package/fesm2022/posiwise-shared-components.mjs +58 -18
- package/fesm2022/posiwise-shared-components.mjs.map +1 -1
- package/lib/resource-header/resource-header.component.d.ts +4 -0
- package/lib/shared-components.module.d.ts +18 -18
- package/package.json +1 -1
|
@@ -85,7 +85,7 @@ export class CustomUploaderComponent extends AppBaseComponent {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i1.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type:
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
@@ -72,13 +72,13 @@ export class DemoCardsComponent extends AppBaseComponent {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.NgbModal }, { token: i3.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link Title</label>\n <input class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link URL</label>\n <input class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"], dependencies: [{ kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
76
76
|
}
|
|
77
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, decorators: [{
|
|
78
78
|
type: Component,
|
|
79
|
-
args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n
|
|
79
|
+
args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link Title</label>\n <input class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link URL</label>\n <input class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"] }]
|
|
80
80
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.NgbModal }, { type: i3.AdminService }, { type: i0.Injector }], propDecorators: { editBookLinksModal: [{
|
|
81
81
|
type: ViewChild,
|
|
82
82
|
args: ['editBookLinksModal', { static: true }]
|
|
83
83
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZ0JBQWdCO0lBWXBELFlBQ3FCLFNBQXVCLEVBQ3ZCLFlBQXNCLEVBQ3RCLFlBQTBCLEVBQzNDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFiL0Msd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRXpCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQWVyQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxFQUFFLGNBQWMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEYsR0FBRyxJQUFJO1lBQ1AsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQ3ZFLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsQ0FBUztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsWUFBWTthQUNaLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0IsU0FBUyxFQUFFO2dCQUNQLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUztnQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUI7YUFDbEM7WUFDRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDdkMsQ0FBQzthQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsSUFBSTtnQkFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzNGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBOUVRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1OQ2hCL0IsOG1GQXlFQTs7NEZEekRhLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDSSxjQUFjOzBKQWF4QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWRlbW8tY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERlbW9DYXJkc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGJvb2tpbmdMaW5rcztcbiAgICBlZGl0aW5nQm9va2luZ0xpbmtzID0gW107XG5cbiAgICBkb21haW5JZCA9IHRoaXMuYXBwQ29uZmlnPy5kb21haW5faWQ7XG4gICAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgdXNlcjogVXNlcjtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRCb29rTGlua3NNb2RhbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgZWRpdEJvb2tMaW5rc01vZGFsITogVGVtcGxhdGVSZWY8Q3VzdG9tVXBsb2FkZXJDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYm9va2luZ0xpbmtzID0gKHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXMgPz8gW10pLm1hcChsaW5rID0+ICh7XG4gICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwobGluay51cmwpXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBvcGVuRWRpdEJvb2tMaW5rcyhtb2RhbCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5hcHBDb25maWc/LnBhZ2VzX2NvbmZpZz8uYm9va19kZW1vPy5pdGVtcyA/PyBbXSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwgeyBzaXplOiAnbGcnLCBjZW50ZXJlZDogdHJ1ZSwgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInIH0pO1xuICAgIH1cblxuICAgIGFkZEJvb2tpbmdMaW5rKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MucHVzaCh7IHRpdGxlOiAnJywgdXJsOiAnJyB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVCb29rRGVtb0xpbmsoaTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuXG4gICAgZHJvcEJvb2tpbmdMaW5rKGV2ZW50KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdCb29raW5nTGlua3MsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuXG4gICAgc2F2ZUJvb2tpbmdMaW5rcyhtb2RhbCkge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZURvbWFpbkNvbmZpZyh0aGlzLmRvbWFpbklkLCB7XG4gICAgICAgICAgICAgICAgYm9va19kZW1vOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdCb29raW5nIGxpbmtzIHVwZGF0ZWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvb2tpbmdMaW5rcyA9IHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rcy5tYXAobGluayA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChsaW5rLnVybClcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBDb25maWcucGFnZXNfY29uZmlnLmJvb2tfZGVtby5pdGVtcyA9IFsuLi50aGlzLmVkaXRpbmdCb29raW5nTGlua3NdOyAvLyDinIUgTGlrZSBDVEFzXG4gICAgICAgICAgICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjwhLS0gRURJVCBJQ09OIC0tPlxuXG48IS0tIERFTU8gTElOS1MgLS0+XG48ZGl2IGNsYXNzPVwicm93IHRleHQtY2VudGVyXCI+XG4gIDxpICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgIGNsYXNzPVwiZmEgZmEtZWRpdCBpbi1wYWdlLWVkaXQtaWNvbiBtYi0zIGN1cnNvci1wb2ludGVyXCJcbiAgICB0aXRsZT1cIkVkaXQgQm9va2luZyBMaW5rc1wiXG4gICAgKGNsaWNrKT1cIm9wZW5FZGl0Qm9va0xpbmtzKGVkaXRCb29rTGlua3NNb2RhbClcIj5cbiAgPC9pPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLWxnLTQgbWItNVwiICpuZ0Zvcj1cImxldCBsaW5rIG9mIGJvb2tpbmdMaW5rc1wiPlxuICAgIDxoNSBjbGFzcz1cIm1iLTNcIj57eyBsaW5rPy50aXRsZSB9fTwvaDU+XG4gICAgPGlmcmFtZSBbc3JjXT1cImxpbms/LnVybFwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgdGl0bGU9XCJCb29raW5nIGZyYW1lXCJcbiAgICAgIGhlaWdodD1cIjYwMFwiXG4gICAgICBzdHlsZT1cImJvcmRlcjowO1wiPlxuICAgIDwvaWZyYW1lPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIE1PREFMIFRFTVBMQVRFIC0tPlxuPG5nLXRlbXBsYXRlICNlZGl0Qm9va0xpbmtzTW9kYWwgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IEJvb2sgRGVtbyBMaW5rczwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BCb29raW5nTGluaygkZXZlbnQpXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVkaXRpbmdCb29raW5nTGlua3M7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImNhcmQgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGluayBUaXRsZTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIml0ZW0udGl0bGVcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkxpbmsgVVJMPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaXRlbS51cmxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiUmVtb3ZlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUJvb2tEZW1vTGluayhpKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInJlbW92ZUJvb2tEZW1vTGluayhpKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInJlbW92ZUJvb2tEZW1vTGluayhpKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggaW4tcGFnZS10cmFzaC1pY29uIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtM1wiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1iYXJzIGluLXBhZ2UtYmFycy1pY29uIGN1cnNvci1tb3ZlXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRHJhZyB0byByZW9yZGVyXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtdC0zXCIgKGNsaWNrKT1cImFkZEJvb2tpbmdMaW5rKClcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtZS0xXCI+PC9pPiBBZGQgQm9vayBEZW1vIExpbmtcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVCb29raW5nTGlua3MobW9kYWwpXCI+U2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZ0JBQWdCO0lBWXBELFlBQ3FCLFNBQXVCLEVBQ3ZCLFlBQXNCLEVBQ3RCLFlBQTBCLEVBQzNDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFiL0Msd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRXpCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQWVyQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxFQUFFLGNBQWMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEYsR0FBRyxJQUFJO1lBQ1AsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQ3ZFLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsQ0FBUztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsWUFBWTthQUNaLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0IsU0FBUyxFQUFFO2dCQUNQLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUztnQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUI7YUFDbEM7WUFDRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDdkMsQ0FBQzthQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsSUFBSTtnQkFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzNGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBOUVRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1OQ2pCL0IscW5GQXlFQTs7NEZEeERhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxjQUFjOzBKQWN4QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWRlbW8tY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RlbW8tY2FyZHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEZW1vQ2FyZHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBib29raW5nTGlua3M7XG4gICAgZWRpdGluZ0Jvb2tpbmdMaW5rcyA9IFtdO1xuXG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZz8uZG9tYWluX2lkO1xuICAgIHN1YnNjcmlwdGlvbklkOiBzdHJpbmc7XG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0Qm9va0xpbmtzTW9kYWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGVkaXRCb29rTGlua3NNb2RhbCE6IFRlbXBsYXRlUmVmPEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKFRPS0VOX0tFWSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/IEpTT04ucGFyc2UocmVzKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBkYXRhPy5zdWJzY3JpcHRpb25JZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJvb2tpbmdMaW5rcyA9ICh0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8/Lml0ZW1zID8/IFtdKS5tYXAobGluayA9PiAoe1xuICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgIHVybDogdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGxpbmsudXJsKVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgb3BlbkVkaXRCb29rTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXMgPz8gW10pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHsgc2l6ZTogJ2xnJywgY2VudGVyZWQ6IHRydWUsIHdpbmRvd0NsYXNzOiAnbW9kYWwtaG9sZGVyJyB9KTtcbiAgICB9XG5cbiAgICBhZGRCb29raW5nTGluaygpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLnB1c2goeyB0aXRsZTogJycsIHVybDogJycgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQm9va0RlbW9MaW5rKGk6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3Muc3BsaWNlKGksIDEpO1xuICAgIH1cblxuICAgIGRyb3BCb29raW5nTGluayhldmVudCkge1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIHNhdmVCb29raW5nTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVEb21haW5Db25maWcodGhpcy5kb21haW5JZCwge1xuICAgICAgICAgICAgICAgIGJvb2tfZGVtbzoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLmVkaXRpbmdCb29raW5nTGlua3NcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnQm9va2luZyBsaW5rcyB1cGRhdGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib29raW5nTGlua3MgPSB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MubWFwKGxpbmsgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwobGluay51cmwpXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5ib29rX2RlbW8uaXRlbXMgPSBbLi4udGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzXTsgLy8g4pyFIExpa2UgQ1RBc1xuICAgICAgICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tIEVESVQgSUNPTiAtLT5cblxuPCEtLSBERU1PIExJTktTIC0tPlxuPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWNlbnRlclwiPlxuICA8aSAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5BZG1pbiddXCJcbiAgICBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gbWItMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgdGl0bGU9XCJFZGl0IEJvb2tpbmcgTGlua3NcIlxuICAgIChjbGljayk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCI+XG4gIDwvaT5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy00IG1iLTVcIiAqbmdGb3I9XCJsZXQgbGluayBvZiBib29raW5nTGlua3NcIj5cbiAgICA8aDUgY2xhc3M9XCJtYi0zXCI+e3sgbGluaz8udGl0bGUgfX08L2g1PlxuICAgIDxpZnJhbWUgW3NyY109XCJsaW5rPy51cmxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHRpdGxlPVwiQm9va2luZyBmcmFtZVwiXG4gICAgICBoZWlnaHQ9XCI2MDBcIlxuICAgICAgY2xhc3M9XCJpZnJhbWUtbm8tYm9yZGVyXCI+XG4gICAgPC9pZnJhbWU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgVEVNUExBVEUgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRCb29rTGlua3NNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgQm9vayBEZW1vIExpbmtzPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEJvb2tpbmdMaW5rKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZWRpdGluZ0Jvb2tpbmdMaW5rczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY2FyZCBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5MaW5rIFRpdGxlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaXRlbS50aXRsZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGluayBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnVybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gZGVsZXRlLWljb24gdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIlxuICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEcmFnIHRvIHJlb3JkZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG10LTNcIiAoY2xpY2spPVwiYWRkQm9va2luZ0xpbmsoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+IEFkZCBCb29rIERlbW8gTGlua1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUJvb2tpbmdMaW5rcyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -142,7 +142,7 @@ export class EntityGroupComponent extends AppBaseComponent {
|
|
|
142
142
|
super.ngOnDestroy();
|
|
143
143
|
}
|
|
144
144
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, deps: [{ token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i2.NgbModal }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n (keydown.enter)=\"onDelete(member.id)\"\n (keydown.space)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n (keydown.enter)=\"onDelete(member.id)\"\n (keydown.space)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
146
146
|
}
|
|
147
147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, decorators: [{
|
|
148
148
|
type: Component,
|
|
@@ -12,12 +12,12 @@ export class PrivacyPolicyComponent extends AppBaseComponent {
|
|
|
12
12
|
this.company_email = this.appConfig.company.email;
|
|
13
13
|
}
|
|
14
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyPolicyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyPolicyComponent, selector: "pw-privacy-policy", inputs: { isPublic: "isPublic" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a world-wide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your‎\n name,‎ email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions & Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyPolicyComponent, selector: "pw-privacy-policy", inputs: { isPublic: "isPublic" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a worldwide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your‎\n name,‎ email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions & Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
|
-
args: [{ selector: 'pw-privacy-policy', template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a world-wide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your‎\n name,‎ email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions & Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"] }]
|
|
19
|
+
args: [{ selector: 'pw-privacy-policy', template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a worldwide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your‎\n name,‎ email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions & Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"] }]
|
|
20
20
|
}], propDecorators: { isPublic: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1wb2xpY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3ByaXZhY3ktcG9saWN5L3ByaXZhY3ktcG9saWN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LXBvbGljeS9wcml2YWN5LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBT2hFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFMNUQ7O1FBT0ksYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBU2xFO0lBSkcsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3RELENBQUM7K0dBVlEsc0JBQXNCO21HQUF0QixzQkFBc0Isa0hDVG5DLHV0V0F1TUE7OzRGRDlMYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksbUJBQW1COzhCQU03QixRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXByaXZhY3ktcG9saWN5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJpdmFjeS1wb2xpY3kuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcml2YWN5UG9saWN5Q29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpc1B1YmxpYyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygncHJpdmFjeS1wb2xpY3knKTtcblxuICAgIGNvbXBhbnlfbmFtZTogc3RyaW5nO1xuICAgIGNvbXBhbnlfZW1haWw6IHN0cmluZztcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBhbnlfbmFtZSA9IHRoaXMuYXBwQ29uZmlnLmNvbXBhbnkubmFtZTtcbiAgICAgICAgdGhpcy5jb21wYW55X2VtYWlsID0gdGhpcy5hcHBDb25maWcuY29tcGFueS5lbWFpbDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNQdWJsaWNcIj5cbiAgPHB3LWxhbmRpbmctcGFnZS1oZWFkZXIgW2xhbmRpbmddPVwiZmFsc2VcIj48L3B3LWxhbmRpbmctcGFnZS1oZWFkZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbXQtNSc6IGlzUHVibGljIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGVybXMtb2Ytc2VydmljZVwiPlxuICAgICAgICAgICAgPGgxPlByaXZhY3kgcG9saWN5PC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgPGgzPllvdXIgQ29udGVudDwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSWYgeW91IG9wZXJhdGUgYSB7eyBjb21wYW55X25hbWUgfX0gVXNlciBBY2NvdW50LCBhbmQvb3IgY29tbWVudCBvbixcbiAgICAgICAgICAgICAgcG9zdCBtYXRlcmlhbCB0bywgcG9zdCBsaW5rcyBvbiBvciBvdGhlcndpc2UgbWFrZSAob3IgYWxsb3cgYW55IHRoaXJkXG4gICAgICAgICAgICAgIHBhcnR5IHRvIG1ha2UpIG1hdGVyaWFsIGF2YWlsYWJsZSBieSBtZWFucyBvZiB0aGUgV2Vic2l0ZSBhbmQgb3JcbiAgICAgICAgICAgICAgQXBwbGljYXRpb25zIChjb2xsZWN0aXZlbHkgY2FsbGVkIOKAnENvbnRlbnTigJ0pLCB5b3UgYXJlIGVudGlyZWx5XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGF0IENvbnRlbnQgYW5kIGFueSBoYXJtIHJlc3VsdGluZyBmcm9tIHRoYXQgQ29udGVudC5cbiAgICAgICAgICAgICAgVGhhdCBpcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIENvbnRlbnQgaW4gcXVlc3Rpb24gY29uc3RpdHV0ZXMgKGJ1dFxuICAgICAgICAgICAgICBub3QgbGltaXRlZCB0bykgdGV4dCwgZ3JhcGhpY3MsIGFuIGF1ZGlvIGZpbGUgb3IgY29tcHV0ZXIgc29mdHdhcmUuIEJ5XG4gICAgICAgICAgICAgIG1ha2luZyBDb250ZW50IGF2YWlsYWJsZSwgeW91IHJlcHJlc2VudCBhbmQgd2FycmFudCB0aGF0OlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPG9sPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgdGhlIENvbnRlbnQgaXMgbm90IGNvbnNpZGVyZWQgdG8gYmUgb2JzY2VuZSwgaW5hcHByb3ByaWF0ZSxcbiAgICAgICAgICAgICAgICBkZWZhbWF0b3J5LCBkaXNwYXJhZ2luZywgaW5kZWNlbnQsIHNlZGl0aW91cywgb2ZmZW5zaXZlLFxuICAgICAgICAgICAgICAgIHBvcm5vZ3JhcGhpYywgdGhyZWF0ZW5pbmcsIGFidXNpdmUsIGxpYWJsZSB0byBpbmNpdGUgcmFjaWFsIGhhdHJlZCxcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yeSwgYmxhc3BoZW1vdXMsIGluIGJyZWFjaCBvZiBjb25maWRlbmNlIG9yIGluIGJyZWFjaCBvZlxuICAgICAgICAgICAgICAgIHByaXZhY3k7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgZG93bmxvYWRpbmcsIGNvcHlpbmcgYW5kIHVzZSBvZiB0aGUgQ29udGVudCB3aWxsIG5vdCBpbmZyaW5nZVxuICAgICAgICAgICAgICAgIHRoZSBwcm9wcmlldGFyeSByaWdodHMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGNvcHlyaWdodCxcbiAgICAgICAgICAgICAgICBwYXRlbnQsIHRyYWRlbWFyayBvciB0cmFkZSBzZWNyZXQgcmlnaHRzLCBvZiBhbnkgdGhpcmQgcGFydHk7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICBpZiB5b3VyIGVtcGxveWVyIGhhcyByaWdodHMgdG8gaW50ZWxsZWN0dWFsIHByb3BlcnR5IHlvdSBjcmVhdGUsIHlvdVxuICAgICAgICAgICAgICAgIGhhdmUgZWl0aGVyIChpKSByZWNlaXZlZCBwZXJtaXNzaW9uIGZyb20geW91ciBlbXBsb3llciB0byBwb3N0IG9yXG4gICAgICAgICAgICAgICAgbWFrZSBhdmFpbGFibGUgdGhlIENvbnRlbnQsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55XG4gICAgICAgICAgICAgICAgc29mdHdhcmUsIG9yIChpaSkgc2VjdXJlZCBmcm9tIHlvdXIgZW1wbG95ZXIgYSB3YWl2ZXIgYXMgdG8gYWxsXG4gICAgICAgICAgICAgICAgcmlnaHRzIGluIG9yIHRvIHRoZSBDb250ZW50O1xuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgeW91IGhhdmUgZnVsbHkgY29tcGxpZWQgd2l0aCBhbnkgdGhpcmQtcGFydHkgbGljZW5zZXMgcmVsYXRpbmcgdG9cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCwgYW5kIGhhdmUgZG9uZSBhbGwgdGhpbmdzIG5lY2Vzc2FyeSB0byBzdWNjZXNzZnVsbHkgcGFzc1xuICAgICAgICAgICAgICAgIHRocm91Z2ggdG8gZW5kIHVzZXJzIGFueSByZXF1aXJlZCB0ZXJtcztcbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHRoZSBDb250ZW50IGRvZXMgbm90IGNvbnRhaW4gb3IgaW5zdGFsbCBhbnkgdmlydXNlcywgd29ybXMsIG1hbHdhcmUsXG4gICAgICAgICAgICAgICAgVHJvamFuIGhvcnNlcyBvciBvdGhlciBoYXJtZnVsIG9yIGRlc3RydWN0aXZlIGNvbnRlbnQ7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCBpcyBub3Qgc3BhbSwgaXMgbm90IG1hY2hpbmUgb3IgcmFuZG9tbHkgZ2VuZXJhdGVkIGFuZFxuICAgICAgICAgICAgICAgIGRvZXMgbm90IGNvbnRhaW4gdW5ldGhpY2FsIG9yIHVud2FudGVkIGNvbW1lcmNpYWwgY29udGVudCBkZXNpZ25lZFxuICAgICAgICAgICAgICAgIHRvIGRyaXZlIHRyYWZmaWMgdG8gdGhpcmQgcGFydHkgc2l0ZXMgb3IgZnVydGhlciB1bmxhd2Z1bCBhY3RzO1xuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgeW91ciBVc2VyIEFjY291bnQgaXMgbm90IGdldHRpbmcgYWR2ZXJ0aXNlZCB2aWEgdW53YW50ZWQgZWxlY3Ryb25pY1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzIHN1Y2ggYXMgc3BhbSBsaW5rcyBvbiBuZXdzZ3JvdXBzLCBlbWFpbCBsaXN0cywgb3RoZXIgYmxvZ3NcbiAgICAgICAgICAgICAgICBhbmQgd2Vic2l0ZXMsIGFuZCBzaW1pbGFyIHVuc29saWNpdGVkIHByb21vdGlvbmFsIG1ldGhvZHM7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB5b3VyIFVzZXIgQWNjb3VudCBpcyBub3QgbmFtZWQgaW4gYSBtYW5uZXIgdGhhdCBtaXNsZWFkcyB1c2VycyBpbnRvXG4gICAgICAgICAgICAgICAgdGhpbmtpbmcgdGhhdCB5b3UgYXJlIGFub3RoZXIgcGVyc29uIG9yIGNvbXBhbnk7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCB3aWxsIG5vdCBjYXVzZSB5b3Ugb3IgdXMgdG8gYnJlYWNoIGFueSBsYXcsIHJlZ3VsYXRpb24sXG4gICAgICAgICAgICAgICAgcnVsZSwgY29kZSBvciBvdGhlciBsZWdhbCBvYmxpZ2F0aW9uOyBhbmRcbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPnRoZSBDb250ZW50IHdpbGwgbm90IGJyaW5nIHVzLCBvciB0aGUgU2l0ZSBpbnRvIGRpc3JlcHV0ZS48L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBCeSBzdWJtaXR0aW5nIENvbnRlbnQgZm9yIGluY2x1c2lvbiBpbiB5b3VyIFVzZXIgQWNjb3VudCBvciB0byB0aGUgU2l0ZSxcbiAgICAgICAgICAgICAgeW91IGdyYW50IHVzIGEgd29ybGQtd2lkZSwgcm95YWx0eSBmcmVlLCBhbmQgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlIHRvXG4gICAgICAgICAgICAgIHVzZSB0aGF0IGNvbnRlbnQgaW4gYW55IHdheSAoaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgcmVwcm9kdWNpbmcsXG4gICAgICAgICAgICAgIGNoYW5naW5nIGFuZCBjb21tdW5pY2F0aW5nIHRoZSBDb250ZW50KSBhbmQgcGVybWl0IHVzIHRvIGF1dGhvcmlzZSBhbnlcbiAgICAgICAgICAgICAgb3RoZXIgcGVyc29uIHRvIGRvIHRoZSBzYW1lIHRoaW5nLiBJZiB5b3UgZGVsZXRlIGFueSBDb250ZW50LCB3ZSB3aWxsXG4gICAgICAgICAgICAgIHVzZSByZWFzb25hYmxlIGVmZm9ydHMgdG8gcmVtb3ZlIGl0IGZyb20gdGhlIFNpdGUsIGJ1dCB5b3UgYWNrbm93bGVkZ2VcbiAgICAgICAgICAgICAgdGhhdCBjYWNoaW5nIG9yIHJlZmVyZW5jZXMgdG8gdGhlIENvbnRlbnQgbWF5IG5vdCBiZSBtYWRlIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgIHVuYXZhaWxhYmxlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdpdGhvdXQgbGltaXRpbmcgYW55IG9mIHRob3NlIHJlcHJlc2VudGF0aW9ucyBvciB3YXJyYW50aWVzLCB3ZSByZXNlcnZlXG4gICAgICAgICAgICAgIHRoZSByaWdodCAodGhvdWdoIG5vdCB0aGUgb2JsaWdhdGlvbikgdG8sIGluIG91ciBzb2xlIGRpc2NyZXRpb25cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHJlZnVzZSBvciByZW1vdmUgYW55IGNvbnRlbnQgdGhhdCwgaW4gb3VyIHJlYXNvbmFibGUgb3BpbmlvbixcbiAgICAgICAgICAgICAgICB2aW9sYXRlcyBhbnkgb2Ygb3VyIHBvbGljaWVzIG9yIGFncmVlbWVudHMgb3IgaXMgaW4gYW55IHdheSBoYXJtZnVsXG4gICAgICAgICAgICAgICAgb3Igb2JqZWN0aW9uYWJsZSwgb3JcbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHRlcm1pbmF0ZSBvciBkZW55IGFjY2VzcyB0byBhbmQgdXNlIG9mIHRoZSBTZXJ2aWNlIHRvIGFueSBpbmRpdmlkdWFsXG4gICAgICAgICAgICAgICAgb3IgZW50aXR5IGZvciBhbnkgcmVhc29uLCBpbiBvdXIgc29sZSBkaXNjcmV0aW9uLlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoMz5Qcml2YWN5PC9oMz5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBnZXQgaW5mb3JtYXRpb24gYWJvdXQgeW91IGluIGEgcmFuZ2Ugb2Ygd2F5cy4gV2UgY29sbGVjdCB5b3VyJmxybTtcbiAgICAgICAgICAgICAgbmFtZSwmbHJtOyBlbWFpbCBhZGRyZXNzIGFuZCBvdGhlciBpbmZvcm1hdGlvbiB5b3UgZGlyZWN0bHkgZ2l2ZSB1cyBvblxuICAgICAgICAgICAgICBvdXIgU2l0ZS4gV2UgbWF5IGdldCBpbmZvcm1hdGlvbiBhYm91dCB5b3UgZnJvbSBvdGhlciBzb3VyY2VzLiBXZSBtYXlcbiAgICAgICAgICAgICAgYWRkIHRoaXMgdG8gaW5mb3JtYXRpb24gd2UgZ2V0IGZyb20gdGhpcyBTaXRlLiBXZSBtYXkgYXV0b21hdGljYWxseSBsb2dcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgeW91IGFuZCB5b3VyIGNvbXB1dGVyLiBXZSBtYXkgbG9nIGluZm9ybWF0aW9uIHVzaW5nXG4gICAgICAgICAgICAgIFwiY29va2llcy5cIiBDb29raWVzIGFyZSBzbWFsbCBkYXRhIGZpbGVzIHN0b3JlZCBvbiB5b3VyIGhhcmQgZHJpdmUgYnkgYVxuICAgICAgICAgICAgICB3ZWJzaXRlLiBDb29raWVzIGhlbHAgdXMgbWFrZSBvdXIgU2l0ZSBhbmQgeW91ciB2aXNpdCBiZXR0ZXIuIFdlIHVzZVxuICAgICAgICAgICAgICBjb29raWVzIHRvIHNlZSB3aGljaCBwYXJ0cyBvZiBvdXIgU2l0ZSBwZW9wbGUgdXNlIGFuZCBsaWtlIGFuZCB0byBjb3VudFxuICAgICAgICAgICAgICB2aXNpdHMgdG8gb3VyIFNpdGUuIFdlIG1heSBzdG9yZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGFsb25nIHdpdGhcbiAgICAgICAgICAgICAgeW91ciBmaWxlcyBhbmQgZGF0YSBvbiBhIHRoaXJkIHBhcnR5IHNlcnZlciBzdWNoIGFzIEFtYXpvbiBXZWIgU2VydmljZXM7XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgdXNlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gb3BlcmF0ZSwgbWFpbnRhaW4sIGFuZCBpbXByb3ZlIG91clxuICAgICAgICAgICAgICBzaXRlcywgcHJvZHVjdHMsIGFuZCBzZXJ2aWNlcy4gV2UgdXNlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdG9cbiAgICAgICAgICAgICAgcmVzcG9uZCB0byBjb21tZW50cyBhbmQgcXVlc3Rpb25zIGFuZCBwcm92aWRlIGN1c3RvbWVyIHNlcnZpY2UuIFdlIHVzZVxuICAgICAgICAgICAgICB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUgYW5kIGRlbGl2ZXIgcHJvZHVjdHMgYW5kIHNlcnZpY2VzXG4gICAgICAgICAgICAgIGN1c3RvbWVycyByZXF1ZXN0LiBXZSBhbHNvIHVzZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRvIHNlbmQgeW91XG4gICAgICAgICAgICAgIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHNlcnZpY2UgYW5kIHRvIHJlc3BvbmQgdG8gY3VzdG9tZXIgc3VwcG9ydFxuICAgICAgICAgICAgICByZXF1ZXN0cy4gWW91IGNhbiBhY2Nlc3MgYW5kIGNoYW5nZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGJ5IGxvZ2dpbmdcbiAgICAgICAgICAgICAgaW4gdG8geW91ciBhY2NvdW50IHNldHRpbmdzIHBhZ2UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgbWF5IHNoYXJlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdpdGggeW91ciBjb25zZW50LiBGb3IgZXhhbXBsZSwgeW91XG4gICAgICAgICAgICAgIG1heSBsZXQgdXMgc2hhcmUgcGVyc29uYWwgaW5mb3JtYXRpb24gd2l0aCBvdGhlcnMgZm9yIHRoZWlyIG93blxuICAgICAgICAgICAgICBtYXJrZXRpbmcgdXNlcy4gVGhvc2UgdXNlcyB3aWxsIGJlIHN1YmplY3QgdG8gdGhlaXIgcHJpdmFjeSBwb2xpY2llcy4gV2VcbiAgICAgICAgICAgICAgbWF5IHNoYXJlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdoZW4gd2UgZG8gYSBidXNpbmVzcyBkZWFsLCBvciBuZWdvdGlhdGVcbiAgICAgICAgICAgICAgYSBidXNpbmVzcyBkZWFsLCBpbnZvbHZpbmcgc2FsZSBvciB0cmFuc2ZlciBvZiBhbGwgb3IgYSBwYXJ0IG9mIG91clxuICAgICAgICAgICAgICBidXNpbmVzcyBvciBhc3NldHMuIFRoZXNlIGRlYWxzIGNhbiBpbmNsdWRlIGFueSBtZXJnZXIsIGZpbmFuY2luZyxcbiAgICAgICAgICAgICAgYWNxdWlzaXRpb24sIG9yIGJhbmtydXB0Y3kgdHJhbnNhY3Rpb24gb3IgcHJvY2VlZGluZy4gV2UgbWF5IHNoYXJlXG4gICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZvciBsZWdhbCwgcHJvdGVjdGlvbiwgYW5kIHNhZmV0eSBwdXJwb3Nlcy4gV2UgbWF5XG4gICAgICAgICAgICAgIHNoYXJlIGluZm9ybWF0aW9uIHRvIGNvbXBseSB3aXRoIGxhd3MuIFdlIG1heSBzaGFyZSBpbmZvcm1hdGlvbiB0b1xuICAgICAgICAgICAgICByZXNwb25kIHRvIGxhd2Z1bCByZXF1ZXN0cyBhbmQgbGVnYWwgcHJvY2Vzcy4gV2UgbWF5IHNoYXJlIGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIHRvIHByb3RlY3QgdGhlIHJpZ2h0cywgcHJvcGVydHkgb3Igc2FmZXR5IG9mIHRoZSBTZXJ2aWNlLCBvdXIgdXNlcnMsXG4gICAgICAgICAgICAgIGN1c3RvbWVycywgYW5kIG90aGVycy4gVGhpcyBpbmNsdWRlcyBlbmZvcmNpbmcgb3VyIGFncmVlbWVudHMsIHBvbGljaWVzLFxuICAgICAgICAgICAgICBhbmQgdGVybXMgb2YgdXNlLiBXZSBtYXkgc2hhcmUgaW5mb3JtYXRpb24gaW4gYW4gZW1lcmdlbmN5LiBXZSBtYXkgc2hhcmVcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aCB0aG9zZSB3aG8gbmVlZCBpdCB0byBkbyB3b3JrIGZvciB1cy4gV2UgbWF5IGFsc28gc2hhcmVcbiAgICAgICAgICAgICAgYWdncmVnYXRlZCBhbmQvb3IgYW5vbnltaXplZCBkYXRhIHdpdGggb3RoZXJzIGZvciB0aGVpciBvd24gdXNlcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBPdXIgbWFya2V0aW5nIGVtYWlscyB0ZWxsIHlvdSBob3cgdG8g4oCcb3B0LW91dC7igJ0gSWYgeW91IG9wdCBvdXQsIHdlIG1heVxuICAgICAgICAgICAgICBzdGlsbCBzZW5kIHlvdSBub24tbWFya2V0aW5nIGVtYWlscy4gTm9uLW1hcmtldGluZyBlbWFpbHMgaW5jbHVkZSBlbWFpbHNcbiAgICAgICAgICAgICAgYWJvdXQgeW91ciBhY2NvdW50cyBhbmQgb3VyIGJ1c2luZXNzIGRlYWxpbmdzIHdpdGggeW91LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBjYW4gdHlwaWNhbGx5IHJlbW92ZSBhbmQgcmVqZWN0IGNvb2tpZXMgZnJvbSBvdXIgU2l0ZSB3aXRoIHlvdXJcbiAgICAgICAgICAgICAgYnJvd3NlciBzZXR0aW5ncy4gTWFueSBicm93c2VycyBhcmUgc2V0IHRvIGFjY2VwdCBjb29raWVzIHVudGlsIHlvdVxuICAgICAgICAgICAgICBjaGFuZ2UgeW91ciBzZXR0aW5ncy4gSWYgeW91IHJlbW92ZSBvciByZWplY3Qgb3VyIGNvb2tpZXMsIGl0IGNvdWxkXG4gICAgICAgICAgICAgIGFmZmVjdCBob3cgb3VyIFNpdGUgd29ya3MgZm9yIHlvdS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB7eyBjb21wYW55X25hbWUgfX0gc2VsbHMgYWxsIG9yIHBhcnQgb2YgaXRzIGJ1c2luZXNzIG9yIG1ha2VzIGEgc2FsZVxuICAgICAgICAgICAgICBvciB0cmFuc2ZlciBvZiBpdHMgYXNzZXRzIG9yIGlzIG90aGVyd2lzZSBpbnZvbHZlZCBpbiBhIG1lcmdlciBvclxuICAgICAgICAgICAgICB0cmFuc2ZlciBvZiBhbGwgb3IgYSBtYXRlcmlhbCBwYXJ0IG9mIGl0cyBidXNpbmVzcyxcbiAgICAgICAgICAgICAge3sgY29tcGFueV9uYW1lIH19IG1heSB0cmFuc2ZlciB5b3VyIGluZm9ybWF0aW9uIHRvIHRoZSBwYXJ0eSBvciBwYXJ0aWVzXG4gICAgICAgICAgICAgIGludm9sdmVkIGluIHRoZSB0cmFuc2FjdGlvbiBhcyBwYXJ0IG9mIHRoYXQgdHJhbnNhY3Rpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgY29tcGFueV9uYW1lIH19IHVzZXMgYSByYW5nZSBvZiBjb21tZXJjaWFsbHkgcmVhc29uYWJsZSBtZWFzdXJlcyB0b1xuICAgICAgICAgICAgICBzYWZlZ3VhcmQgUGVyc29uYWwgSW5mb3JtYXRpb24gaW4gaXRzIHBvc3Nlc3Npb24gYWdhaW5zdCBsb3NzLCB0aGVmdCBhbmRcbiAgICAgICAgICAgICAgdW5hdXRob3JpemVkIHVzZSwgZGlzY2xvc3VyZSBvciBtb2RpZmljYXRpb24uIEhvd2V2ZXIsIG5vIG9uZSBjYW5cbiAgICAgICAgICAgICAgZ3VhcmFudGVlIHRoZSBjb21wbGV0ZSBzYWZldHkgb2YgeW91ciBpbmZvcm1hdGlvbi4gUGxlYXNlIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgIG5vdGlmeSB1cyBpZiB5b3UgYmVsaWV2ZSB0aGVyZSBtYXkgYmUgYW4gaXNzdWUgb3IgYSBwcm9ibGVtIHJlZ2FyZGluZ1xuICAgICAgICAgICAgICB0aGUgaW50ZWdyaXR5IG9mIHlvdXIgaW5mb3JtYXRpb24gYnkgY29udGFjdGluZyB1cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJbiBzb21lIGNhc2VzLCB3ZSBtYXkgdXNlIGFuIHVuYWZmaWxpYXRlZCBwYXltZW50IHNlcnZpY2UgdG8gYWxsb3cgeW91XG4gICAgICAgICAgICAgIHRvIHB1cmNoYXNlIGEgcHJvZHVjdCBvciBtYWtlIHBheW1lbnRzICjigJxQYXltZW50IFNlcnZpY2XigJ0pLiBJZiB5b3Ugd2lzaFxuICAgICAgICAgICAgICB0byBwdXJjaGFzZSBhIHByb2R1Y3Qgb3IgbWFrZSBhIHBheW1lbnQgaW4gc3VjaCBhIGNhc2UsIHlvdSB3aWxsIGJlXG4gICAgICAgICAgICAgIGRpcmVjdGVkIHRvIGEgUGF5bWVudCBTZXJ2aWNlIHdlYnBhZ2UuIEFueSBpbmZvcm1hdGlvbiB0aGF0IHlvdSBwcm92aWRlXG4gICAgICAgICAgICAgIHRvIGEgUGF5bWVudCBTZXJ2aWNlIHdpbGwgYmUgc3ViamVjdCB0byB0aGUgYXBwbGljYWJsZSBQYXltZW50IFNlcnZpY2XigJlzXG4gICAgICAgICAgICAgIHByaXZhY3kgcG9saWN5LCByYXRoZXIgdGhhbiB0aGlzIFByaXZhY3kgUG9saWN5LiBXZSBoYXZlIG5vIGNvbnRyb2xcbiAgICAgICAgICAgICAgb3ZlciwgYW5kIGFyZSBub3QgcmVzcG9uc2libGUgZm9yLCBhbnkgUGF5bWVudCBTZXJ2aWNl4oCZcyB1c2Ugb2ZcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gY29sbGVjdGVkIHRocm91Z2ggYW55IFBheW1lbnQgU2VydmljZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGUge3sgY29tcGFueV9uYW1lIH19IHdlYnNpdGUgbWF5IGFsc28gYmUgbGlua2VkIHRvIHNpdGVzIG9wZXJhdGVkIGJ5XG4gICAgICAgICAgICAgIHRoaXJkIHBhcnRpZXMsIGFuZCBtYXkgY2FycnkgYWR2ZXJ0aXNlbWVudHMgb3Igb2ZmZXIgY29udGVudCxcbiAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSwgZ2FtZXMgb3IgYXBwbGljYXRpb25zIGRldmVsb3BlZCBhbmQgbWFpbnRhaW5lZCBieSB0aGlyZFxuICAgICAgICAgICAgICBwYXJ0aWVzLiBTb21lIG9mIHRoZXNlIHRoaXJkIHBhcnR5IHNpdGVzIG1heSBiZSBjby1icmFuZGVkIHdpdGggYVxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0gbG9nbywgZXZlbiB0aG91Z2ggdGhleSBhcmUgbm90IG9wZXJhdGVkIG9yIG1haW50YWluZWRcbiAgICAgICAgICAgICAgYnkgdXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgY29tcGFueV9uYW1lIH19IGlzIG5vdCByZXNwb25zaWJsZSBmb3IgdGhlIHByaXZhY3kgcHJhY3RpY2VzIG9mIGFueVxuICAgICAgICAgICAgICBzdWNoIHRoaXJkIHBhcnRpZXMsIGFuZCBvbmNlIHlvdSBsZWF2ZSB0aGUge3sgY29tcGFueV9uYW1lIH19IHdlYnNpdGUsXG4gICAgICAgICAgICAgIHlvdSBzaG91bGQgY2hlY2sgdGhlIGFwcGxpY2FibGUgcHJpdmFjeSBwb2xpY3kgb2YgdGhlIG90aGVyIHNlcnZpY2UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDM+UXVlc3Rpb25zICZhbXA7IENvbW1lbnRzPC9oMz5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIGFib3V0IG91ciBQcml2YWN5IFBvbGljeSwgcGxlYXNlXG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJtYWlsdG86e3sgY29tcGFueV9lbWFpbCB9fVwiPmxldCB1cyBrbm93PC9hPi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1wb2xpY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3ByaXZhY3ktcG9saWN5L3ByaXZhY3ktcG9saWN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LXBvbGljeS9wcml2YWN5LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBT2hFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFMNUQ7O1FBT0ksYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBU2xFO0lBSkcsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3RELENBQUM7K0dBVlEsc0JBQXNCO21HQUF0QixzQkFBc0Isa0hDVG5DLHN0V0F1TUE7OzRGRDlMYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksbUJBQW1COzhCQU03QixRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXByaXZhY3ktcG9saWN5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJpdmFjeS1wb2xpY3kuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcml2YWN5UG9saWN5Q29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpc1B1YmxpYyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygncHJpdmFjeS1wb2xpY3knKTtcblxuICAgIGNvbXBhbnlfbmFtZTogc3RyaW5nO1xuICAgIGNvbXBhbnlfZW1haWw6IHN0cmluZztcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBhbnlfbmFtZSA9IHRoaXMuYXBwQ29uZmlnLmNvbXBhbnkubmFtZTtcbiAgICAgICAgdGhpcy5jb21wYW55X2VtYWlsID0gdGhpcy5hcHBDb25maWcuY29tcGFueS5lbWFpbDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNQdWJsaWNcIj5cbiAgPHB3LWxhbmRpbmctcGFnZS1oZWFkZXIgW2xhbmRpbmddPVwiZmFsc2VcIj48L3B3LWxhbmRpbmctcGFnZS1oZWFkZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbXQtNSc6IGlzUHVibGljIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGVybXMtb2Ytc2VydmljZVwiPlxuICAgICAgICAgICAgPGgxPlByaXZhY3kgcG9saWN5PC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgPGgzPllvdXIgQ29udGVudDwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSWYgeW91IG9wZXJhdGUgYSB7eyBjb21wYW55X25hbWUgfX0gVXNlciBBY2NvdW50LCBhbmQvb3IgY29tbWVudCBvbixcbiAgICAgICAgICAgICAgcG9zdCBtYXRlcmlhbCB0bywgcG9zdCBsaW5rcyBvbiBvciBvdGhlcndpc2UgbWFrZSAob3IgYWxsb3cgYW55IHRoaXJkXG4gICAgICAgICAgICAgIHBhcnR5IHRvIG1ha2UpIG1hdGVyaWFsIGF2YWlsYWJsZSBieSBtZWFucyBvZiB0aGUgV2Vic2l0ZSBhbmQgb3JcbiAgICAgICAgICAgICAgQXBwbGljYXRpb25zIChjb2xsZWN0aXZlbHkgY2FsbGVkIOKAnENvbnRlbnTigJ0pLCB5b3UgYXJlIGVudGlyZWx5XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGF0IENvbnRlbnQgYW5kIGFueSBoYXJtIHJlc3VsdGluZyBmcm9tIHRoYXQgQ29udGVudC5cbiAgICAgICAgICAgICAgVGhhdCBpcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIENvbnRlbnQgaW4gcXVlc3Rpb24gY29uc3RpdHV0ZXMgKGJ1dFxuICAgICAgICAgICAgICBub3QgbGltaXRlZCB0bykgdGV4dCwgZ3JhcGhpY3MsIGFuIGF1ZGlvIGZpbGUgb3IgY29tcHV0ZXIgc29mdHdhcmUuIEJ5XG4gICAgICAgICAgICAgIG1ha2luZyBDb250ZW50IGF2YWlsYWJsZSwgeW91IHJlcHJlc2VudCBhbmQgd2FycmFudCB0aGF0OlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPG9sPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgdGhlIENvbnRlbnQgaXMgbm90IGNvbnNpZGVyZWQgdG8gYmUgb2JzY2VuZSwgaW5hcHByb3ByaWF0ZSxcbiAgICAgICAgICAgICAgICBkZWZhbWF0b3J5LCBkaXNwYXJhZ2luZywgaW5kZWNlbnQsIHNlZGl0aW91cywgb2ZmZW5zaXZlLFxuICAgICAgICAgICAgICAgIHBvcm5vZ3JhcGhpYywgdGhyZWF0ZW5pbmcsIGFidXNpdmUsIGxpYWJsZSB0byBpbmNpdGUgcmFjaWFsIGhhdHJlZCxcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yeSwgYmxhc3BoZW1vdXMsIGluIGJyZWFjaCBvZiBjb25maWRlbmNlIG9yIGluIGJyZWFjaCBvZlxuICAgICAgICAgICAgICAgIHByaXZhY3k7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgZG93bmxvYWRpbmcsIGNvcHlpbmcgYW5kIHVzZSBvZiB0aGUgQ29udGVudCB3aWxsIG5vdCBpbmZyaW5nZVxuICAgICAgICAgICAgICAgIHRoZSBwcm9wcmlldGFyeSByaWdodHMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGNvcHlyaWdodCxcbiAgICAgICAgICAgICAgICBwYXRlbnQsIHRyYWRlbWFyayBvciB0cmFkZSBzZWNyZXQgcmlnaHRzLCBvZiBhbnkgdGhpcmQgcGFydHk7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICBpZiB5b3VyIGVtcGxveWVyIGhhcyByaWdodHMgdG8gaW50ZWxsZWN0dWFsIHByb3BlcnR5IHlvdSBjcmVhdGUsIHlvdVxuICAgICAgICAgICAgICAgIGhhdmUgZWl0aGVyIChpKSByZWNlaXZlZCBwZXJtaXNzaW9uIGZyb20geW91ciBlbXBsb3llciB0byBwb3N0IG9yXG4gICAgICAgICAgICAgICAgbWFrZSBhdmFpbGFibGUgdGhlIENvbnRlbnQsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55XG4gICAgICAgICAgICAgICAgc29mdHdhcmUsIG9yIChpaSkgc2VjdXJlZCBmcm9tIHlvdXIgZW1wbG95ZXIgYSB3YWl2ZXIgYXMgdG8gYWxsXG4gICAgICAgICAgICAgICAgcmlnaHRzIGluIG9yIHRvIHRoZSBDb250ZW50O1xuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgeW91IGhhdmUgZnVsbHkgY29tcGxpZWQgd2l0aCBhbnkgdGhpcmQtcGFydHkgbGljZW5zZXMgcmVsYXRpbmcgdG9cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCwgYW5kIGhhdmUgZG9uZSBhbGwgdGhpbmdzIG5lY2Vzc2FyeSB0byBzdWNjZXNzZnVsbHkgcGFzc1xuICAgICAgICAgICAgICAgIHRocm91Z2ggdG8gZW5kIHVzZXJzIGFueSByZXF1aXJlZCB0ZXJtcztcbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHRoZSBDb250ZW50IGRvZXMgbm90IGNvbnRhaW4gb3IgaW5zdGFsbCBhbnkgdmlydXNlcywgd29ybXMsIG1hbHdhcmUsXG4gICAgICAgICAgICAgICAgVHJvamFuIGhvcnNlcyBvciBvdGhlciBoYXJtZnVsIG9yIGRlc3RydWN0aXZlIGNvbnRlbnQ7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCBpcyBub3Qgc3BhbSwgaXMgbm90IG1hY2hpbmUgb3IgcmFuZG9tbHkgZ2VuZXJhdGVkIGFuZFxuICAgICAgICAgICAgICAgIGRvZXMgbm90IGNvbnRhaW4gdW5ldGhpY2FsIG9yIHVud2FudGVkIGNvbW1lcmNpYWwgY29udGVudCBkZXNpZ25lZFxuICAgICAgICAgICAgICAgIHRvIGRyaXZlIHRyYWZmaWMgdG8gdGhpcmQgcGFydHkgc2l0ZXMgb3IgZnVydGhlciB1bmxhd2Z1bCBhY3RzO1xuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgeW91ciBVc2VyIEFjY291bnQgaXMgbm90IGdldHRpbmcgYWR2ZXJ0aXNlZCB2aWEgdW53YW50ZWQgZWxlY3Ryb25pY1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzIHN1Y2ggYXMgc3BhbSBsaW5rcyBvbiBuZXdzZ3JvdXBzLCBlbWFpbCBsaXN0cywgb3RoZXIgYmxvZ3NcbiAgICAgICAgICAgICAgICBhbmQgd2Vic2l0ZXMsIGFuZCBzaW1pbGFyIHVuc29saWNpdGVkIHByb21vdGlvbmFsIG1ldGhvZHM7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB5b3VyIFVzZXIgQWNjb3VudCBpcyBub3QgbmFtZWQgaW4gYSBtYW5uZXIgdGhhdCBtaXNsZWFkcyB1c2VycyBpbnRvXG4gICAgICAgICAgICAgICAgdGhpbmtpbmcgdGhhdCB5b3UgYXJlIGFub3RoZXIgcGVyc29uIG9yIGNvbXBhbnk7XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB0aGUgQ29udGVudCB3aWxsIG5vdCBjYXVzZSB5b3Ugb3IgdXMgdG8gYnJlYWNoIGFueSBsYXcsIHJlZ3VsYXRpb24sXG4gICAgICAgICAgICAgICAgcnVsZSwgY29kZSBvciBvdGhlciBsZWdhbCBvYmxpZ2F0aW9uOyBhbmRcbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPnRoZSBDb250ZW50IHdpbGwgbm90IGJyaW5nIHVzLCBvciB0aGUgU2l0ZSBpbnRvIGRpc3JlcHV0ZS48L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBCeSBzdWJtaXR0aW5nIENvbnRlbnQgZm9yIGluY2x1c2lvbiBpbiB5b3VyIFVzZXIgQWNjb3VudCBvciB0byB0aGUgU2l0ZSxcbiAgICAgICAgICAgICAgeW91IGdyYW50IHVzIGEgd29ybGR3aWRlLCByb3lhbHR5IGZyZWUsIGFuZCBub24tZXhjbHVzaXZlIGxpY2Vuc2UgdG9cbiAgICAgICAgICAgICAgdXNlIHRoYXQgY29udGVudCBpbiBhbnkgd2F5IChpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uLCByZXByb2R1Y2luZyxcbiAgICAgICAgICAgICAgY2hhbmdpbmcgYW5kIGNvbW11bmljYXRpbmcgdGhlIENvbnRlbnQpIGFuZCBwZXJtaXQgdXMgdG8gYXV0aG9yaXNlIGFueVxuICAgICAgICAgICAgICBvdGhlciBwZXJzb24gdG8gZG8gdGhlIHNhbWUgdGhpbmcuIElmIHlvdSBkZWxldGUgYW55IENvbnRlbnQsIHdlIHdpbGxcbiAgICAgICAgICAgICAgdXNlIHJlYXNvbmFibGUgZWZmb3J0cyB0byByZW1vdmUgaXQgZnJvbSB0aGUgU2l0ZSwgYnV0IHlvdSBhY2tub3dsZWRnZVxuICAgICAgICAgICAgICB0aGF0IGNhY2hpbmcgb3IgcmVmZXJlbmNlcyB0byB0aGUgQ29udGVudCBtYXkgbm90IGJlIG1hZGUgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgdW5hdmFpbGFibGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2l0aG91dCBsaW1pdGluZyBhbnkgb2YgdGhvc2UgcmVwcmVzZW50YXRpb25zIG9yIHdhcnJhbnRpZXMsIHdlIHJlc2VydmVcbiAgICAgICAgICAgICAgdGhlIHJpZ2h0ICh0aG91Z2ggbm90IHRoZSBvYmxpZ2F0aW9uKSB0bywgaW4gb3VyIHNvbGUgZGlzY3JldGlvblxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPG9sPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgcmVmdXNlIG9yIHJlbW92ZSBhbnkgY29udGVudCB0aGF0LCBpbiBvdXIgcmVhc29uYWJsZSBvcGluaW9uLFxuICAgICAgICAgICAgICAgIHZpb2xhdGVzIGFueSBvZiBvdXIgcG9saWNpZXMgb3IgYWdyZWVtZW50cyBvciBpcyBpbiBhbnkgd2F5IGhhcm1mdWxcbiAgICAgICAgICAgICAgICBvciBvYmplY3Rpb25hYmxlLCBvclxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgdGVybWluYXRlIG9yIGRlbnkgYWNjZXNzIHRvIGFuZCB1c2Ugb2YgdGhlIFNlcnZpY2UgdG8gYW55IGluZGl2aWR1YWxcbiAgICAgICAgICAgICAgICBvciBlbnRpdHkgZm9yIGFueSByZWFzb24sIGluIG91ciBzb2xlIGRpc2NyZXRpb24uXG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGgzPlByaXZhY3k8L2gzPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIGdldCBpbmZvcm1hdGlvbiBhYm91dCB5b3UgaW4gYSByYW5nZSBvZiB3YXlzLiBXZSBjb2xsZWN0IHlvdXImbHJtO1xuICAgICAgICAgICAgICBuYW1lLCZscm07IGVtYWlsIGFkZHJlc3MgYW5kIG90aGVyIGluZm9ybWF0aW9uIHlvdSBkaXJlY3RseSBnaXZlIHVzIG9uXG4gICAgICAgICAgICAgIG91ciBTaXRlLiBXZSBtYXkgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHlvdSBmcm9tIG90aGVyIHNvdXJjZXMuIFdlIG1heVxuICAgICAgICAgICAgICBhZGQgdGhpcyB0byBpbmZvcm1hdGlvbiB3ZSBnZXQgZnJvbSB0aGlzIFNpdGUuIFdlIG1heSBhdXRvbWF0aWNhbGx5IGxvZ1xuICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB5b3UgYW5kIHlvdXIgY29tcHV0ZXIuIFdlIG1heSBsb2cgaW5mb3JtYXRpb24gdXNpbmdcbiAgICAgICAgICAgICAgXCJjb29raWVzLlwiIENvb2tpZXMgYXJlIHNtYWxsIGRhdGEgZmlsZXMgc3RvcmVkIG9uIHlvdXIgaGFyZCBkcml2ZSBieSBhXG4gICAgICAgICAgICAgIHdlYnNpdGUuIENvb2tpZXMgaGVscCB1cyBtYWtlIG91ciBTaXRlIGFuZCB5b3VyIHZpc2l0IGJldHRlci4gV2UgdXNlXG4gICAgICAgICAgICAgIGNvb2tpZXMgdG8gc2VlIHdoaWNoIHBhcnRzIG9mIG91ciBTaXRlIHBlb3BsZSB1c2UgYW5kIGxpa2UgYW5kIHRvIGNvdW50XG4gICAgICAgICAgICAgIHZpc2l0cyB0byBvdXIgU2l0ZS4gV2UgbWF5IHN0b3JlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gYWxvbmcgd2l0aFxuICAgICAgICAgICAgICB5b3VyIGZpbGVzIGFuZCBkYXRhIG9uIGEgdGhpcmQgcGFydHkgc2VydmVyIHN1Y2ggYXMgQW1hem9uIFdlYiBTZXJ2aWNlcztcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSB1c2UgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiB0byBvcGVyYXRlLCBtYWludGFpbiwgYW5kIGltcHJvdmUgb3VyXG4gICAgICAgICAgICAgIHNpdGVzLCBwcm9kdWN0cywgYW5kIHNlcnZpY2VzLiBXZSB1c2UgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiB0b1xuICAgICAgICAgICAgICByZXNwb25kIHRvIGNvbW1lbnRzIGFuZCBxdWVzdGlvbnMgYW5kIHByb3ZpZGUgY3VzdG9tZXIgc2VydmljZS4gV2UgdXNlXG4gICAgICAgICAgICAgIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSBhbmQgZGVsaXZlciBwcm9kdWN0cyBhbmQgc2VydmljZXNcbiAgICAgICAgICAgICAgY3VzdG9tZXJzIHJlcXVlc3QuIFdlIGFsc28gdXNlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gc2VuZCB5b3VcbiAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgc2VydmljZSBhbmQgdG8gcmVzcG9uZCB0byBjdXN0b21lciBzdXBwb3J0XG4gICAgICAgICAgICAgIHJlcXVlc3RzLiBZb3UgY2FuIGFjY2VzcyBhbmQgY2hhbmdlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gYnkgbG9nZ2luZ1xuICAgICAgICAgICAgICBpbiB0byB5b3VyIGFjY291bnQgc2V0dGluZ3MgcGFnZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBtYXkgc2hhcmUgcGVyc29uYWwgaW5mb3JtYXRpb24gd2l0aCB5b3VyIGNvbnNlbnQuIEZvciBleGFtcGxlLCB5b3VcbiAgICAgICAgICAgICAgbWF5IGxldCB1cyBzaGFyZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB3aXRoIG90aGVycyBmb3IgdGhlaXIgb3duXG4gICAgICAgICAgICAgIG1hcmtldGluZyB1c2VzLiBUaG9zZSB1c2VzIHdpbGwgYmUgc3ViamVjdCB0byB0aGVpciBwcml2YWN5IHBvbGljaWVzLiBXZVxuICAgICAgICAgICAgICBtYXkgc2hhcmUgcGVyc29uYWwgaW5mb3JtYXRpb24gd2hlbiB3ZSBkbyBhIGJ1c2luZXNzIGRlYWwsIG9yIG5lZ290aWF0ZVxuICAgICAgICAgICAgICBhIGJ1c2luZXNzIGRlYWwsIGludm9sdmluZyBzYWxlIG9yIHRyYW5zZmVyIG9mIGFsbCBvciBhIHBhcnQgb2Ygb3VyXG4gICAgICAgICAgICAgIGJ1c2luZXNzIG9yIGFzc2V0cy4gVGhlc2UgZGVhbHMgY2FuIGluY2x1ZGUgYW55IG1lcmdlciwgZmluYW5jaW5nLFxuICAgICAgICAgICAgICBhY3F1aXNpdGlvbiwgb3IgYmFua3J1cHRjeSB0cmFuc2FjdGlvbiBvciBwcm9jZWVkaW5nLiBXZSBtYXkgc2hhcmVcbiAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gZm9yIGxlZ2FsLCBwcm90ZWN0aW9uLCBhbmQgc2FmZXR5IHB1cnBvc2VzLiBXZSBtYXlcbiAgICAgICAgICAgICAgc2hhcmUgaW5mb3JtYXRpb24gdG8gY29tcGx5IHdpdGggbGF3cy4gV2UgbWF5IHNoYXJlIGluZm9ybWF0aW9uIHRvXG4gICAgICAgICAgICAgIHJlc3BvbmQgdG8gbGF3ZnVsIHJlcXVlc3RzIGFuZCBsZWdhbCBwcm9jZXNzLiBXZSBtYXkgc2hhcmUgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgdG8gcHJvdGVjdCB0aGUgcmlnaHRzLCBwcm9wZXJ0eSBvciBzYWZldHkgb2YgdGhlIFNlcnZpY2UsIG91ciB1c2VycyxcbiAgICAgICAgICAgICAgY3VzdG9tZXJzLCBhbmQgb3RoZXJzLiBUaGlzIGluY2x1ZGVzIGVuZm9yY2luZyBvdXIgYWdyZWVtZW50cywgcG9saWNpZXMsXG4gICAgICAgICAgICAgIGFuZCB0ZXJtcyBvZiB1c2UuIFdlIG1heSBzaGFyZSBpbmZvcm1hdGlvbiBpbiBhbiBlbWVyZ2VuY3kuIFdlIG1heSBzaGFyZVxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbiB3aXRoIHRob3NlIHdobyBuZWVkIGl0IHRvIGRvIHdvcmsgZm9yIHVzLiBXZSBtYXkgYWxzbyBzaGFyZVxuICAgICAgICAgICAgICBhZ2dyZWdhdGVkIGFuZC9vciBhbm9ueW1pemVkIGRhdGEgd2l0aCBvdGhlcnMgZm9yIHRoZWlyIG93biB1c2VzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIE91ciBtYXJrZXRpbmcgZW1haWxzIHRlbGwgeW91IGhvdyB0byDigJxvcHQtb3V0LuKAnSBJZiB5b3Ugb3B0IG91dCwgd2UgbWF5XG4gICAgICAgICAgICAgIHN0aWxsIHNlbmQgeW91IG5vbi1tYXJrZXRpbmcgZW1haWxzLiBOb24tbWFya2V0aW5nIGVtYWlscyBpbmNsdWRlIGVtYWlsc1xuICAgICAgICAgICAgICBhYm91dCB5b3VyIGFjY291bnRzIGFuZCBvdXIgYnVzaW5lc3MgZGVhbGluZ3Mgd2l0aCB5b3UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGNhbiB0eXBpY2FsbHkgcmVtb3ZlIGFuZCByZWplY3QgY29va2llcyBmcm9tIG91ciBTaXRlIHdpdGggeW91clxuICAgICAgICAgICAgICBicm93c2VyIHNldHRpbmdzLiBNYW55IGJyb3dzZXJzIGFyZSBzZXQgdG8gYWNjZXB0IGNvb2tpZXMgdW50aWwgeW91XG4gICAgICAgICAgICAgIGNoYW5nZSB5b3VyIHNldHRpbmdzLiBJZiB5b3UgcmVtb3ZlIG9yIHJlamVjdCBvdXIgY29va2llcywgaXQgY291bGRcbiAgICAgICAgICAgICAgYWZmZWN0IGhvdyBvdXIgU2l0ZSB3b3JrcyBmb3IgeW91LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHt7IGNvbXBhbnlfbmFtZSB9fSBzZWxscyBhbGwgb3IgcGFydCBvZiBpdHMgYnVzaW5lc3Mgb3IgbWFrZXMgYSBzYWxlXG4gICAgICAgICAgICAgIG9yIHRyYW5zZmVyIG9mIGl0cyBhc3NldHMgb3IgaXMgb3RoZXJ3aXNlIGludm9sdmVkIGluIGEgbWVyZ2VyIG9yXG4gICAgICAgICAgICAgIHRyYW5zZmVyIG9mIGFsbCBvciBhIG1hdGVyaWFsIHBhcnQgb2YgaXRzIGJ1c2luZXNzLFxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0gbWF5IHRyYW5zZmVyIHlvdXIgaW5mb3JtYXRpb24gdG8gdGhlIHBhcnR5IG9yIHBhcnRpZXNcbiAgICAgICAgICAgICAgaW52b2x2ZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGFzIHBhcnQgb2YgdGhhdCB0cmFuc2FjdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0gdXNlcyBhIHJhbmdlIG9mIGNvbW1lcmNpYWxseSByZWFzb25hYmxlIG1lYXN1cmVzIHRvXG4gICAgICAgICAgICAgIHNhZmVndWFyZCBQZXJzb25hbCBJbmZvcm1hdGlvbiBpbiBpdHMgcG9zc2Vzc2lvbiBhZ2FpbnN0IGxvc3MsIHRoZWZ0IGFuZFxuICAgICAgICAgICAgICB1bmF1dGhvcml6ZWQgdXNlLCBkaXNjbG9zdXJlIG9yIG1vZGlmaWNhdGlvbi4gSG93ZXZlciwgbm8gb25lIGNhblxuICAgICAgICAgICAgICBndWFyYW50ZWUgdGhlIGNvbXBsZXRlIHNhZmV0eSBvZiB5b3VyIGluZm9ybWF0aW9uLiBQbGVhc2UgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgbm90aWZ5IHVzIGlmIHlvdSBiZWxpZXZlIHRoZXJlIG1heSBiZSBhbiBpc3N1ZSBvciBhIHByb2JsZW0gcmVnYXJkaW5nXG4gICAgICAgICAgICAgIHRoZSBpbnRlZ3JpdHkgb2YgeW91ciBpbmZvcm1hdGlvbiBieSBjb250YWN0aW5nIHVzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIHdlIG1heSB1c2UgYW4gdW5hZmZpbGlhdGVkIHBheW1lbnQgc2VydmljZSB0byBhbGxvdyB5b3VcbiAgICAgICAgICAgICAgdG8gcHVyY2hhc2UgYSBwcm9kdWN0IG9yIG1ha2UgcGF5bWVudHMgKOKAnFBheW1lbnQgU2VydmljZeKAnSkuIElmIHlvdSB3aXNoXG4gICAgICAgICAgICAgIHRvIHB1cmNoYXNlIGEgcHJvZHVjdCBvciBtYWtlIGEgcGF5bWVudCBpbiBzdWNoIGEgY2FzZSwgeW91IHdpbGwgYmVcbiAgICAgICAgICAgICAgZGlyZWN0ZWQgdG8gYSBQYXltZW50IFNlcnZpY2Ugd2VicGFnZS4gQW55IGluZm9ybWF0aW9uIHRoYXQgeW91IHByb3ZpZGVcbiAgICAgICAgICAgICAgdG8gYSBQYXltZW50IFNlcnZpY2Ugd2lsbCBiZSBzdWJqZWN0IHRvIHRoZSBhcHBsaWNhYmxlIFBheW1lbnQgU2VydmljZeKAmXNcbiAgICAgICAgICAgICAgcHJpdmFjeSBwb2xpY3ksIHJhdGhlciB0aGFuIHRoaXMgUHJpdmFjeSBQb2xpY3kuIFdlIGhhdmUgbm8gY29udHJvbFxuICAgICAgICAgICAgICBvdmVyLCBhbmQgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IsIGFueSBQYXltZW50IFNlcnZpY2XigJlzIHVzZSBvZlxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQgdGhyb3VnaCBhbnkgUGF5bWVudCBTZXJ2aWNlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRoZSB7eyBjb21wYW55X25hbWUgfX0gd2Vic2l0ZSBtYXkgYWxzbyBiZSBsaW5rZWQgdG8gc2l0ZXMgb3BlcmF0ZWQgYnlcbiAgICAgICAgICAgICAgdGhpcmQgcGFydGllcywgYW5kIG1heSBjYXJyeSBhZHZlcnRpc2VtZW50cyBvciBvZmZlciBjb250ZW50LFxuICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LCBnYW1lcyBvciBhcHBsaWNhdGlvbnMgZGV2ZWxvcGVkIGFuZCBtYWludGFpbmVkIGJ5IHRoaXJkXG4gICAgICAgICAgICAgIHBhcnRpZXMuIFNvbWUgb2YgdGhlc2UgdGhpcmQgcGFydHkgc2l0ZXMgbWF5IGJlIGNvLWJyYW5kZWQgd2l0aCBhXG4gICAgICAgICAgICAgIHt7IGNvbXBhbnlfbmFtZSB9fSBsb2dvLCBldmVuIHRob3VnaCB0aGV5IGFyZSBub3Qgb3BlcmF0ZWQgb3IgbWFpbnRhaW5lZFxuICAgICAgICAgICAgICBieSB1cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0gaXMgbm90IHJlc3BvbnNpYmxlIGZvciB0aGUgcHJpdmFjeSBwcmFjdGljZXMgb2YgYW55XG4gICAgICAgICAgICAgIHN1Y2ggdGhpcmQgcGFydGllcywgYW5kIG9uY2UgeW91IGxlYXZlIHRoZSB7eyBjb21wYW55X25hbWUgfX0gd2Vic2l0ZSxcbiAgICAgICAgICAgICAgeW91IHNob3VsZCBjaGVjayB0aGUgYXBwbGljYWJsZSBwcml2YWN5IHBvbGljeSBvZiB0aGUgb3RoZXIgc2VydmljZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMz5RdWVzdGlvbnMgJmFtcDsgQ29tbWVudHM8L2gzPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgYWJvdXQgb3VyIFByaXZhY3kgUG9saWN5LCBwbGVhc2VcbiAgICAgICAgICAgICAgPGEgaHJlZj1cIm1haWx0bzp7eyBjb21wYW55X2VtYWlsIH19XCI+bGV0IHVzIGtub3c8L2E+LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|