@loxia/imx-viewer 12.0.2 → 12.0.3-240304093633753

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -104,6 +104,9 @@ Met de onderstaande css kan de default breedte van een clickarea aangepast worde
104
104
 
105
105
  ### <!--next.version--> <!--next.release-date-->
106
106
 
107
+ ### 12.0.3 29-02-2024
108
+ * PW-16749 fix sonar
109
+
107
110
  ### 12.0.2 14-12-2023
108
111
  * PW-14837 Add missing font class
109
112
 
@@ -284,10 +284,10 @@ export class ImxViewerComponent {
284
284
  this.clickAreaService.delayedClickAreaCreation(clickareaIds);
285
285
  }
286
286
  }
287
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: i2.ClickareaService }, { token: i3.PuicHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
288
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
287
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: i2.ClickareaService }, { token: i3.PuicHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
288
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
289
289
  }
290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerComponent, decorators: [{
290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerComponent, decorators: [{
291
291
  type: Component,
292
292
  args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"] }]
293
293
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImpor
317
317
  }], svgLoaded: [{
318
318
  type: Output
319
319
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2lteC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFVaEQsTUFBTSxPQUFPLGtCQUFrQjtJQTZCM0IsWUFBMkMsUUFBYSxFQUFVLElBQWdCLEVBQzlELGdCQUFrQyxFQUFVLFVBQTZCO1FBRGxELGFBQVEsR0FBUixRQUFRLENBQUs7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQTdCckYsc0JBQWlCLEdBQUcsNEJBQTRCLENBQUM7UUFDakQsZUFBVSxHQUFHLHFC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ckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgU3ZnUGFuWm9vbSBmcm9tICdzdmctcGFuLXpvb20nO1xyXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50JztcclxuaW1wb3J0IHsgUG9wb3ZlckluZm8gfSBmcm9tICcuLi9tb2RlbC9wb3BvdmVyLWluZm8nO1xyXG5pbXBvcnQgeyBTZWxlY3RpZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0aWUtZXZlbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RpZUluZm8gfSBmcm9tICcuLi9tb2RlbC9zZWxlY3RpZS1pbmZvJztcclxuaW1wb3J0IHsgU3ZnSW5mbyB9IGZyb20gJy4uL21vZGVsL3N2Zy1pbmZvJztcclxuaW1wb3J0IHsgQ2xpY2thcmVhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NsaWNrYXJlYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHVpY0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhc3Nlc1V0aWwgfSBmcm9tICcuLi91dGlscy9jbGFzc2VzLXV0aWwnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZG9jdW1lbnQtdG9rZW4nO1xyXG5pbXBvcnQgeyBGb2N1c1V0aWwgfSBmcm9tICcuLi91dGlscy9mb2N1cy11dGlsJztcclxuXHJcbi8vIFN2Z1Bhblpvb20uSW5zdGFuY2UgY2Fubm90IGJlIHVzZWQgaW4gbGlicyB0aGF0IHVzZSB0aGlzIGlteC12aWV3ZXIgbGliIGJlY2F1c2UgaXQgaXMgZXhwb3J0ZWQgaW4gYW4gb2xkLCBub24gYW5ndWxhciAxNiBjb21wYXRpYmxlIHdheS5cclxuZXhwb3J0IHR5cGUgU3ZnSW5zdGFuY2UgPSB0eXBlb2YgU3ZnUGFuWm9vbTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbXgtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXgtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2lteC12aWV3ZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXhWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgU1ZHX0JBU0U2NF9QUkVGSVggPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnO1xyXG4gICAgcHJpdmF0ZSBTVkdfUFJFRklYID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnO1xyXG5cclxuICAgIEBJbnB1dCgpIHVzZUNsaWNrQXJlYSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgaW5saW5lRGduQ3NzSW1wb3J0ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzdmdJbmZvOiBTdmdJbmZvW107XHJcbiAgICBASW5wdXQoKSBzZWxlY3RpZUluZm9zOiBTZWxlY3RpZUluZm9bXSA9IFtdO1xyXG5cclxuICAgIC8vIE9uZGVyc3RhYW5kZSBpbnB1dHMgd29yZGVuIG1lZWdlbm9tZW4gdm9vciBjbGlja2FyZWE6XHJcbiAgICBASW5wdXQoKSBjbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3N2Z1BhcmVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHN2Z1BhcmVudFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBlcnJvcnMgPSBmYWxzZTtcclxuICAgIHBvcG92ZXJTdHlsZTogYW55ID0geyBkaXNwbGF5OiAnaW5saW5lJyB9O1xyXG4gICAgcG9wb3Zlckh0bWxDb250ZW50ID0gJyc7XHJcbiAgICBwb3BvdmVyVGl0bGVDb250ZW50OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSByaWdodENsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBzdmdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdmdHZWxhZGVuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBNYXA8c3RyaW5nLCBNYXA8RWxlbWVudCwgYW55Pj4gPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIHN2Z1Bhblpvb21SZWY6IFN2Z0luc3RhbmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRG9jdW1lbnRUb2tlbikgcHJpdmF0ZSBkb2N1bWVudDogYW55LCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNsaWNrQXJlYVNlcnZpY2U6IENsaWNrYXJlYVNlcnZpY2UsIHByaXZhdGUgcHVpY0hlbHBlcjogUHVpY0hlbHBlclNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN2Z1Bhblpvb21SZWZJZk5vdEV4aXN0cygpO1xyXG4gICAgICAgIHRoaXMucHVpY0hlbHBlci5zZXRSb290U3ZnKHRoaXMuZ2V0U3ZnUGFyZW50KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICAvLyBJZiBJbXgtdmlld2VyIGlzIGluaXRpYWxpemVkIHdpdGggc3ZnSW5mbywgbmdPbkNoYW5nZXMgaXMgY2FsbGVkIGJlZm9yZSBuZ09uSW5pdC5cclxuICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgc3ZnUGFuWm9vbVJlZiBoZXJlLlxyXG4gICAgICAgIHRoaXMuY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdXNlQ2xpY2tBcmVhLCBjbGlja2FibGVJZHMsIHJpZ2h0Q2xpY2thYmxlSWRzLCBwb3BvdmVySW5mb3MsIHNlbGVjdGllSW5mb3MsIHN2Z0luZm8gfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgICAgIGlmICh1c2VDbGlja0FyZWEgfHwgY2xpY2thYmxlSWRzIHx8IHJpZ2h0Q2xpY2thYmxlSWRzIHx8IHBvcG92ZXJJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnSW5mbyAmJiBzdmdJbmZvKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFN2Z3MoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNsaWNrYWJsZUlkcyAmJiBjbGlja2FibGVJZHMgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLmNsaWNrYWJsZUlkcywgJ2NsaWNrJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yaWdodENsaWNrYWJsZUlkcyAmJiByaWdodENsaWNrYWJsZUlkcyAmJiB0aGlzLnN2Z0dlbGFkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMucmlnaHRDbGlja2FibGVJZHMsICdjb250ZXh0bWVudScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aWVJbmZvcyAmJiBzZWxlY3RpZUluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MgJiYgcG9wb3ZlckluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkZE1vdXNlb3ZlckV2ZW50SGFuZGxlclRvRWxlbWVudHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmb2N1c09uSWRzKGZvY3VzSWRzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIEZvY3VzVXRpbC5mb2N1c09uSWRzKGZvY3VzSWRzLCB0aGlzLnN2Z1Bhblpvb21SZWYsIHRoaXMucHVpY0hlbHBlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFN2Z1Bhblpvb21JbnN0YW5jZTogKCkgPT4gU3ZnSW5zdGFuY2UgPSAoKSA9PiB0aGlzLnN2Z1Bhblpvb21SZWY7XHJcblxyXG4gICAgLy8gSGVyZSBvbmx5IHVzZWQgaW4gdGVzdCwgYnV0IGFsc28gdXNlZCBieSBhcHBsaWNhdGlvbnMuIERvIG5vdCByZW1vdmUuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFhDb29yZGluYXRlKGRlY29kZWRTdmdEYXRhVXJsOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gZGVjb2RlZFN2Z0RhdGFVcmw7XHJcbiAgICAgICAgLy8gRGUgU1ZHLXdpZHRoIHdvcmR0IGluIGRlIHN2ZyB0YWcgZ2VzcGVjaWZpY2VlcmQuXHJcbiAgICAgICAgY29uc3QgeCA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZC5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VGbG9hdCh4KTtcclxuICAgICAgICBkaXYgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZVBvcE92ZXIgPSAoKSA9PiB0aGlzLnBvcG92ZXJTdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN2Z1Bhblpvb21SZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmID0gU3ZnUGFuWm9vbSh0aGlzLmdldFN2Z1BhcmVudCgpLCB7XHJcbiAgICAgICAgICAgICAgICBmaXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGJsQ2xpY2tab29tRW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBvblpvb206ICgpID0+IHRoaXMuaGlkZVBvcE92ZXIoKSxcclxuICAgICAgICAgICAgICAgIG9uUGFuOiAoKSA9PiB0aGlzLmhpZGVQb3BPdmVyKClcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9Sb290U3ZnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3R5bGUgd29yZHQgdmFudWl0IGphdmFzY3JpcHQgdG9lZ2V2b2VnZCBuYSBkZSBjcmVhdGUgdmFuIFN2Z1pvb21QYW5SZWYgZGV6ZSBtYWFrdCBlZW4gdmlld3BvcnQgYWFuLlxyXG4gICAgICogLSBDbGlja2FyZWEgQ1NTIHdvcmR0IGR5bmFtaXNjaCBhYW4gZGUgU1ZHIHRvZWdldm9lZ2QsIGRpdCB2b29ya29tdCBkYXQgZGF0IGVyIG5nY29udGVudCBwcm9wZXJ0eSBvcCBnZXBsYWF0c3Qgd29yZHQuXHJcbiAgICAgKiAgIERlIFNWRydzIHdvcmRlbiBuaWV0IHZvb3J6aWVuIHZhbiBuZ2NvbnRlbnQgYXR0cmlidXV0LlxyXG4gICAgICogLSBER04uY3NzIGltcG9ydCB3b3JkdCAob3B0aW9uZWVsKSBpbiBkZSByb290IFNWRyBvcGdlbm9tZW4sIGRlemUgaXMgZWVyc3QgdmVyd2lqZGVyZCB1aXQgZGUgU1ZHJ3MuIE9tIG1lZXJkZXJlIGltcG9ydHMgdGUgdm9vcmtvbWVuLlxyXG4gICAgICogKi9cclxuICAgIHByaXZhdGUgYWRkU3R5bGVUb1Jvb3RTdmcoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3ZnUGFyZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZSAhPT0gJ2RlZnMnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2RlZnMnKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzdHlsZSA9IHRoaXMuaW5saW5lRGduQ3NzSW1wb3J0ID8gJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTtcXG4nIDogJyc7XHJcbiAgICAgICAgICAgIHN0eWxlICs9XHJcbiAgICAgICAgICAgICAgICBgLmlteHZpZXctc2VsZWN0ZWQgPiBwb2x5bGluZS5pbXh2aWV3LWNsaWNrYXJlYSwgcG9seWxpbmUuaW14dmlldy1jbGlja2FyZWEge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogdmFyKC0taW14dmlldy1jbGlja2FyZWEtc3Ryb2tlLCB0cmFuc3BhcmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiB2YXIoLS1pbXh2aWV3LWNsaWNrYXJlYS1zdHJva2Utd2lkdGgsIDEwcHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICB9YDtcclxuICAgICAgICAgICAgZGVmcy5pbm5lckhUTUwgPVxyXG4gICAgICAgICAgICAgICAgYDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAkeyBzdHlsZSB9XHJcbiAgICAgICAgICAgICAgICA8L3N0eWxlPmA7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudENoaWxkID0gdGhpcy5nZXRTdmdQYXJlbnQoKS5maXJzdEVsZW1lbnRDaGlsZDtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdmdQYXJlbnQoKS5pbnNlcnRCZWZvcmUoZGVmcywgZmlyc3RFbGVtZW50Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmdzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5zdmdJbmZvLm1hcChzdmdJbmZvID0+IHRoaXMubG9hZFN2ZyhzdmdJbmZvLnN2ZykpKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZShzdmdzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuY29uY2F0ZW5hdGVTdmdzKHN2Z3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEb20oc3ZnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ZnR2VsYWRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN2Z0xvYWRlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMuY2xpY2thYmxlSWRzLCAnY2xpY2snKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzLCAnY29udGV4dG1lbnUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvciA9PiB0aGlzLmZsYWdFcnJvcnMoZXJyb3IpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmcoc3ZnU3JjOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChzdmdTcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xyXG4gICAgICAgICAgICBsZXQgcGFyc2VkO1xyXG4gICAgICAgICAgICBpZiAoc3ZnU3JjLnN0YXJ0c1dpdGgodGhpcy5TVkdfQkFTRTY0X1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0gYXRvYihzdmdTcmMuc3Vic3RyaW5nKHRoaXMuU1ZHX0JBU0U2NF9QUkVGSVgubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdEYXRhLXVybCBwYXJzZSBlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN2Z1NyYy5zdGFydHNXaXRoKHRoaXMuU1ZHX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHN2Z1NyYy5zdWJzdHJpbmcodGhpcy5TVkdfUFJFRklYLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YocGFyc2VkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc3ZnU3JjLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50KGxpc3RlbmVyczogTWFwPEVsZW1lbnQsIGFueT4sIGVsZW0sIGV2ZW50VHlwZTogc3RyaW5nLCBwdWljOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbGVtQWxyZWFkeUhhc0xpc3RlbmVyID0gbGlzdGVuZXJzLmdldChlbGVtKTtcclxuICAgICAgICBpZiAoIWVsZW1BbHJlYWR5SGFzTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSBldmVudFR5cGUgPT09ICdjbGljaycgP1xyXG4gICAgICAgICAgICAgICAgKGUpID0+IHRoaXMuY2xpY2tIYW5kbGVyLmVtaXQobmV3IFNlbGVjdGllRXZlbnQocHVpYywgZSkpIDpcclxuICAgICAgICAgICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRDbGlja0hhbmRsZXIuZW1pdChuZXcgU2VsZWN0aWVFdmVudChwdWljLCBlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbGlzdGVuZXJzLnNldChlbGVtLCBmbik7XHJcbiAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGZuKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKGNsaWNrYWJsZUlkczogc3RyaW5nW10sIGV2ZW50dHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5yZW1vdmVPbGRTdGF0ZShldmVudHR5cGUpO1xyXG5cclxuICAgICAgICBpZiAoY2xpY2thYmxlSWRzKSB7XHJcbiAgICAgICAgICAgIGNsaWNrYWJsZUlkcy5mb3JFYWNoKHB1aWMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLnB1aWNIZWxwZXIuZ2V0QWxsRWxlbWVudHNGb3JQdWljKHB1aWMpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4gdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnQobGlzdGVuZXJzLCBlbGVtZW50LCBldmVudHR5cGUsIHB1aWMpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLnJlbW92ZU9sZFN0YXRlKCdtb3VzZW92ZXInKTtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVySW5mb3MuZm9yRWFjaChwb3BvdmVySW5mbyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckluZm8ucHVpY0FycmF5LmZvckVhY2gocHVpYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtcyA9IHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm4gPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJIdG1sQ29udGVudCA9IHBvcG92ZXJJbmZvLnBvcG92ZXJIdG1sQ29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyVGl0bGVDb250ZW50ID0gcG9wb3ZlckluZm8ucG9wb3ZlclRpdGxlQ29udGVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aW1lb3V0IHRvIGhhdmUgY29udGVudCByZW5kZXJlZCBiZWZvcmUgZ2V0dGluZyBzaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zaG93UG9wdXAoZSksIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBlbGVtcy5pdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zZXQoZWxlbSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25jYXRlbmF0ZVN2Z3Moc3Znczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdmdDb250ZW50ID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnN2Z0luZm8ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlQ29vcmRpbmF0ZXMgPSB0aGlzLnN2Z0luZm9baV0uY29vcmRpbmF0ZXMgfHwgbmV3IFBvaW50KDAsIDApO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgICAgICAvKiogVmVyd2lqZGVyIGRnbi5jc3MgaW1wb3J0IHVpdCBnZWxldmVyZGUgU1ZHJ3MuXHJcbiAgICAgICAgICAgICAqICBEZSBpbXBvcnQgd29yZHQgb3B0aW9uZWVsIChzdGFuZGFhcmQgYWFuKSBpbiBkZSByb290IFNWRyBnZXBsYWF0cyBvbSB0ZSB2b29ya29tZW4gZGF0IGRlIGltcG9ydCBtZWVybWFhbHMgZ2ViZXVyZC5cclxuICAgICAgICAgICAgICogIHppZSBhZGRTdHlsZVRvUm9vdFN2ZygpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gc3Znc1tpXS5yZXBsYWNlKCdAaW1wb3J0IHVybChcImRnbi5jc3NcIik7JywgJycpO1xyXG4gICAgICAgICAgICBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd4Jywgc291cmNlQ29vcmRpbmF0ZXMueC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgZGl2LmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZSgneScsIHNvdXJjZUNvb3JkaW5hdGVzLnkudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICBzdmdDb250ZW50ICs9IGRpdi5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3ZnQ29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsYWdFcnJvcnMoZXJyb3IpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlT2xkU3RhdGUoZXZlbnRUeXBlOiBzdHJpbmcpOiBNYXA8RWxlbWVudCwgYW55PiB7XHJcbiAgICAgICAgbGV0IGxpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NsaWNrJylcclxuICAgICAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgSW14Vmlld2VyQ29tcG9uZW50LnNldERlZmF1bHRDdXJzb3IoZWwpKVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpc3RlbmVycyA9IG5ldyBNYXAoKTtcclxuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnNldChldmVudFR5cGUsIGxpc3RlbmVycyk7XHJcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNlbGVjdEVsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFsbEVsZW1zID0gdGhpcy5nZXRTdmdQYXJlbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdbY2xhc3MqPWlteHZpZXctc2VsZWN0ZWRdJyk7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGxFbGVtcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBDbGFzc2VzVXRpbC5yZW1vdmVDbGFzc2VzU3RhcnRpbmdXaXRoKGFsbEVsZW1zW2pdLCAnaW14dmlldy1zZWxlY3RlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aWVJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGllSW5mb3MuZm9yRWFjaChzZWxlY3RpZUluZm8gPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0aWVJbmZvLmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1aWNIZWxwZXIuZ2V0QWxsRWxlbWVudHNGb3JQdWljKGlkKS5mb3JFYWNoKGVsZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2VzVXRpbC5hZGRDbGFzcyhlbGVtLCAnaW14dmlldy1zZWxlY3RlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJycgIT09IHNlbGVjdGllSW5mby5jbGF6eikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3Nlc1V0aWwuYWRkQ2xhc3MoZWxlbSwgJ2lteHZpZXctc2VsZWN0ZWQtJyArIHNlbGVjdGllSW5mby5jbGF6eik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgc2V0RGVmYXVsdEN1cnNvcihlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgb3VkZVN0eWxlID0gZWwuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIHJldHVybiBvdWRlU3R5bGUgPyBvdWRlU3R5bGUucmVwbGFjZSgncG9pbnRlcicsICdkZWZhdWx0JykgOiAnY3Vyc29yOiBkZWZhdWx0JztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNob3dQb3B1cChlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3ZlcicpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBlLmxheWVyWCAtIChwb3BvdmVyRWxlbS53aWR0aCAvIDIpICsgJ3B4JztcclxuICAgICAgICBjb25zdCB0b3AgPSBlLmxheWVyWSAtIChwb3BvdmVyRWxlbS5oZWlnaHQgKyA4KSArICdweCc7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyU3R5bGUgPSB7XHJcbiAgICAgICAgICAgIGxlZnQ6IGxlZnQsIHRvcDogdG9wLCBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVEb20oc3ZnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3ZnR3JvdXAgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdO1xyXG4gICAgICAgIHN2Z0dyb3VwLmlubmVySFRNTCA9IHN2Zy5zdWJzdHJpbmcoc3ZnLmluZGV4T2YoJzxzdmcnKSk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnVwZGF0ZUJCb3goKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZi5maXQoKTtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuY2VudGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxheWVkQ2xpY2tBcmVhQ3JlYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnR2VsYWRlbiAmJiB0aGlzLnVzZUNsaWNrQXJlYSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2FyZWFJZHMgPSBuZXcgU2V0KFsuLi50aGlzLmNsaWNrYWJsZUlkcywgLi4udGhpcy5yaWdodENsaWNrYWJsZUlkcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucG9wb3ZlckluZm9zLmZsYXRNYXAocGkgPT4gcGkucHVpY0FycmF5KV0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQXJlYVNlcnZpY2UuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGNsaWNrYXJlYUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ZnUGFyZW50ID0gKCkgPT4gdGhpcy5zdmdQYXJlbnRSZWYubmF0aXZlRWxlbWVudDtcclxufVxyXG4iLCI8ZGl2IGlkPVwiaW14dmlld2VyXCIgZGF0YS10ZXN0LWlkPVwiaW14LXZpZXdlclwiPlxuICAgIDxkaXYgaWQ9XCJzdmdDb250YWluZXJcIiBjbGFzcz1cImNvbC1tZC0xMiB0b3AxMFwiIFtoaWRkZW5dPVwiZXJyb3JzXCIgKGNsaWNrKT1cImhpZGVQb3BPdmVyKClcIiBkYXRhLXRlc3QtaWQ9XCJzdmctY29udGFpbmVyXCI+XG4gICAgICAgIDxzdmcgI3N2Z1BhcmVudCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInBvcG92ZXJcIiBjbGFzcz1cInBvcG92ZXIgdG9wIGJzLXBvcG92ZXItdG9wXCIgW25nU3R5bGVdPVwicG9wb3ZlclN0eWxlXCIgKG1vdXNlbGVhdmUpPVwiaGlkZVBvcE92ZXIoKVwiIGRhdGEtdGVzdC1pZD1cInBvcG92ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCIgKm5nSWY9XCJwb3BvdmVyVGl0bGVDb250ZW50ICE9PSB1bmRlZmluZWRcIiBbaW5uZXJIVE1MXT1cInBvcG92ZXJUaXRsZUNvbnRlbnRcIiBkYXRhLXRlc3QtaWQ9XCJwb3BvdmVyLWhlYWRlclwiPjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIiBbaW5uZXJIVE1MXT1cInBvcG92ZXJIdG1sQ29udGVudFwiIGRhdGEtdGVzdC1pZD1cInBvcG92ZXItYm9keVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2lteC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFVaEQsTUFBTSxPQUFPLGtCQUFrQjtJQTZCM0IsWUFBMkMsUUFBYSxFQUFVLElBQWdCLEVBQzlELGdCQUFrQyxFQUFVLFVBQTZCO1FBRGxELGFBQVEsR0FBUixRQUFRLENBQUs7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQTdCckYsc0JBQWlCLEdBQUcsNEJBQTRCLENBQUM7UUFDakQsZUFBVSxHQUFHLHFCQUFxQixDQUFDO1FBRWxDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFNUMsd0RBQXdEO1FBQy9DLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBQzVCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyxpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFJMUMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGlCQUFZLEdBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDMUMsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBR2QsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUN0RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV2QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7UUFxRDVELDBCQUFxQixHQUFzQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBYTNFLGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBMk9wRCxpQkFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBeFM3RCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsb0ZBQW9GO1FBQ3BGLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUV0QyxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUV4RyxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksaUJBQWlCLElBQUksWUFBWSxFQUFFO1lBQ25FLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ25DO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEQsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDcEU7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDL0U7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3RELElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFTSxVQUFVLENBQUMsUUFBa0I7UUFDaEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUlELHdFQUF3RTtJQUNqRSxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUF5QjtRQUNsRCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsbURBQW1EO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDWCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBSU8sOEJBQThCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDakQsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2FBQ2xDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVEOzs7OztTQUtLO0lBQ0csaUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUU1RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsS0FBSztnQkFDRDs7OztrQkFJRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFNBQVM7Z0JBQ1Y7c0JBQ08sS0FBTTt5QkFDSixDQUFDO1lBQ2QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDaEUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUM3RDtJQUNMLENBQUM7SUFFTyxRQUFRO1FBQ1osYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFDOUMsQ0FBQyxFQUNELEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FDbEMsQ0FBQztJQUNOLENBQUM7SUFFTyxPQUFPLENBQUMsTUFBYztRQUMxQixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxNQUFNLENBQUM7WUFDWCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzNDLElBQUk7b0JBQ0EsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUNsRTtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDUixPQUFPLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQ3ZEO2FBQ0o7aUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyRDtZQUVELElBQUksTUFBTSxFQUFFO2dCQUNSLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxTQUE0QixFQUFFLElBQUksRUFBRSxTQUFpQixFQUFFLElBQVk7UUFDdEcsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUN6QixNQUFNLEVBQUUsR0FBRyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNGLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEQsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQztZQUNOLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDakM7U0FDSjtJQUNMLENBQUM7SUFFTywrQkFBK0IsQ0FBQyxZQUFzQixFQUFFLFNBQWlCO1FBQzdFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakQsSUFBSSxZQUFZLEVBQUU7WUFDZCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1RyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLGtDQUFrQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDaEMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7NEJBQ3pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUM7NEJBRTNELDJEQUEyRDs0QkFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzNDLENBQUMsQ0FBQzt3QkFFRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDMUM7Z0JBQ0wsQ0FBQyxDQUNKLENBQUM7WUFDTixDQUFDLENBQ0osQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFjO1FBQ2xDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV6RSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFDOzs7ZUFHRztZQUNILEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRCxHQUFHLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN4RSxHQUFHLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUV4RSxVQUFVLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQztTQUMvQjtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBSztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxjQUFjLENBQUMsU0FBaUI7UUFDcEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxTQUFTLEVBQUU7WUFDWCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUN6QixFQUFFLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLFNBQVMsS0FBSyxPQUFPO29CQUNyQixFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRXpFLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN0QyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3JELFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7d0JBQy9DLElBQUksRUFBRSxLQUFLLFlBQVksQ0FBQyxLQUFLLEVBQUU7NEJBQzNCLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDeEU7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUNuRixDQUFDO0lBRU8sU0FBUyxDQUFDLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0UsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsVUFBVTtZQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTO1NBQzNDLENBQUM7SUFDTixDQUFDO0lBRU8sU0FBUyxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUV0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLHdCQUF3QjtRQUM1QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3pFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7K0dBclVRLGtCQUFrQixrQkE2QlAsYUFBYTttR0E3QnhCLGtCQUFrQix1aEJDcEMvQixpdUJBVUE7OzRGRDBCYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWTs7MEJBaUNULE1BQU07MkJBQUMsYUFBYTtvSUF6QnhCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRW9DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPOUIsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgU3ZnUGFuWm9vbSBmcm9tICdzdmctcGFuLXpvb20nO1xyXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50JztcclxuaW1wb3J0IHsgUG9wb3ZlckluZm8gfSBmcm9tICcuLi9tb2RlbC9wb3BvdmVyLWluZm8nO1xyXG5pbXBvcnQgeyBTZWxlY3RpZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0aWUtZXZlbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RpZUluZm8gfSBmcm9tICcuLi9tb2RlbC9zZWxlY3RpZS1pbmZvJztcclxuaW1wb3J0IHsgU3ZnSW5mbyB9IGZyb20gJy4uL21vZGVsL3N2Zy1pbmZvJztcclxuaW1wb3J0IHsgQ2xpY2thcmVhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NsaWNrYXJlYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHVpY0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhc3Nlc1V0aWwgfSBmcm9tICcuLi91dGlscy9jbGFzc2VzLXV0aWwnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZG9jdW1lbnQtdG9rZW4nO1xyXG5pbXBvcnQgeyBGb2N1c1V0aWwgfSBmcm9tICcuLi91dGlscy9mb2N1cy11dGlsJztcclxuXHJcbi8vIFN2Z1Bhblpvb20uSW5zdGFuY2UgY2Fubm90IGJlIHVzZWQgaW4gbGlicyB0aGF0IHVzZSB0aGlzIGlteC12aWV3ZXIgbGliIGJlY2F1c2UgaXQgaXMgZXhwb3J0ZWQgaW4gYW4gb2xkLCBub24gYW5ndWxhciAxNiBjb21wYXRpYmxlIHdheS5cclxuZXhwb3J0IHR5cGUgU3ZnSW5zdGFuY2UgPSB0eXBlb2YgU3ZnUGFuWm9vbTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbXgtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXgtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2lteC12aWV3ZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXhWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgU1ZHX0JBU0U2NF9QUkVGSVggPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnO1xyXG4gICAgcHJpdmF0ZSBTVkdfUFJFRklYID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnO1xyXG5cclxuICAgIEBJbnB1dCgpIHVzZUNsaWNrQXJlYSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgaW5saW5lRGduQ3NzSW1wb3J0ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzdmdJbmZvOiBTdmdJbmZvW107XHJcbiAgICBASW5wdXQoKSBzZWxlY3RpZUluZm9zOiBTZWxlY3RpZUluZm9bXSA9IFtdO1xyXG5cclxuICAgIC8vIE9uZGVyc3RhYW5kZSBpbnB1dHMgd29yZGVuIG1lZWdlbm9tZW4gdm9vciBjbGlja2FyZWE6XHJcbiAgICBASW5wdXQoKSBjbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3N2Z1BhcmVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHN2Z1BhcmVudFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBlcnJvcnMgPSBmYWxzZTtcclxuICAgIHBvcG92ZXJTdHlsZTogYW55ID0geyBkaXNwbGF5OiAnaW5saW5lJyB9O1xyXG4gICAgcG9wb3Zlckh0bWxDb250ZW50ID0gJyc7XHJcbiAgICBwb3BvdmVyVGl0bGVDb250ZW50OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSByaWdodENsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBzdmdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdmdHZWxhZGVuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBNYXA8c3RyaW5nLCBNYXA8RWxlbWVudCwgYW55Pj4gPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIHN2Z1Bhblpvb21SZWY6IFN2Z0luc3RhbmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRG9jdW1lbnRUb2tlbikgcHJpdmF0ZSBkb2N1bWVudDogYW55LCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNsaWNrQXJlYVNlcnZpY2U6IENsaWNrYXJlYVNlcnZpY2UsIHByaXZhdGUgcHVpY0hlbHBlcjogUHVpY0hlbHBlclNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN2Z1Bhblpvb21SZWZJZk5vdEV4aXN0cygpO1xyXG4gICAgICAgIHRoaXMucHVpY0hlbHBlci5zZXRSb290U3ZnKHRoaXMuZ2V0U3ZnUGFyZW50KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICAvLyBJZiBJbXgtdmlld2VyIGlzIGluaXRpYWxpemVkIHdpdGggc3ZnSW5mbywgbmdPbkNoYW5nZXMgaXMgY2FsbGVkIGJlZm9yZSBuZ09uSW5pdC5cclxuICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgc3ZnUGFuWm9vbVJlZiBoZXJlLlxyXG4gICAgICAgIHRoaXMuY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdXNlQ2xpY2tBcmVhLCBjbGlja2FibGVJZHMsIHJpZ2h0Q2xpY2thYmxlSWRzLCBwb3BvdmVySW5mb3MsIHNlbGVjdGllSW5mb3MsIHN2Z0luZm8gfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgICAgIGlmICh1c2VDbGlja0FyZWEgfHwgY2xpY2thYmxlSWRzIHx8IHJpZ2h0Q2xpY2thYmxlSWRzIHx8IHBvcG92ZXJJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnSW5mbyAmJiBzdmdJbmZvKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFN2Z3MoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNsaWNrYWJsZUlkcyAmJiBjbGlja2FibGVJZHMgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLmNsaWNrYWJsZUlkcywgJ2NsaWNrJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yaWdodENsaWNrYWJsZUlkcyAmJiByaWdodENsaWNrYWJsZUlkcyAmJiB0aGlzLnN2Z0dlbGFkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMucmlnaHRDbGlja2FibGVJZHMsICdjb250ZXh0bWVudScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aWVJbmZvcyAmJiBzZWxlY3RpZUluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MgJiYgcG9wb3ZlckluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkZE1vdXNlb3ZlckV2ZW50SGFuZGxlclRvRWxlbWVudHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmb2N1c09uSWRzKGZvY3VzSWRzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIEZvY3VzVXRpbC5mb2N1c09uSWRzKGZvY3VzSWRzLCB0aGlzLnN2Z1Bhblpvb21SZWYsIHRoaXMucHVpY0hlbHBlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFN2Z1Bhblpvb21JbnN0YW5jZTogKCkgPT4gU3ZnSW5zdGFuY2UgPSAoKSA9PiB0aGlzLnN2Z1Bhblpvb21SZWY7XHJcblxyXG4gICAgLy8gSGVyZSBvbmx5IHVzZWQgaW4gdGVzdCwgYnV0IGFsc28gdXNlZCBieSBhcHBsaWNhdGlvbnMuIERvIG5vdCByZW1vdmUuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFhDb29yZGluYXRlKGRlY29kZWRTdmdEYXRhVXJsOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gZGVjb2RlZFN2Z0RhdGFVcmw7XHJcbiAgICAgICAgLy8gRGUgU1ZHLXdpZHRoIHdvcmR0IGluIGRlIHN2ZyB0YWcgZ2VzcGVjaWZpY2VlcmQuXHJcbiAgICAgICAgY29uc3QgeCA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZC5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VGbG9hdCh4KTtcclxuICAgICAgICBkaXYgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZVBvcE92ZXIgPSAoKSA9PiB0aGlzLnBvcG92ZXJTdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN2Z1Bhblpvb21SZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmID0gU3ZnUGFuWm9vbSh0aGlzLmdldFN2Z1BhcmVudCgpLCB7XHJcbiAgICAgICAgICAgICAgICBmaXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGJsQ2xpY2tab29tRW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBvblpvb206ICgpID0+IHRoaXMuaGlkZVBvcE92ZXIoKSxcclxuICAgICAgICAgICAgICAgIG9uUGFuOiAoKSA9PiB0aGlzLmhpZGVQb3BPdmVyKClcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9Sb290U3ZnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3R5bGUgd29yZHQgdmFudWl0IGphdmFzY3JpcHQgdG9lZ2V2b2VnZCBuYSBkZSBjcmVhdGUgdmFuIFN2Z1pvb21QYW5SZWYgZGV6ZSBtYWFrdCBlZW4gdmlld3BvcnQgYWFuLlxyXG4gICAgICogLSBDbGlja2FyZWEgQ1NTIHdvcmR0IGR5bmFtaXNjaCBhYW4gZGUgU1ZHIHRvZWdldm9lZ2QsIGRpdCB2b29ya29tdCBkYXQgZGF0IGVyIG5nY29udGVudCBwcm9wZXJ0eSBvcCBnZXBsYWF0c3Qgd29yZHQuXHJcbiAgICAgKiAgIERlIFNWRydzIHdvcmRlbiBuaWV0IHZvb3J6aWVuIHZhbiBuZ2NvbnRlbnQgYXR0cmlidXV0LlxyXG4gICAgICogLSBER04uY3NzIGltcG9ydCB3b3JkdCAob3B0aW9uZWVsKSBpbiBkZSByb290IFNWRyBvcGdlbm9tZW4sIGRlemUgaXMgZWVyc3QgdmVyd2lqZGVyZCB1aXQgZGUgU1ZHJ3MuIE9tIG1lZXJkZXJlIGltcG9ydHMgdGUgdm9vcmtvbWVuLlxyXG4gICAgICogKi9cclxuICAgIHByaXZhdGUgYWRkU3R5bGVUb1Jvb3RTdmcoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3ZnUGFyZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZSAhPT0gJ2RlZnMnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2RlZnMnKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzdHlsZSA9IHRoaXMuaW5saW5lRGduQ3NzSW1wb3J0ID8gJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTtcXG4nIDogJyc7XHJcbiAgICAgICAgICAgIHN0eWxlICs9XHJcbiAgICAgICAgICAgICAgICBgLmlteHZpZXctc2VsZWN0ZWQgPiBwb2x5bGluZS5pbXh2aWV3LWNsaWNrYXJlYSwgcG9seWxpbmUuaW14dmlldy1jbGlja2FyZWEge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogdmFyKC0taW14dmlldy1jbGlja2FyZWEtc3Ryb2tlLCB0cmFuc3BhcmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiB2YXIoLS1pbXh2aWV3LWNsaWNrYXJlYS1zdHJva2Utd2lkdGgsIDEwcHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICB9YDtcclxuICAgICAgICAgICAgZGVmcy5pbm5lckhUTUwgPVxyXG4gICAgICAgICAgICAgICAgYDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAkeyBzdHlsZSB9XHJcbiAgICAgICAgICAgICAgICA8L3N0eWxlPmA7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudENoaWxkID0gdGhpcy5nZXRTdmdQYXJlbnQoKS5maXJzdEVsZW1lbnRDaGlsZDtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdmdQYXJlbnQoKS5pbnNlcnRCZWZvcmUoZGVmcywgZmlyc3RFbGVtZW50Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmdzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5zdmdJbmZvLm1hcChzdmdJbmZvID0+IHRoaXMubG9hZFN2ZyhzdmdJbmZvLnN2ZykpKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZShzdmdzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuY29uY2F0ZW5hdGVTdmdzKHN2Z3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEb20oc3ZnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ZnR2VsYWRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN2Z0xvYWRlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMuY2xpY2thYmxlSWRzLCAnY2xpY2snKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzLCAnY29udGV4dG1lbnUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvciA9PiB0aGlzLmZsYWdFcnJvcnMoZXJyb3IpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmcoc3ZnU3JjOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChzdmdTcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xyXG4gICAgICAgICAgICBsZXQgcGFyc2VkO1xyXG4gICAgICAgICAgICBpZiAoc3ZnU3JjLnN0YXJ0c1dpdGgodGhpcy5TVkdfQkFTRTY0X1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0gYXRvYihzdmdTcmMuc3Vic3RyaW5nKHRoaXMuU1ZHX0JBU0U2NF9QUkVGSVgubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdEYXRhLXVybCBwYXJzZSBlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN2Z1NyYy5zdGFydHNXaXRoKHRoaXMuU1ZHX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHN2Z1NyYy5zdWJzdHJpbmcodGhpcy5TVkdfUFJFRklYLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YocGFyc2VkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc3ZnU3JjLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50KGxpc3RlbmVyczogTWFwPEVsZW1lbnQsIGFueT4sIGVsZW0sIGV2ZW50VHlwZTogc3RyaW5nLCBwdWljOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbGVtQWxyZWFkeUhhc0xpc3RlbmVyID0gbGlzdGVuZXJzLmdldChlbGVtKTtcclxuICAgICAgICBpZiAoIWVsZW1BbHJlYWR5SGFzTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSBldmVudFR5cGUgPT09ICdjbGljaycgP1xyXG4gICAgICAgICAgICAgICAgKGUpID0+IHRoaXMuY2xpY2tIYW5kbGVyLmVtaXQobmV3IFNlbGVjdGllRXZlbnQocHVpYywgZSkpIDpcclxuICAgICAgICAgICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRDbGlja0hhbmRsZXIuZW1pdChuZXcgU2VsZWN0aWVFdmVudChwdWljLCBlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbGlzdGVuZXJzLnNldChlbGVtLCBmbik7XHJcbiAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGZuKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKGNsaWNrYWJsZUlkczogc3RyaW5nW10sIGV2ZW50dHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5yZW1vdmVPbGRTdGF0ZShldmVudHR5cGUpO1xyXG5cclxuICAgICAgICBpZiAoY2xpY2thYmxlSWRzKSB7XHJcbiAgICAgICAgICAgIGNsaWNrYWJsZUlkcy5mb3JFYWNoKHB1aWMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLnB1aWNIZWxwZXIuZ2V0QWxsRWxlbWVudHNGb3JQdWljKHB1aWMpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4gdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnQobGlzdGVuZXJzLCBlbGVtZW50LCBldmVudHR5cGUsIHB1aWMpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLnJlbW92ZU9sZFN0YXRlKCdtb3VzZW92ZXInKTtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVySW5mb3MuZm9yRWFjaChwb3BvdmVySW5mbyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckluZm8ucHVpY0FycmF5LmZvckVhY2gocHVpYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtcyA9IHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm4gPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJIdG1sQ29udGVudCA9IHBvcG92ZXJJbmZvLnBvcG92ZXJIdG1sQ29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyVGl0bGVDb250ZW50ID0gcG9wb3ZlckluZm8ucG9wb3ZlclRpdGxlQ29udGVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aW1lb3V0IHRvIGhhdmUgY29udGVudCByZW5kZXJlZCBiZWZvcmUgZ2V0dGluZyBzaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zaG93UG9wdXAoZSksIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBlbGVtcy5pdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zZXQoZWxlbSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25jYXRlbmF0ZVN2Z3Moc3Znczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdmdDb250ZW50ID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnN2Z0luZm8ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlQ29vcmRpbmF0ZXMgPSB0aGlzLnN2Z0luZm9baV0uY29vcmRpbmF0ZXMgfHwgbmV3IFBvaW50KDAsIDApO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgICAgICAvKiogVmVyd2lqZGVyIGRnbi5jc3MgaW1wb3J0IHVpdCBnZWxldmVyZGUgU1ZHJ3MuXHJcbiAgICAgICAgICAgICAqICBEZSBpbXBvcnQgd29yZHQgb3B0aW9uZWVsIChzdGFuZGFhcmQgYWFuKSBpbiBkZSByb290IFNWRyBnZXBsYWF0cyBvbSB0ZSB2b29ya29tZW4gZGF0IGRlIGltcG9ydCBtZWVybWFhbHMgZ2ViZXVyZC5cclxuICAgICAgICAgICAgICogIHppZSBhZGRTdHlsZVRvUm9vdFN2ZygpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gc3Znc1tpXS5yZXBsYWNlKCdAaW1wb3J0IHVybChcImRnbi5jc3NcIik7JywgJycpO1xyXG4gICAgICAgICAgICBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd4Jywgc291cmNlQ29vcmRpbmF0ZXMueC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgZGl2LmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZSgneScsIHNvdXJjZUNvb3JkaW5hdGVzLnkudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICBzdmdDb250ZW50ICs9IGRpdi5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3ZnQ29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsYWdFcnJvcnMoZXJyb3IpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlT2xkU3RhdGUoZXZlbnRUeXBlOiBzdHJpbmcpOiBNYXA8RWxlbWVudCwgYW55PiB7XHJcbiAgICAgICAgbGV0IGxpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NsaWNrJylcclxuICAgICAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgSW14Vmlld2VyQ29tcG9uZW50LnNldERlZmF1bHRDdXJzb3IoZWwpKVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpc3RlbmVycyA9IG5ldyBNYXAoKTtcclxuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnNldChldmVudFR5cGUsIGxpc3RlbmVycyk7XHJcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNlbGVjdEVsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFsbEVsZW1zID0gdGhpcy5nZXRTdmdQYXJlbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdbY2xhc3MqPWlteHZpZXctc2VsZWN0ZWRdJyk7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGxFbGVtcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBDbGFzc2VzVXRpbC5yZW1vdmVDbGFzc2VzU3RhcnRpbmdXaXRoKGFsbEVsZW1zW2pdLCAnaW14dmlldy1zZWxlY3RlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aWVJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGllSW5mb3MuZm9yRWFjaChzZWxlY3RpZUluZm8gPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0aWVJbmZvLmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1aWNIZWxwZXIuZ2V0QWxsRWxlbWVudHNGb3JQdWljKGlkKS5mb3JFYWNoKGVsZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2VzVXRpbC5hZGRDbGFzcyhlbGVtLCAnaW14dmlldy1zZWxlY3RlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJycgIT09IHNlbGVjdGllSW5mby5jbGF6eikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3Nlc1V0aWwuYWRkQ2xhc3MoZWxlbSwgJ2lteHZpZXctc2VsZWN0ZWQtJyArIHNlbGVjdGllSW5mby5jbGF6eik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgc2V0RGVmYXVsdEN1cnNvcihlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgb3VkZVN0eWxlID0gZWwuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIHJldHVybiBvdWRlU3R5bGUgPyBvdWRlU3R5bGUucmVwbGFjZSgncG9pbnRlcicsICdkZWZhdWx0JykgOiAnY3Vyc29yOiBkZWZhdWx0JztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNob3dQb3B1cChlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3ZlcicpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBlLmxheWVyWCAtIChwb3BvdmVyRWxlbS53aWR0aCAvIDIpICsgJ3B4JztcclxuICAgICAgICBjb25zdCB0b3AgPSBlLmxheWVyWSAtIChwb3BvdmVyRWxlbS5oZWlnaHQgKyA4KSArICdweCc7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyU3R5bGUgPSB7XHJcbiAgICAgICAgICAgIGxlZnQ6IGxlZnQsIHRvcDogdG9wLCBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVEb20oc3ZnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3ZnR3JvdXAgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdO1xyXG4gICAgICAgIHN2Z0dyb3VwLmlubmVySFRNTCA9IHN2Zy5zdWJzdHJpbmcoc3ZnLmluZGV4T2YoJzxzdmcnKSk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnVwZGF0ZUJCb3goKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZi5maXQoKTtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuY2VudGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxheWVkQ2xpY2tBcmVhQ3JlYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnR2VsYWRlbiAmJiB0aGlzLnVzZUNsaWNrQXJlYSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2FyZWFJZHMgPSBuZXcgU2V0KFsuLi50aGlzLmNsaWNrYWJsZUlkcywgLi4udGhpcy5yaWdodENsaWNrYWJsZUlkcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucG9wb3ZlckluZm9zLmZsYXRNYXAocGkgPT4gcGkucHVpY0FycmF5KV0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQXJlYVNlcnZpY2UuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGNsaWNrYXJlYUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ZnUGFyZW50ID0gKCkgPT4gdGhpcy5zdmdQYXJlbnRSZWYubmF0aXZlRWxlbWVudDtcclxufVxyXG4iLCI8ZGl2IGlkPVwiaW14dmlld2VyXCIgZGF0YS10ZXN0LWlkPVwiaW14LXZpZXdlclwiPlxuICAgIDxkaXYgaWQ9XCJzdmdDb250YWluZXJcIiBjbGFzcz1cImNvbC1tZC0xMiB0b3AxMFwiIFtoaWRkZW5dPVwiZXJyb3JzXCIgKGNsaWNrKT1cImhpZGVQb3BPdmVyKClcIiBkYXRhLXRlc3QtaWQ9XCJzdmctY29udGFpbmVyXCI+XG4gICAgICAgIDxzdmcgI3N2Z1BhcmVudCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInBvcG92ZXJcIiBjbGFzcz1cInBvcG92ZXIgdG9wIGJzLXBvcG92ZXItdG9wXCIgW25nU3R5bGVdPVwicG9wb3ZlclN0eWxlXCIgKG1vdXNlbGVhdmUpPVwiaGlkZVBvcE92ZXIoKVwiIGRhdGEtdGVzdC1pZD1cInBvcG92ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCIgKm5nSWY9XCJwb3BvdmVyVGl0bGVDb250ZW50ICE9PSB1bmRlZmluZWRcIiBbaW5uZXJIVE1MXT1cInBvcG92ZXJUaXRsZUNvbnRlbnRcIiBkYXRhLXRlc3QtaWQ9XCJwb3BvdmVyLWhlYWRlclwiPjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIiBbaW5uZXJIVE1MXT1cInBvcG92ZXJIdG1sQ29udGVudFwiIGRhdGEtdGVzdC1pZD1cInBvcG92ZXItYm9keVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -5,15 +5,15 @@ import { HttpClientModule } from '@angular/common/http';
5
5
  import { documentProvider, DocumentToken } from './utils/document-token';
6
6
  import * as i0 from "@angular/core";
7
7
  export class ImxViewerModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
10
10
  HttpClientModule], exports: [ImxViewerComponent] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, providers: [
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, providers: [
12
12
  { provide: DocumentToken, useFactory: documentProvider }
13
13
  ], imports: [CommonModule,
14
14
  HttpClientModule] }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, decorators: [{
17
17
  type: NgModule,
18
18
  args: [{
19
19
  imports: [
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImpor
31
31
  ]
32
32
  }]
33
33
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW14LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCekUsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLGlCQVR4QixrQkFBa0IsYUFKbEIsWUFBWTtZQUNaLGdCQUFnQixhQU1oQixrQkFBa0I7K0dBTVQsZUFBZSxhQUpmO1lBQ1AsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtTQUMzRCxZQVhDLFlBQVk7WUFDWixnQkFBZ0I7OzJGQVlQLGVBQWU7a0JBZjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3FCQUNqQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3FCQUNuQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtxQkFDM0Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbXhWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW14LXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBkb2N1bWVudFByb3ZpZGVyLCBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi91dGlscy9kb2N1bWVudC10b2tlbic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgSW14Vmlld2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBJbXhWaWV3ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgICB7IHByb3ZpZGU6IERvY3VtZW50VG9rZW4sIHVzZUZhY3Rvcnk6IGRvY3VtZW50UHJvdmlkZXIgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElteFZpZXdlck1vZHVsZSB7XHJcbn1cclxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW14LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCekUsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLGlCQVR4QixrQkFBa0IsYUFKbEIsWUFBWTtZQUNaLGdCQUFnQixhQU1oQixrQkFBa0I7Z0hBTVQsZUFBZSxhQUpmO1lBQ1AsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtTQUMzRCxZQVhDLFlBQVk7WUFDWixnQkFBZ0I7OzRGQVlQLGVBQWU7a0JBZjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3FCQUNqQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3FCQUNuQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtxQkFDM0Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbXhWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW14LXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBkb2N1bWVudFByb3ZpZGVyLCBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi91dGlscy9kb2N1bWVudC10b2tlbic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgSW14Vmlld2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBJbXhWaWV3ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgICB7IHByb3ZpZGU6IERvY3VtZW50VG9rZW4sIHVzZUZhY3Rvcnk6IGRvY3VtZW50UHJvdmlkZXIgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElteFZpZXdlck1vZHVsZSB7XHJcbn1cclxuIl19
@@ -32,13 +32,13 @@ export class ClickareaService {
32
32
  });
33
33
  });
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, deps: [{ token: i1.PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, providedIn: 'root' }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, deps: [{ token: i1.PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, providedIn: 'root' }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{
41
41
  providedIn: 'root'
42
42
  }]
43
43
  }], ctorParameters: function () { return [{ type: i1.PuicHelperService }]; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2thcmVhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2xpY2thcmVhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJekIsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFGakQsWUFBTyxHQUFHLEdBQUcsQ0FBQztJQUdkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxHQUFnQjtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLEdBQWdCO1FBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUxRixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELElBQUksT0FBTyxFQUFFO29CQUNULE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFZLENBQUM7d0JBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7d0JBQ2pELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQW5DUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZiLE1BQU07OzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdWljSGVscGVyU2VydmljZSB9IGZyb20gJy4vcHVpYy1oZWxwZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2thcmVhU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0aW1lcjogbnVtYmVyO1xuICAgIHRpbWVvdXQgPSAyNTA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHB1aWNIZWxwZXI6IFB1aWNIZWxwZXJTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGlkczogU2V0PHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlkcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jcmVhdGVDbGlja2FyZWFzKGlkcyksIHRoaXMudGltZW91dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9nZWxpamtlIG9wdGltYWxpc2F0aWUgaXMgb20gZGUgZGVsdGEgdGUgYmVwYWxlbiB2YW4gZGUgdGUgdmVyd2Vya2VuIGlkc1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlQ2xpY2thcmVhcyhpZHM6IFNldDxzdHJpbmc+KSB7XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW14dmlldy1jbGlja2FyZWEnKSkuZm9yRWFjaCh4ID0+IHgucmVtb3ZlKCkpO1xuXG4gICAgICAgIGlkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgIHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMoaWQpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9seWxpbmVzID0gQXJyYXkuZnJvbShlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwb2x5bGluZScpKTtcbiAgICAgICAgICAgICAgICAgICAgcG9seWxpbmVzLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZSA9IHAuY2xvbmVOb2RlKHRydWUpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2lteHZpZXctY2xpY2thcmVhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShjbG9uZSwgcCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2thcmVhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2xpY2thcmVhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJekIsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFGakQsWUFBTyxHQUFHLEdBQUcsQ0FBQztJQUdkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxHQUFnQjtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLEdBQWdCO1FBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUxRixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELElBQUksT0FBTyxFQUFFO29CQUNULE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFZLENBQUM7d0JBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7d0JBQ2pELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQW5DUSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdWljSGVscGVyU2VydmljZSB9IGZyb20gJy4vcHVpYy1oZWxwZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2thcmVhU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0aW1lcjogbnVtYmVyO1xuICAgIHRpbWVvdXQgPSAyNTA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHB1aWNIZWxwZXI6IFB1aWNIZWxwZXJTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGlkczogU2V0PHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlkcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jcmVhdGVDbGlja2FyZWFzKGlkcyksIHRoaXMudGltZW91dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9nZWxpamtlIG9wdGltYWxpc2F0aWUgaXMgb20gZGUgZGVsdGEgdGUgYmVwYWxlbiB2YW4gZGUgdGUgdmVyd2Vya2VuIGlkc1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlQ2xpY2thcmVhcyhpZHM6IFNldDxzdHJpbmc+KSB7XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW14dmlldy1jbGlja2FyZWEnKSkuZm9yRWFjaCh4ID0+IHgucmVtb3ZlKCkpO1xuXG4gICAgICAgIGlkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgIHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMoaWQpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9seWxpbmVzID0gQXJyYXkuZnJvbShlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwb2x5bGluZScpKTtcbiAgICAgICAgICAgICAgICAgICAgcG9seWxpbmVzLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZSA9IHAuY2xvbmVOb2RlKHRydWUpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2lteHZpZXctY2xpY2thcmVhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShjbG9uZSwgcCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -5,13 +5,13 @@ export class PuicHelperService {
5
5
  this.setRootSvg = (svgParent) => this.rootSvg = svgParent;
6
6
  this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, providedIn: 'root' }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, providedIn: 'root' }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, decorators: [{
12
12
  type: Injectable,
13
13
  args: [{
14
14
  providedIn: 'root'
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVpYy1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFNVyxlQUFVLEdBQUcsQ0FBQyxTQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUNwRSwwQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFNLElBQUssT0FBUSxJQUFLLEVBQUUsQ0FBNEIsQ0FBQztLQUN6STs4R0FMWSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07OzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVpY0hlbHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm9vdFN2ZzogYW55O1xuXG4gICAgcHVibGljIHNldFJvb3RTdmcgPSAoc3ZnUGFyZW50OiBTVkdTVkdFbGVtZW50KSA9PiB0aGlzLnJvb3RTdmcgPSBzdmdQYXJlbnQ7XG4gICAgcHVibGljIGdldEFsbEVsZW1lbnRzRm9yUHVpYyA9IChwdWljOiBzdHJpbmcpID0+IHRoaXMucm9vdFN2Zy5xdWVyeVNlbGVjdG9yQWxsKGAucCR7IHB1aWMgfSwgI3AkeyBwdWljIH1gKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50Pjtcbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVpYy1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFNVyxlQUFVLEdBQUcsQ0FBQyxTQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUNwRSwwQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFNLElBQUssT0FBUSxJQUFLLEVBQUUsQ0FBNEIsQ0FBQztLQUN6STsrR0FMWSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVpY0hlbHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm9vdFN2ZzogYW55O1xuXG4gICAgcHVibGljIHNldFJvb3RTdmcgPSAoc3ZnUGFyZW50OiBTVkdTVkdFbGVtZW50KSA9PiB0aGlzLnJvb3RTdmcgPSBzdmdQYXJlbnQ7XG4gICAgcHVibGljIGdldEFsbEVsZW1lbnRzRm9yUHVpYyA9IChwdWljOiBzdHJpbmcpID0+IHRoaXMucm9vdFN2Zy5xdWVyeVNlbGVjdG9yQWxsKGAucCR7IHB1aWMgfSwgI3AkeyBwdWljIH1gKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50Pjtcbn1cbiJdfQ==
@@ -177,10 +177,10 @@ class PuicHelperService {
177
177
  this.setRootSvg = (svgParent) => this.rootSvg = svgParent;
178
178
  this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
179
179
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
181
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, providedIn: 'root' }); }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
181
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, providedIn: 'root' }); }
182
182
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PuicHelperService, decorators: [{
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PuicHelperService, decorators: [{
184
184
  type: Injectable,
185
185
  args: [{
186
186
  providedIn: 'root'
@@ -218,10 +218,10 @@ class ClickareaService {
218
218
  });
219
219
  });
220
220
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
222
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, providedIn: 'root' }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
222
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, providedIn: 'root' }); }
223
223
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ClickareaService, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClickareaService, decorators: [{
225
225
  type: Injectable,
226
226
  args: [{
227
227
  providedIn: 'root'
@@ -500,10 +500,10 @@ class ImxViewerComponent {
500
500
  this.clickAreaService.delayedClickAreaCreation(clickareaIds);
501
501
  }
502
502
  }
503
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
504
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
503
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
504
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
505
505
  }
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerComponent, decorators: [{
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerComponent, decorators: [{
507
507
  type: Component,
508
508
  args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"] }]
509
509
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -535,15 +535,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImpor
535
535
  }] } });
536
536
 
537
537
  class ImxViewerModule {
538
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
539
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
538
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
539
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
540
540
  HttpClientModule], exports: [ImxViewerComponent] }); }
541
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, providers: [
541
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, providers: [
542
542
  { provide: DocumentToken, useFactory: documentProvider }
543
543
  ], imports: [CommonModule,
544
544
  HttpClientModule] }); }
545
545
  }
546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImxViewerModule, decorators: [{
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImxViewerModule, decorators: [{
547
547
  type: NgModule,
548
548
  args: [{
549
549
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n } else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider(): Document {\n return document;\n}\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { SvgInstance } from '../components/imx-viewer.component';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgInstance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n// SvgPanZoom.Instance cannot be used in libs that use this imx-viewer lib because it is exported in an old, non angular 16 compatible way.\r\nexport type SvgInstance = typeof SvgPanZoom;\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgInstance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]): void {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgInstance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string): number {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists(): void {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg(): void {\r\n if (this.getSvgParent().firstElementChild.tagName !== 'defs') {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string): void {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string): void {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements(): void {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error): void {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click')\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el))\r\n\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements(): void {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e): void {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: string): void {\r\n this.svgPanZoomRef.destroy();\r\n this.svgPanZoomRef = null;\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation(): void {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PuicHelperService","observableThrowError","observableOf","i2.ClickareaService","i3.PuicHelperService"],"mappings":"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"}
1
+ {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n } else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider(): Document {\n return document;\n}\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { SvgInstance } from '../components/imx-viewer.component';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgInstance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n// SvgPanZoom.Instance cannot be used in libs that use this imx-viewer lib because it is exported in an old, non angular 16 compatible way.\r\nexport type SvgInstance = typeof SvgPanZoom;\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgInstance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]): void {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgInstance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string): number {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists(): void {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg(): void {\r\n if (this.getSvgParent().firstElementChild.tagName !== 'defs') {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string): void {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string): void {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements(): void {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error): void {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click')\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el))\r\n\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements(): void {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e): void {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: string): void {\r\n this.svgPanZoomRef.destroy();\r\n this.svgPanZoomRef = null;\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation(): void {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PuicHelperService","observableThrowError","observableOf","i2.ClickareaService","i3.PuicHelperService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia/imx-viewer",
3
- "version": "12.0.2",
3
+ "version": "12.0.3-240304093633753",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org"