ca-components 1.0.20 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/components/ca-dots-menu/ca-dots-menu.component.mjs +6 -3
  2. package/esm2022/lib/components/ca-map/ca-map.component.mjs +4 -4
  3. package/esm2022/lib/components/ca-map/models/map.model.mjs +1 -1
  4. package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +2 -2
  5. package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +44 -12
  6. package/esm2022/lib/components/ca-progress-bar/enums/index.mjs +2 -0
  7. package/esm2022/lib/components/ca-progress-bar/enums/progress-bar-string.enum.mjs +2 -1
  8. package/esm2022/lib/components/ca-progress-bar/models/gps-progress.model.mjs +1 -1
  9. package/esm2022/lib/components/ca-progress-bar/models/index.mjs +2 -0
  10. package/esm2022/lib/components/ca-progress-bar/pipes/convert-minutes-to-hours.pipe.mjs +19 -0
  11. package/esm2022/lib/components/ca-progress-bar/pipes/index.mjs +2 -0
  12. package/esm2022/lib/components/ca-progress-bar/utils/constants/index.mjs +2 -0
  13. package/esm2022/lib/components/ca-progress-bar/utils/helpers/convert-minutes-to-hours.helper.mjs +10 -0
  14. package/esm2022/lib/components/ca-progress-bar/utils/helpers/index.mjs +3 -0
  15. package/esm2022/lib/components/ca-progress-bar/utils/helpers/progress-map-marker.helper.mjs +4 -4
  16. package/esm2022/lib/components/ca-progress-bar/utils/svg-routes/index.mjs +2 -0
  17. package/esm2022/public-api.mjs +1 -1
  18. package/fesm2022/ca-components.mjs +70 -13
  19. package/fesm2022/ca-components.mjs.map +1 -1
  20. package/lib/components/ca-dots-menu/ca-dots-menu.component.d.ts +2 -1
  21. package/lib/components/ca-map/models/map.model.d.ts +1 -0
  22. package/lib/components/ca-progress-bar/ca-progress-bar.component.d.ts +7 -3
  23. package/lib/components/ca-progress-bar/enums/index.d.ts +1 -0
  24. package/lib/components/ca-progress-bar/enums/progress-bar-string.enum.d.ts +2 -1
  25. package/lib/components/ca-progress-bar/models/gps-progress.model.d.ts +7 -0
  26. package/lib/components/ca-progress-bar/models/index.d.ts +1 -0
  27. package/lib/components/ca-progress-bar/pipes/convert-minutes-to-hours.pipe.d.ts +7 -0
  28. package/lib/components/ca-progress-bar/pipes/index.d.ts +1 -0
  29. package/lib/components/ca-progress-bar/utils/constants/index.d.ts +1 -0
  30. package/lib/components/ca-progress-bar/utils/helpers/convert-minutes-to-hours.helper.d.ts +3 -0
  31. package/lib/components/ca-progress-bar/utils/helpers/index.d.ts +2 -0
  32. package/lib/components/ca-progress-bar/utils/svg-routes/index.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/src/assets/ca-components/svg/map/gps-short-stop-icon.svg +4 -0
@@ -426,9 +426,9 @@ export class CaMapComponent {
426
426
  this.directionsRenderers.forEach((renderer) => renderer.setMap(null));
427
427
  }
428
428
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaMapComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
429
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaMapComponent, isStandalone: true, selector: "app-ca-map", inputs: { data: "data" }, outputs: { resetSelectedMarkerItem: "resetSelectedMarkerItem", clusterMarkerClick: "clusterMarkerClick", clusterListScrollEvent: "clusterListScrollEvent", getInfoWindowData: "getInfoWindowData", boundsChanged: "boundsChanged", openInMapEvent: "openInMapEvent" }, viewQueries: [{ propertyName: "maps", first: true, predicate: GoogleMap, descendants: true }, { propertyName: "infoWindowsView", first: true, predicate: MapInfoWindow, descendants: true }], ngImport: i0, template: "<google-map\n class=\"position-relative\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n>\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.markers;\n let i = index;\n trackBy: trackById\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"\n (openedInfoWindowData?.position?.lat === markeritem?.position?.lat &&\n openedInfoWindowData?.position?.lng === markeritem?.position?.lng) ||\n (markeritem.label?.isShowOnHover &&\n hoveredMarkerId !== markeritem.data.id)\n ? ''\n : markeritem.label!\n \"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onMarkerClick(markeritem)\"\n (mapMouseover)=\"onMarkerMouseover(markeritem)\"\n (mapMouseout)=\"onMarkerMouseout(markeritem)\"\n >\n </map-marker>\n\n <map-info-window\n #infoWindowsView=\"mapInfoWindow\"\n [options]=\"infoWindowOptions\"\n >\n <ng-container *ngIf=\"openedInfoWindowData !== null\">\n <app-ca-map-dropdown\n [infoWindowContent]=\"openedInfoWindowData.infoWindowContent\"\n [markerData]=\"openedInfoWindowData.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </ng-container>\n </map-info-window>\n\n <map-marker\n #markerCluster=\"mapMarker\"\n *ngFor=\"\n let marker of mapData.clusterMarkers;\n let i = index;\n trackBy: trackByPosition\n \"\n [position]=\"marker.position\"\n [icon]=\"marker.icon\"\n (mapClick)=\"onClusterMarkerClick(marker)\"\n >\n </map-marker>\n\n <ng-container *ngIf=\"isAreaFilterActive\">\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n </ng-container>\n\n <map-marker\n #markerRouting=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.routingMarkers;\n let i = index;\n trackBy: identity\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"focusedIconRouting !== i ? markeritem.label! : ''\"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onRoutingMarkerClick(i, $event, markeritem)\"\n >\n <map-info-window #infoWindowsViewRouting=\"mapInfoWindow\">\n <app-ca-map-dropdown></app-ca-map-dropdown>\n </map-info-window>\n </map-marker>\n\n <ng-container *ngIf=\"mapData.isOpenInMapShown\">\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"mapData.isZoomShown\">\n <div class=\"map-zoom-container d-flex flex-column align-items-end gap-1\">\n <div class=\"map-zoom-buttons d-flex align-items-center\">\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n </ng-container>\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true]{width:100px;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true]{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:8px;width:110px;height:45px;padding:3px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px}.map-zoom-container .map-zoom-range .range-text{font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}\n"], dependencies: [{ kind: "ngmodule", type:
429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaMapComponent, isStandalone: true, selector: "app-ca-map", inputs: { data: "data" }, outputs: { resetSelectedMarkerItem: "resetSelectedMarkerItem", clusterMarkerClick: "clusterMarkerClick", clusterListScrollEvent: "clusterListScrollEvent", getInfoWindowData: "getInfoWindowData", boundsChanged: "boundsChanged", openInMapEvent: "openInMapEvent" }, viewQueries: [{ propertyName: "maps", first: true, predicate: GoogleMap, descendants: true }, { propertyName: "infoWindowsView", first: true, predicate: MapInfoWindow, descendants: true }], ngImport: i0, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n>\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.markers;\n let i = index;\n trackBy: trackById\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"\n (openedInfoWindowData?.position?.lat === markeritem?.position?.lat &&\n openedInfoWindowData?.position?.lng === markeritem?.position?.lng) ||\n (markeritem.label?.isShowOnHover &&\n hoveredMarkerId !== markeritem.data.id)\n ? ''\n : markeritem.label!\n \"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onMarkerClick(markeritem)\"\n (mapMouseover)=\"onMarkerMouseover(markeritem)\"\n (mapMouseout)=\"onMarkerMouseout(markeritem)\"\n >\n </map-marker>\n\n <map-info-window\n #infoWindowsView=\"mapInfoWindow\"\n [options]=\"infoWindowOptions\"\n >\n <ng-container *ngIf=\"openedInfoWindowData !== null\">\n <app-ca-map-dropdown\n [infoWindowContent]=\"openedInfoWindowData.infoWindowContent\"\n [markerData]=\"openedInfoWindowData.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </ng-container>\n </map-info-window>\n\n <map-marker\n #markerCluster=\"mapMarker\"\n *ngFor=\"\n let marker of mapData.clusterMarkers;\n let i = index;\n trackBy: trackByPosition\n \"\n [position]=\"marker.position\"\n [icon]=\"marker.icon\"\n (mapClick)=\"onClusterMarkerClick(marker)\"\n >\n </map-marker>\n\n <ng-container *ngIf=\"isAreaFilterActive\">\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n </ng-container>\n\n <map-marker\n #markerRouting=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.routingMarkers;\n let i = index;\n trackBy: identity\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"focusedIconRouting !== i ? markeritem.label! : ''\"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onRoutingMarkerClick(i, $event, markeritem)\"\n >\n <map-info-window #infoWindowsViewRouting=\"mapInfoWindow\">\n <app-ca-map-dropdown></app-ca-map-dropdown>\n </map-info-window>\n </map-marker>\n\n <ng-container *ngIf=\"mapData.isOpenInMapShown\">\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"mapData.isZoomShown\">\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom\n }\"\n >\n <div class=\"map-zoom-buttons d-flex align-items-center\" [class.flex-column]=\"mapData.isVerticalZoom\">\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n </ng-container>\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true]{width:100px;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true]{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:-moz-fit-content;min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}\n"], dependencies: [{ kind: "ngmodule", type:
430
430
  // Modules
431
- GoogleMapsModule }, { kind: "component", type: i1.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i1.MapCircle, selector: "map-circle", inputs: ["options", "center", "radius"], outputs: ["centerChanged", "circleClick", "circleDblclick", "circleDrag", "circleDragend", "circleDragstart", "circleMousedown", "circleMousemove", "circleMouseout", "circleMouseover", "circleMouseup", "radiusChanged", "circleRightclick"], exportAs: ["mapCircle"] }, { kind: "directive", type: i1.MapInfoWindow, selector: "map-info-window", inputs: ["options", "position"], outputs: ["closeclick", "contentChanged", "domready", "positionChanged", "zindexChanged"], exportAs: ["mapInfoWindow"] }, { kind: "directive", type: i1.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i3.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
431
+ GoogleMapsModule }, { kind: "component", type: i1.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i1.MapCircle, selector: "map-circle", inputs: ["options", "center", "radius"], outputs: ["centerChanged", "circleClick", "circleDblclick", "circleDrag", "circleDragend", "circleDragstart", "circleMousedown", "circleMousemove", "circleMouseout", "circleMouseover", "circleMouseup", "radiusChanged", "circleRightclick"], exportAs: ["mapCircle"] }, { kind: "directive", type: i1.MapInfoWindow, selector: "map-info-window", inputs: ["options", "position"], outputs: ["closeclick", "contentChanged", "domready", "positionChanged", "zindexChanged"], exportAs: ["mapInfoWindow"] }, { kind: "directive", type: i1.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i3.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
432
432
  // Components
433
433
  CaMapDropdownComponent, selector: "app-ca-map-dropdown", inputs: ["infoWindowContent", "markerData"], outputs: ["onClusterItemClick", "onClusterListScrollToEnd", "onBackButtonClick", "bodyActions"] }, { kind: "component", type: CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop"] }], encapsulation: i0.ViewEncapsulation.None }); }
434
434
  }
@@ -443,7 +443,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
443
443
  // Components
444
444
  CaMapDropdownComponent,
445
445
  CaAppTooltipV2Component,
446
- ], encapsulation: ViewEncapsulation.None, template: "<google-map\n class=\"position-relative\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n>\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.markers;\n let i = index;\n trackBy: trackById\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"\n (openedInfoWindowData?.position?.lat === markeritem?.position?.lat &&\n openedInfoWindowData?.position?.lng === markeritem?.position?.lng) ||\n (markeritem.label?.isShowOnHover &&\n hoveredMarkerId !== markeritem.data.id)\n ? ''\n : markeritem.label!\n \"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onMarkerClick(markeritem)\"\n (mapMouseover)=\"onMarkerMouseover(markeritem)\"\n (mapMouseout)=\"onMarkerMouseout(markeritem)\"\n >\n </map-marker>\n\n <map-info-window\n #infoWindowsView=\"mapInfoWindow\"\n [options]=\"infoWindowOptions\"\n >\n <ng-container *ngIf=\"openedInfoWindowData !== null\">\n <app-ca-map-dropdown\n [infoWindowContent]=\"openedInfoWindowData.infoWindowContent\"\n [markerData]=\"openedInfoWindowData.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </ng-container>\n </map-info-window>\n\n <map-marker\n #markerCluster=\"mapMarker\"\n *ngFor=\"\n let marker of mapData.clusterMarkers;\n let i = index;\n trackBy: trackByPosition\n \"\n [position]=\"marker.position\"\n [icon]=\"marker.icon\"\n (mapClick)=\"onClusterMarkerClick(marker)\"\n >\n </map-marker>\n\n <ng-container *ngIf=\"isAreaFilterActive\">\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n </ng-container>\n\n <map-marker\n #markerRouting=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.routingMarkers;\n let i = index;\n trackBy: identity\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"focusedIconRouting !== i ? markeritem.label! : ''\"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onRoutingMarkerClick(i, $event, markeritem)\"\n >\n <map-info-window #infoWindowsViewRouting=\"mapInfoWindow\">\n <app-ca-map-dropdown></app-ca-map-dropdown>\n </map-info-window>\n </map-marker>\n\n <ng-container *ngIf=\"mapData.isOpenInMapShown\">\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"mapData.isZoomShown\">\n <div class=\"map-zoom-container d-flex flex-column align-items-end gap-1\">\n <div class=\"map-zoom-buttons d-flex align-items-center\">\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n </ng-container>\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true]{width:100px;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true]{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:8px;width:110px;height:45px;padding:3px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px}.map-zoom-container .map-zoom-range .range-text{font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}\n"] }]
446
+ ], encapsulation: ViewEncapsulation.None, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n>\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.markers;\n let i = index;\n trackBy: trackById\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"\n (openedInfoWindowData?.position?.lat === markeritem?.position?.lat &&\n openedInfoWindowData?.position?.lng === markeritem?.position?.lng) ||\n (markeritem.label?.isShowOnHover &&\n hoveredMarkerId !== markeritem.data.id)\n ? ''\n : markeritem.label!\n \"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onMarkerClick(markeritem)\"\n (mapMouseover)=\"onMarkerMouseover(markeritem)\"\n (mapMouseout)=\"onMarkerMouseout(markeritem)\"\n >\n </map-marker>\n\n <map-info-window\n #infoWindowsView=\"mapInfoWindow\"\n [options]=\"infoWindowOptions\"\n >\n <ng-container *ngIf=\"openedInfoWindowData !== null\">\n <app-ca-map-dropdown\n [infoWindowContent]=\"openedInfoWindowData.infoWindowContent\"\n [markerData]=\"openedInfoWindowData.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </ng-container>\n </map-info-window>\n\n <map-marker\n #markerCluster=\"mapMarker\"\n *ngFor=\"\n let marker of mapData.clusterMarkers;\n let i = index;\n trackBy: trackByPosition\n \"\n [position]=\"marker.position\"\n [icon]=\"marker.icon\"\n (mapClick)=\"onClusterMarkerClick(marker)\"\n >\n </map-marker>\n\n <ng-container *ngIf=\"isAreaFilterActive\">\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n </ng-container>\n\n <map-marker\n #markerRouting=\"mapMarker\"\n *ngFor=\"\n let markeritem of mapData.routingMarkers;\n let i = index;\n trackBy: identity\n \"\n [position]=\"markeritem.position\"\n [icon]=\"markeritem.icon!\"\n [label]=\"focusedIconRouting !== i ? markeritem.label! : ''\"\n [options]=\"markeritem.options!\"\n (mapClick)=\"onRoutingMarkerClick(i, $event, markeritem)\"\n >\n <map-info-window #infoWindowsViewRouting=\"mapInfoWindow\">\n <app-ca-map-dropdown></app-ca-map-dropdown>\n </map-info-window>\n </map-marker>\n\n <ng-container *ngIf=\"mapData.isOpenInMapShown\">\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"mapData.isZoomShown\">\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom\n }\"\n >\n <div class=\"map-zoom-buttons d-flex align-items-center\" [class.flex-column]=\"mapData.isVerticalZoom\">\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n </ng-container>\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true]{width:100px;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true]{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:-moz-fit-content;min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}\n"] }]
447
447
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
448
448
  type: Input
449
449
  }], resetSelectedMarkerItem: [{
@@ -465,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
465
465
  type: ViewChild,
466
466
  args: [MapInfoWindow]
467
467
  }] } });
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixRQUFRO0FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBYWhFLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFLL0QsWUFBWTtBQUNaLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFvQjVELE1BQU0s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QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7K0dBcGdCVSxjQUFjO21HQUFkLGNBQWMsNllBV2QsU0FBUyxrRkFDVCxhQUFhLGdEQ2pGMUIsMDFJQXdJQTtnQkQvRUksVUFBVTtnQkFDVixnQkFBZ0IsMG1EQUNoQixZQUFZLCtQQUNaLG9CQUFvQixnT0FDcEIsZ0JBQWdCO2dCQUVoQixhQUFhO2dCQUNiLHNCQUFzQiw4TUFDdEIsdUJBQXVCOzs0RkFJZCxjQUFjO2tCQWxCMUIsU0FBUzsrQkFDRSxZQUFZLGNBR1YsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3FCQUN4QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO3dHQUl4QixJQUFJO3NCQUFoQixLQUFLO2dCQUdJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ2tDLElBQUk7c0JBQTVDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDYixlQUFlO3NCQUF4QyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEdvb2dsZU1hcCxcbiAgR29vZ2xlTWFwc01vZHVsZSxcbiAgTWFwSW5mb1dpbmRvdyxcbiAgTWFwTWFya2VyLFxuICBNYXBDaXJjbGUsXG59IGZyb20gJ0Bhbmd1bGFyL2dvb2dsZS1tYXBzJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gIElNYXBNYXJrZXJzLFxuICBJTWFwUm91dGVQYXRoLFxuICBJQ2FNYXBQcm9wcyxcbiAgSU1hcE9wdGlvbnMsXG4gIElSb3V0ZVBhdGgsXG4gIElNYXBCb3VuZHNab29tLFxuICBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhLFxufSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzL21hcC5tb2RlbCc7XG5cbi8vIEhlbHBlcnNcbmltcG9ydCB7IE1hcEhlbHBlciB9IGZyb20gJy4uL2NhLW1hcC91dGlscy9oZWxwZXJzL21hcC5oZWxwZXInO1xuXG4vLyBTdmctcm91dGVzXG5pbXBvcnQgeyBNYXBTdmdSb3V0ZXMgfSBmcm9tICcuLi9jYS1tYXAvdXRpbHMvbWFwLXN2Zy1yb3V0ZXMvbWFwLXN2Zy1yb3V0ZXMnO1xuXG4vLyBDb25zdGFudHNcbmltcG9ydCB7XG4gIE1hcEluZm9XaW5kb3dPcHRpb25zQ29uc3RhbnRzLFxuICBNYXBPcHRpb25zQ29uc3RhbnRzLFxufSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWFwLmNvbnN0YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZXNcbiAgICBHb29nbGVNYXBzTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIENhTWFwRHJvcGRvd25Db21wb25lbnQsXG4gICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIENhTWFwQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgQElucHV0KCkgc2V0IGRhdGEodmFsdWVzOiBJQ2FNYXBQcm9wcykge1xuICAgIHRoaXMuaGFuZGxlTWFwRGF0YSh2YWx1ZXMpO1xuICB9XG4gIEBPdXRwdXQoKSByZXNldFNlbGVjdGVkTWFya2VySXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNsdXN0ZXJNYXJrZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcE1hcmtlcnM+KCk7XG4gIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgQE91dHB1dCgpIGdldEluZm9XaW5kb3dEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBib3VuZHNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwQm91bmRzWm9vbT4oKTtcbiAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKEdvb2dsZU1hcCwgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcHMhOiBHb29nbGVNYXA7XG4gIEBWaWV3Q2hpbGQoTWFwSW5mb1dpbmRvdykgaW5mb1dpbmRvd3NWaWV3ITogTWFwSW5mb1dpbmRvdztcbiAgcHVibGljIGN1cnJlbnRseU9wZW5XaW5kb3chOiBNYXBJbmZvV2luZG93IHwgbnVsbDtcbiAgcHVibGljIGN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nITogTWFwSW5mb1dpbmRvdyB8IG51bGw7XG4gIHB1YmxpYyBwcmV2aW91c0ljb25VcmwhOiBzdHJpbmc7XG4gIHB1YmxpYyBwcmV2aW91c0ljb25VcmxSb3V0aW5nITogc3RyaW5nO1xuICBwdWJsaWMgZm9jdXNlZEljb25Sb3V0aW5nITogbnVtYmVyO1xuICBwcml2YXRlIGRpcmVjdGlvblNlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1NlcnZpY2UoKTtcbiAgcHVibGljIGRpcmVjdGlvbnNSZW5kZXJlcnM6IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZW5kZXJlcltdID0gW107XG4gIHB1YmxpYyBpbml0aWFsSWNvbnM6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBsYWJlbE9yaWdpbj86IGdvb2dsZS5tYXBzLlBvaW50O1xuICB9W10gPSBbXTtcbiAgcHVibGljIGluaXRpYWxNYXJrZXJJY29uczoge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGxhYmVsT3JpZ2luPzogZ29vZ2xlLm1hcHMuUG9pbnQ7XG4gICAgekluZGV4PzogbnVtYmVyO1xuICB9W10gPSBbXTtcbiAgcHVibGljIGluZm9XaW5kb3dPcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucyA9XG4gICAgTWFwSW5mb1dpbmRvd09wdGlvbnNDb25zdGFudHMubWFwSW5mb1dpbmRvd09wdGlvbnM7XG4gIHB1YmxpYyBtYXBPcHRpb25zOiBJTWFwT3B0aW9ucyA9IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcE9wdGlvbnM7XG4gIHB1YmxpYyBtYXBab29tOiBudW1iZXIgPSBNYXBPcHRpb25zQ29uc3RhbnRzLmRlZmF1bHRNYXBab29tO1xuICBwdWJsaWMgbWFwQ2VudGVyOiBJUm91dGVQYXRoID0gTWFwT3B0aW9uc0NvbnN0YW50cy5kZWZhdWx0TWFwQ2VudGVyO1xuICBwdWJsaWMgbWFwOiBnb29nbGUubWFwcy5NYXAgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGlzTWFwQ2VudGVyU2V0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjbHVzdGVyTWFya2Vyc0RhdGE6IElNYXBNYXJrZXJzW10gPSBbXTtcbiAgcHVibGljIG1hcmtlcnNEYXRhOiBJTWFwTWFya2Vyc1tdID0gW107XG4gIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHt9O1xuICBwdWJsaWMgb3BlbmVkSW5mb1dpbmRvd0RhdGE6IElNYXBNYXJrZXJzIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuYXJlYUZpbHRlckRhdGE7XG4gIHB1YmxpYyBpc0FyZWFGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGhvdmVyZWRNYXJrZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdG9yZUluaXRpYWxJY29uRm9yTWFya2VyKCk7XG4gICAgdGhpcy5zdG9yZUluaXRpYWxJY29uRm9yUm91dGluZ01hcmtlcigpO1xuICAgIC8vIFJlc2V0IGFsbCBpY29ucyB0byB0aGVpciBpbml0aWFsIHN0YXRlIG9uIHBhZ2UgbG9hZFxuICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcbiAgICB0aGlzLnJlc2V0Um91dGluZ01hcmtlcnMoKTtcbiAgICAvL0Rpc3BsYXkgcm91dGVzIGZvciByb3V0aW5nTWFya2Vyc1xuICAgIHRoaXMuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc3RvcmVJbml0aWFsSWNvbkZvck1hcmtlcigpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxNYXJrZXJJY29ucyA9IFtdO1xuXG4gICAgdGhpcy5tYXBEYXRhIS5tYXJrZXJzPy5mb3JFYWNoKChtYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLmluaXRpYWxNYXJrZXJJY29uc1tpbmRleF0gPSB7XG4gICAgICAgIHVybDogbWFya2VyLmljb24hLnVybCxcbiAgICAgICAgbGFiZWxPcmlnaW46IG1hcmtlci5pY29uIS5sYWJlbE9yaWdpbixcbiAgICAgICAgekluZGV4OiBtYXJrZXIub3B0aW9ucz8uekluZGV4ID8/IDEsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0b3JlSW5pdGlhbEljb25Gb3JSb3V0aW5nTWFya2VyKCk6IHZvaWQge1xuICAgIHRoaXMubWFwRGF0YS5yb3V0aW5nTWFya2Vycz8uZm9yRWFjaChcbiAgICAgIChtYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbEljb25zW2luZGV4XSA9IHtcbiAgICAgICAgICB1cmw6IG1hcmtlci5pY29uIS51cmwsXG4gICAgICAgICAgbGFiZWxPcmlnaW46IG1hcmtlci5pY29uIS5sYWJlbE9yaWdpbixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uQ2x1c3Rlck1hcmtlckNsaWNrKG1hcmtlckl0ZW06IElNYXBNYXJrZXJzKTogdm9pZCB7XG4gICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgIG1hcmtlckl0ZW0sXG4gICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgKTtcblxuICAgIGlmICghaXNJbmZvV2luZG93T3BlbmVkKSB0aGlzLmNsdXN0ZXJNYXJrZXJDbGljay5lbWl0KG1hcmtlckl0ZW0pO1xuICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobWFya2VySWQpIHRoaXMuZ2V0SW5mb1dpbmRvd0RhdGEuZW1pdChtYXJrZXJJZCk7XG4gIH1cblxuICBwdWJsaWMgb25NYXJrZXJDbGljayhtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkgdGhpcy5nZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlckl0ZW0uZGF0YS5pZCk7XG4gICAgZWxzZSB0aGlzLmNsb3NlSW5mb1dpbmRvdygpO1xuICB9XG5cbiAgcHVibGljIHNldERpcmVjdGlvbnNPbk1hcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBzPy5nb29nbGVNYXApIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5mb3JFYWNoKChyZW5kZXJlcikgPT5cbiAgICAgICAgcmVuZGVyZXIuc2V0TWFwKHRoaXMubWFwcz8uZ29vZ2xlTWFwISlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUFuZERpc3BsYXlSb3V0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgIC8vIENsZWFyIHByZXZpb3VzIGRpcmVjdGlvbnMgcmVuZGVyZXJzXG4gICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+IHJlbmRlcmVyLnNldE1hcChudWxsKSk7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMgPSBbXTtcblxuICAgICAgdGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMhLmZvckVhY2goKHJvdXRlOiBJTWFwUm91dGVQYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZXF1ZXN0ID0ge1xuICAgICAgICAgIG9yaWdpbjogcm91dGUucGF0aFswXSxcbiAgICAgICAgICBkZXN0aW5hdGlvbjogcm91dGUucGF0aFtyb3V0ZS5wYXRoLmxlbmd0aCAtIDFdLFxuICAgICAgICAgIHdheXBvaW50czogcm91dGUucGF0aFxuICAgICAgICAgICAgLnNsaWNlKDEsIHJvdXRlLnBhdGgubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIC5tYXAoKHBvc2l0aW9uKSA9PiAoeyBsb2NhdGlvbjogcG9zaXRpb24gfSkpLFxuICAgICAgICAgIHRyYXZlbE1vZGU6IGdvb2dsZS5tYXBzLlRyYXZlbE1vZGUuQklDWUNMSU5HLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uU2VydmljZS5yb3V0ZShyZXF1ZXN0LCAocmVzdWx0LCBzdGF0dXMpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSBnb29nbGUubWFwcy5EaXJlY3Rpb25zU3RhdHVzLk9LICYmIHJlc3VsdD8ucm91dGVzWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25zUmVuZGVyZXIgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyKHtcbiAgICAgICAgICAgICAgc3VwcHJlc3NJbmZvV2luZG93czogdHJ1ZSxcbiAgICAgICAgICAgICAgc3VwcHJlc3NNYXJrZXJzOiB0cnVlLFxuICAgICAgICAgICAgICBwcmVzZXJ2ZVZpZXdwb3J0OiB0cnVlLFxuICAgICAgICAgICAgICBwb2x5bGluZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjogcm91dGUuc3Ryb2tlQ29sb3IgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTpcbiAgICAgICAgICAgICAgICAgIHJvdXRlLnN0cm9rZU9wYWNpdHkgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfT1BBQ0lUWSxcbiAgICAgICAgICAgICAgICBzdHJva2VXZWlnaHQ6IHJvdXRlLnN0cm9rZVdlaWdodCB8fCBHb29nbGVNYXBFbnVtLlNUUk9LRV9XRUlHSFQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpcmVjdGlvbnNSZW5kZXJlci5zZXREaXJlY3Rpb25zKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMucHVzaChkaXJlY3Rpb25zUmVuZGVyZXIpO1xuICAgICAgICAgICAgdGhpcy5zZXREaXJlY3Rpb25zT25NYXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Sb3V0aW5nTWFya2VyQ2xpY2soXG4gICAgaTogbnVtYmVyLFxuICAgIGV2ZW50OiBnb29nbGUubWFwcy5NYXBNb3VzZUV2ZW50LFxuICAgIG1hcmtlcml0ZW06IElNYXBNYXJrZXJzXG4gICk6IHZvaWQge1xuICAgIC8vIGlmIChtYXJrZXJpdGVtPy5pbmZvV2luZG93Q29udGVudCkge1xuICAgIC8vICAgaWYgKFxuICAgIC8vICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dJbmRleFJvdXRpbmcgPT09IGkgJiZcbiAgICAvLyAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93Um91dGluZ1xuICAgIC8vICAgKSB7XG4gICAgLy8gICAgIGNvbnN0IGluZm9XaW5kb3cgPSB0aGlzLmluZm9XaW5kb3dzVmlld1JvdXRpbmcudG9BcnJheSgpW2ldO1xuICAgIC8vICAgICAvLyBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4gaW5mbyB3aW5kb3cgYW5kIHJlc2V0IHRoZSBpbmRleFxuICAgIC8vICAgICB0aGlzLm1hcERhdGEucm91dGluZ01hcmtlcnMhLm1hcCgoaXRlbTogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAvLyAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcbiAgICAvLyAgICAgICAgIGl0ZW0uaWNvbiA9IHtcbiAgICAvLyAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1tpbmRleF0hLnVybCxcbiAgICAvLyAgICAgICAgICAgbGFiZWxPcmlnaW46IHRoaXMuaW5pdGlhbEljb25zW2luZGV4XSEubGFiZWxPcmlnaW4sXG4gICAgLy8gICAgICAgICB9O1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICAgIGluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAvLyAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93SW5kZXhSb3V0aW5nID0gbnVsbDtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIGNvbnN0IG1hcmtlckluZGV4ID0gdGhpcy5tYXJrZXJSb3V0aW5nLnRvQXJyYXkoKVtpXTtcbiAgICAvLyAgICAgY29uc3QgaW5mb1dpbmRvdyA9IHRoaXMuaW5mb1dpbmRvd3NWaWV3Um91dGluZy50b0FycmF5KClbaV07XG4gICAgLy8gICAgIGlmICh0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nKSB7XG4gICAgLy8gICAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93Um91dGluZy5jbG9zZSgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChpbmZvV2luZG93KSB7XG4gICAgLy8gICAgICAgLy8gUmVzdG9yZSB0aGUgcHJldmlvdXMgaWNvbiBmb3IgdGhlIHByZXZpb3VzbHkgZm9jdXNlZCByb3V0aW5nIG1hcmtlclxuICAgIC8vICAgICAgIGlmIChcbiAgICAvLyAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nICE9PSB1bmRlZmluZWQgJiZcbiAgICAvLyAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nICE9PSBpXG4gICAgLy8gICAgICAgKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBwcmV2aW91c0ZvY3VzZWRJdGVtID1cbiAgICAvLyAgICAgICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzIVt0aGlzLmZvY3VzZWRJY29uUm91dGluZ107XG4gICAgLy8gICAgICAgICBpZiAocHJldmlvdXNGb2N1c2VkSXRlbSkge1xuICAgIC8vICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRJdGVtLmljb24gPSB7XG4gICAgLy8gICAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1t0aGlzLmZvY3VzZWRJY29uUm91dGluZ10udXJsLFxuICAgIC8vICAgICAgICAgICAgIGxhYmVsT3JpZ2luOlxuICAgIC8vICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsSWNvbnNbdGhpcy5mb2N1c2VkSWNvblJvdXRpbmddLmxhYmVsT3JpZ2luLFxuICAgIC8vICAgICAgICAgICB9O1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnQgbWFya2VyXG4gICAgLy8gICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzIS5tYXAoXG4gICAgLy8gICAgICAgICAoaXRlbTogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAvLyAgICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5wcmV2aW91c0ljb25VcmxSb3V0aW5nID0gaXRlbS5pY29uID8gaXRlbS5pY29uLnVybCA6ICcnO1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nID0gaTtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLnNob3dMYWJlbCA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgICAgIGl0ZW0uaWNvbiA9IHtcbiAgICAvLyAgICAgICAgICAgICAgIHVybDpcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5tYXBEYXRhLmlzVW5pdFZpZXdTdG9wcyB8fCB0aGlzLm1hcERhdGEuaXNEcml2ZXJNaWxlc1xuICAgIC8vICAgICAgICAgICAgICAgICAgID8gaXRlbS5pY29uIS51cmxcbiAgICAvLyAgICAgICAgICAgICAgICAgICA6IE1hcFN2Z1JvdXRlcy5tYXJrZXJTdmdSb3V0ZSxcbiAgICAvLyAgICAgICAgICAgICB9O1xuICAgIC8vICAgICAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICk7XG4gICAgLy8gICAgICAgaW5mb1dpbmRvdy5vcGVuKG1hcmtlckluZGV4KTtcbiAgICAvLyAgICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nID0gaW5mb1dpbmRvdztcbiAgICAvLyAgICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dJbmRleFJvdXRpbmcgPSBpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gICB0aGlzLm1hcmtlckNsaWNrLmVtaXQobWFya2VyaXRlbSk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5tYXBzLmdvb2dsZU1hcD8uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcblxuICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzPy5tYXAoKGl0ZW06IElNYXBNYXJrZXJzLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nKSB7XG4gICAgICAgICAgaXRlbS5pY29uID0ge1xuICAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1tpXS51cmwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRNYXJrZXJzSWNvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhLm1hcmtlcnM/Lm1hcCgobWFya2VyOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubWFya2VyLFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgLi4ubWFya2VyLmljb24sXG4gICAgICAgICAgc2NhbGVkU2l6ZTogbWFya2VyLmlzTGFyZ2VNYXJrZXJcbiAgICAgICAgICAgID8gTWFwT3B0aW9uc0NvbnN0YW50cy5sYXJnZU1hcmtlclNpemVcbiAgICAgICAgICAgIDogTWFwT3B0aW9uc0NvbnN0YW50cy5kZWZhdWx0TWFya2VyU2l6ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczogeyB6SW5kZXg6IGluZGV4ICsgMSB9LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Um91dGluZ01hcmtlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzPy5mb3JFYWNoKFxuICAgICAgKG1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbWFya2VyLmljb24gPSB7XG4gICAgICAgICAgdXJsOiBtYXJrZXIuaWNvbiEudXJsLFxuICAgICAgICAgIGxhYmVsT3JpZ2luOiBtYXJrZXIuaWNvbiEubGFiZWxPcmlnaW4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcFJlYWR5KG1hcEluc3RhbmNlOiBnb29nbGUubWFwcy5NYXApOiB7XG4gICAgZmlsbENvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdlaWdodD86IG51bWJlcjtcbiAgICBmaWxsT3BhY2l0eT86IG51bWJlcjtcbiAgfSB8IHZvaWQge1xuICAgIHRoaXMubWFwID0gbWFwSW5zdGFuY2U7XG5cbiAgICBpZiAodGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybCkge1xuICAgICAgY29uc3Qgc3RhdGVCb3VuZGFyaWVzVXJsID0gdGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybC51cmw7XG4gICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLmxvYWRHZW9Kc29uKHN0YXRlQm91bmRhcmllc1VybCk7XG5cbiAgICAgIHRoaXMubWFwcy5nb29nbGVNYXA/LmRhdGEuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVEZW5zaXR5ID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnZGVuc2l0eScpO1xuICAgICAgICBjb25zdCB7IGZpbGxDb2xvciwgZmlsbE9wYWNpdHkgfSA9IE1hcEhlbHBlci5nZXRGaWxsQ29sb3JGb3JTdGF0ZShcbiAgICAgICAgICBzdGF0ZURlbnNpdHkgYXMgbnVtYmVyLFxuICAgICAgICAgIHRoaXMubWFwRGF0YS52aWV3IHx8ICcnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsbENvbG9yOiBmaWxsQ29sb3IsXG4gICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRUVFRUVFJyxcbiAgICAgICAgICBzdHJva2VXZWlnaHQ6IDAuNixcbiAgICAgICAgICBmaWxsT3BhY2l0eTogZmlsbE9wYWNpdHksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICB0aGlzLnNldE1hcFN0eWxlcygpO1xuICAgIHRoaXMuZ2V0TWFwSWRsZUV2ZW50KG1hcEluc3RhbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNYXBTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwRGF0YT8uZGFya01vZGUpXG4gICAgICB0aGlzLm1hcE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcbiAgICAgICAgc3R5bGVzOiBNYXBDb25zdGFudHMuR09PR0xFX01BUF9EQVJLX1NUWUxFUyxcbiAgICAgIH07XG5cbiAgICBjb25zdCBhbGxNYXJrZXJzQ29tYmluZWQgPSBbXG4gICAgICAuLi4odGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzID8/IFtdKSxcbiAgICAgIC4uLih0aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMgPz8gW10pLFxuICAgICAgLi4uKHRoaXMubWFwRGF0YS5tYXJrZXJzID8/IFtdKSxcbiAgICBdO1xuXG4gICAgaWYgKGFsbE1hcmtlcnNDb21iaW5lZD8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBtYXBDZW50ZXJBbmRCb3VuZHMgPVxuICAgICAgICBNYXBIZWxwZXIuZ2V0TWFwQ2VudGVyQW5kWm9vbShhbGxNYXJrZXJzQ29tYmluZWQpO1xuXG4gICAgICB0aGlzLm1hcCEucGFuVG8obWFwQ2VudGVyQW5kQm91bmRzLm1hcENlbnRlcik7XG4gICAgICBpZiAobWFwQ2VudGVyQW5kQm91bmRzLmJvdW5kcylcbiAgICAgICAgdGhpcy5tYXA/LmZpdEJvdW5kcyhtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKTtcbiAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSlcbiAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obWFwQ2VudGVyQW5kQm91bmRzLm1hcFpvb20pO1xuXG4gICAgICB0aGlzLmlzTWFwQ2VudGVyU2V0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFwSWRsZUV2ZW50KG1hcDogZ29vZ2xlLm1hcHMuTWFwKTogdm9pZCB7XG4gICAgbWFwLmFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4ge1xuICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEJvdW5kc0NoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIGNvbnN0IG1hcEJvdW5kcyA9IHRoaXMubWFwLmdldEJvdW5kcygpO1xuICAgICAgY29uc3QgbWFwWm9vbSA9IHRoaXMubWFwLmdldFpvb20oKTtcblxuICAgICAgaWYgKG1hcEJvdW5kcyAmJiBtYXBab29tKSB7XG4gICAgICAgIGNvbnN0IGJvdW5kc09iamVjdCA9IHsgYm91bmRzOiBtYXBCb3VuZHMsIHpvb206IG1hcFpvb20gfTtcbiAgICAgICAgdGhpcy5ib3VuZHNDaGFuZ2VkLmVtaXQoYm91bmRzT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmV3RGF0YShkYXRhOiBJQ2FNYXBQcm9wcyk6IElDYU1hcFByb3BzIHtcbiAgICBjb25zdCBuZXdNYXJrZXJzID0gZGF0YT8ubWFya2Vycz8ubWFwKChtYXJrZXI6IElNYXBNYXJrZXJzKSA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgbWFya2VyLFxuICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoaXNTZWxlY3RlZE1hcmtlcikge1xuICAgICAgICBjb25zdCBuZXdNYXJrZXJEYXRhID0ge1xuICAgICAgICAgIC4uLm1hcmtlcixcbiAgICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICAuLi5tYXJrZXIuaWNvbixcbiAgICAgICAgICAgIHNjYWxlZFNpemU6IE1hcE9wdGlvbnNDb25zdGFudHMubGFyZ2VNYXJrZXJTaXplLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9uczogeyB6SW5kZXg6IDk5OSB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXdNYXJrZXJEYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFya2VyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBtYXJrZXJzOiBuZXdNYXJrZXJzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgb3Blbk1hcmtlckluZm9XaW5kb3cobWFya2VySXRlbTogSU1hcFNlbGVjdGVkTWFya2VyRGF0YSk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBjb25zdCBpc0NsdXN0ZXJJdGVtQ2hhbmdlZCA9IHRoaXMuY2hlY2tDbHVzdGVyRGF0YUNoYW5nZXMoXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pbmZvV2luZG93c1ZpZXcgJiYgKCFpc0luZm9XaW5kb3dPcGVuZWQgfHwgaXNDbHVzdGVySXRlbUNoYW5nZWQpKSB7XG4gICAgICB0aGlzLm1hcERhdGEubWFya2VycyEubWFwKChpdGVtOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihpdGVtLCBtYXJrZXJJdGVtKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRNYXJrZXIpIHtcbiAgICAgICAgICBpdGVtLmljb24gPSB7XG4gICAgICAgICAgICAuLi5pdGVtLmljb24sXG4gICAgICAgICAgICBzY2FsZWRTaXplOiBNYXBPcHRpb25zQ29uc3RhbnRzLmxhcmdlTWFya2VyU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGl0ZW0ub3B0aW9ucyA9IHsgekluZGV4OiA5OTkgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmljb24gPSB7XG4gICAgICAgICAgICAuLi5pdGVtLmljb24sXG4gICAgICAgICAgICBzY2FsZWRTaXplOiBpdGVtLmlzTGFyZ2VNYXJrZXJcbiAgICAgICAgICAgICAgPyBNYXBPcHRpb25zQ29uc3RhbnRzLmxhcmdlTWFya2VyU2l6ZVxuICAgICAgICAgICAgICA6IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcmtlclNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpdGVtLm9wdGlvbnMgPSB7IHpJbmRleDogaW5kZXggKyAxIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3cgPSB0aGlzLmluZm9XaW5kb3dzVmlldztcbiAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBtYXJrZXJJdGVtO1xuXG4gICAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkge1xuICAgICAgICB0aGlzLm1hcCEucGFuVG8obWFya2VySXRlbS5wb3NpdGlvbik7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbmZvV2luZG93T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5mb1dpbmRvd09wdGlvbnMsXG4gICAgICAgICAgICBwb3NpdGlvbjogbWFya2VySXRlbS5wb3NpdGlvbixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuaW5mb1dpbmRvd3NWaWV3Lm9wZW4oKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgIG1hcmtlckl0ZW06IElNYXBNYXJrZXJzLFxuICAgIG1hcmtlckl0ZW0yPzogSU1hcE1hcmtlcnMgfCBudWxsXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBtYXJrZXJJdGVtLnBvc2l0aW9uLmxhdCA9PT0gbWFya2VySXRlbTI/LnBvc2l0aW9uPy5sYXQgJiZcbiAgICAgIG1hcmtlckl0ZW0ucG9zaXRpb24ubG5nID09PSBtYXJrZXJJdGVtMj8ucG9zaXRpb24/LmxuZ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VJbmZvV2luZG93KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcblxuICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudGx5T3BlbldpbmRvdyA9IG51bGw7XG4gICAgdGhpcy5pbmZvV2luZG93c1ZpZXcuY2xvc2UoKTtcbiAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNYXBEYXRhKG5ld0RhdGE6IElDYU1hcFByb3BzKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhID0gdGhpcy5nZXROZXdEYXRhKG5ld0RhdGEpO1xuXG4gICAgaWYgKHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpXG4gICAgICB0aGlzLm9wZW5NYXJrZXJJbmZvV2luZG93KHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpO1xuICAgIGVsc2UgaWYgKHRoaXMuY3VycmVudGx5T3BlbldpbmRvdykgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcblxuICAgIGlmIChuZXdEYXRhICYmICF0aGlzLmlzTWFwQ2VudGVyU2V0ICYmIHRoaXMubWFwKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG5ld0RhdGEubWFya2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgIG5ld0RhdGEuY2x1c3Rlck1hcmtlcnM/Lmxlbmd0aCB8fFxuICAgICAgICBuZXdEYXRhLnJvdXRpbmdNYXJrZXJzPy5sZW5ndGhcbiAgICAgIClcbiAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEpXG4gICAgICB0aGlzLmNsdXN0ZXJMaXN0U2Nyb2xsRXZlbnQuZW1pdCh0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja0NsdXN0ZXJEYXRhQ2hhbmdlcyhcbiAgICBuZXdEYXRhOiBJTWFwTWFya2VycyxcbiAgICBwcmV2aW91c0RhdGE/OiBJTWFwTWFya2VycyB8IG51bGxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ld0RhdGEuaW5mb1dpbmRvd0NvbnRlbnQ/LmNsdXN0ZXJEYXRhXG4gICAgICA/IG5ld0RhdGEuaW5mb1dpbmRvd0NvbnRlbnQ/LnNlbGVjdGVkQ2x1c3Rlckl0ZW1EYXRhPy5kYXRhPy5pZCAhPT1cbiAgICAgICAgICBwcmV2aW91c0RhdGE/LmluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YT8uZGF0YT8uaWQgfHxcbiAgICAgICAgICBuZXdEYXRhLmluZm9XaW5kb3dDb250ZW50Py5jbHVzdGVyRGF0YT8ubGVuZ3RoICE9PVxuICAgICAgICAgICAgcHJldmlvdXNEYXRhPy5pbmZvV2luZG93Q29udGVudD8uY2x1c3RlckRhdGE/Lmxlbmd0aFxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtlck1vdXNlb3ZlcihtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGlmIChtYXJrZXJJdGVtPy5sYWJlbD8uaXNTaG93T25Ib3ZlcilcbiAgICAgIHRoaXMuaG92ZXJlZE1hcmtlcklkID0gbWFya2VySXRlbT8uZGF0YT8uaWQ7XG4gIH1cblxuICBwdWJsaWMgb25NYXJrZXJNb3VzZW91dChtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGlmIChtYXJrZXJJdGVtPy5sYWJlbD8uaXNTaG93T25Ib3ZlcikgdGhpcy5ob3ZlcmVkTWFya2VySWQgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIG9uWm9vbUNoYW5nZShpc01pbnVzQ2xpY2s/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFpvb21MZXZlbCA9IHRoaXMubWFwPy5nZXRab29tKCk7XG5cbiAgICBpZiAoY3VycmVudFpvb21MZXZlbCkge1xuICAgICAgY29uc3QgbmV4dFpvb21MZXZlbCA9IGlzTWludXNDbGlja1xuICAgICAgICA/IGN1cnJlbnRab29tTGV2ZWwgLSAxXG4gICAgICAgIDogY3VycmVudFpvb21MZXZlbCArIDE7XG4gICAgICB0aGlzLm1hcD8uc2V0Wm9vbShuZXh0Wm9vbUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25PcGVuSW5NYXAoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuSW5NYXBFdmVudC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIG1hcmtlcjogSU1hcE1hcmtlcnMpOiBudW1iZXIge1xuICAgIHJldHVybiBtYXJrZXIuZGF0YS5pZDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5UG9zaXRpb24oaW5kZXg6IG51bWJlciwgbWFya2VyOiBJTWFwTWFya2Vycyk6IG51bWJlciB7XG4gICAgcmV0dXJuIG1hcmtlci5wb3NpdGlvbi5sYXQgKyBtYXJrZXIucG9zaXRpb24ubG5nO1xuICB9XG5cbiAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5mb3JFYWNoKChyZW5kZXJlcikgPT4gcmVuZGVyZXIuc2V0TWFwKG51bGwpKTtcbiAgfVxufVxuIiwiPGdvb2dsZS1tYXBcbiAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gIGhlaWdodD1cIjEwMCVcIlxuICB3aWR0aD1cIjEwMCVcIlxuICBbem9vbV09XCJtYXBab29tXCJcbiAgW2NlbnRlcl09XCJtYXBDZW50ZXJcIlxuICBbb3B0aW9uc109XCJtYXBPcHRpb25zXCJcbiAgKG1hcEluaXRpYWxpemVkKT1cIm9uTWFwUmVhZHkoJGV2ZW50KVwiXG4+XG4gIDxtYXAtbWFya2VyXG4gICAgI21hcmtlcj1cIm1hcE1hcmtlclwiXG4gICAgKm5nRm9yPVwiXG4gICAgICBsZXQgbWFya2VyaXRlbSBvZiBtYXBEYXRhLm1hcmtlcnM7XG4gICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgXCJcbiAgICBbcG9zaXRpb25dPVwibWFya2VyaXRlbS5wb3NpdGlvblwiXG4gICAgW2ljb25dPVwibWFya2VyaXRlbS5pY29uIVwiXG4gICAgW2xhYmVsXT1cIlxuICAgICAgKG9wZW5lZEluZm9XaW5kb3dEYXRhPy5wb3NpdGlvbj8ubGF0ID09PSBtYXJrZXJpdGVtPy5wb3NpdGlvbj8ubGF0ICYmXG4gICAgICAgIG9wZW5lZEluZm9XaW5kb3dEYXRhPy5wb3NpdGlvbj8ubG5nID09PSBtYXJrZXJpdGVtPy5wb3NpdGlvbj8ubG5nKSB8fFxuICAgICAgKG1hcmtlcml0ZW0ubGFiZWw/LmlzU2hvd09uSG92ZXIgJiZcbiAgICAgICAgaG92ZXJlZE1hcmtlcklkICE9PSBtYXJrZXJpdGVtLmRhdGEuaWQpXG4gICAgICAgID8gJydcbiAgICAgICAgOiBtYXJrZXJpdGVtLmxhYmVsIVxuICAgIFwiXG4gICAgW29wdGlvbnNdPVwibWFya2VyaXRlbS5vcHRpb25zIVwiXG4gICAgKG1hcENsaWNrKT1cIm9uTWFya2VyQ2xpY2sobWFya2VyaXRlbSlcIlxuICAgIChtYXBNb3VzZW92ZXIpPVwib25NYXJrZXJNb3VzZW92ZXIobWFya2VyaXRlbSlcIlxuICAgIChtYXBNb3VzZW91dCk9XCJvbk1hcmtlck1vdXNlb3V0KG1hcmtlcml0ZW0pXCJcbiAgPlxuICA8L21hcC1tYXJrZXI+XG5cbiAgPG1hcC1pbmZvLXdpbmRvd1xuICAgICNpbmZvV2luZG93c1ZpZXc9XCJtYXBJbmZvV2luZG93XCJcbiAgICBbb3B0aW9uc109XCJpbmZvV2luZG93T3B0aW9uc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3BlbmVkSW5mb1dpbmRvd0RhdGEgIT09IG51bGxcIj5cbiAgICAgIDxhcHAtY2EtbWFwLWRyb3Bkb3duXG4gICAgICAgIFtpbmZvV2luZG93Q29udGVudF09XCJvcGVuZWRJbmZvV2luZG93RGF0YS5pbmZvV2luZG93Q29udGVudFwiXG4gICAgICAgIFttYXJrZXJEYXRhXT1cIm9wZW5lZEluZm9XaW5kb3dEYXRhLmRhdGFcIlxuICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgIChvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQpPVwib25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKClcIlxuICAgICAgICAob25CYWNrQnV0dG9uQ2xpY2spPVwib25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKClcIlxuICAgICAgPjwvYXBwLWNhLW1hcC1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9tYXAtaW5mby13aW5kb3c+XG5cbiAgPG1hcC1tYXJrZXJcbiAgICAjbWFya2VyQ2x1c3Rlcj1cIm1hcE1hcmtlclwiXG4gICAgKm5nRm9yPVwiXG4gICAgICBsZXQgbWFya2VyIG9mIG1hcERhdGEuY2x1c3Rlck1hcmtlcnM7XG4gICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgdHJhY2tCeTogdHJhY2tCeVBvc2l0aW9uXG4gICAgXCJcbiAgICBbcG9zaXRpb25dPVwibWFya2VyLnBvc2l0aW9uXCJcbiAgICBbaWNvbl09XCJtYXJrZXIuaWNvblwiXG4gICAgKG1hcENsaWNrKT1cIm9uQ2x1c3Rlck1hcmtlckNsaWNrKG1hcmtlcilcIlxuICA+XG4gIDwvbWFwLW1hcmtlcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcmVhRmlsdGVyQWN0aXZlXCI+XG4gICAgPG1hcC1jaXJjbGVcbiAgICAgIFtvcHRpb25zXT1cImFyZWFGaWx0ZXJEYXRhLm9wdGlvbnNcIlxuICAgICAgW2NlbnRlcl09XCJhcmVhRmlsdGVyRGF0YS5jZW50ZXJcIlxuICAgICAgW3JhZGl1c109XCJhcmVhRmlsdGVyRGF0YS5yYWRpdXNcIlxuICAgID48L21hcC1jaXJjbGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxtYXAtbWFya2VyXG4gICAgI21hcmtlclJvdXRpbmc9XCJtYXBNYXJrZXJcIlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IG1hcmtlcml0ZW0gb2YgbWFwRGF0YS5yb3V0aW5nTWFya2VycztcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICB0cmFja0J5OiBpZGVudGl0eVxuICAgIFwiXG4gICAgW3Bvc2l0aW9uXT1cIm1hcmtlcml0ZW0ucG9zaXRpb25cIlxuICAgIFtpY29uXT1cIm1hcmtlcml0ZW0uaWNvbiFcIlxuICAgIFtsYWJlbF09XCJmb2N1c2VkSWNvblJvdXRpbmcgIT09IGkgPyBtYXJrZXJpdGVtLmxhYmVsISA6ICcnXCJcbiAgICBbb3B0aW9uc109XCJtYXJrZXJpdGVtLm9wdGlvbnMhXCJcbiAgICAobWFwQ2xpY2spPVwib25Sb3V0aW5nTWFya2VyQ2xpY2soaSwgJGV2ZW50LCBtYXJrZXJpdGVtKVwiXG4gID5cbiAgICA8bWFwLWluZm8td2luZG93ICNpbmZvV2luZG93c1ZpZXdSb3V0aW5nPVwibWFwSW5mb1dpbmRvd1wiPlxuICAgICAgPGFwcC1jYS1tYXAtZHJvcGRvd24+PC9hcHAtY2EtbWFwLWRyb3Bkb3duPlxuICAgIDwvbWFwLWluZm8td2luZG93PlxuICA8L21hcC1tYXJrZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcERhdGEuaXNPcGVuSW5NYXBTaG93blwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib3Blbi1pbi1tYXAtY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICBuZ2JUb29sdGlwXG4gICAgICBtYWluQ2FUb29sdGlwPVwiT3BlbiBpbiBNYXBcIlxuICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNDI0MjQyXCJcbiAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgIChjbGljayk9XCJvbk9wZW5Jbk1hcCgpXCJcbiAgICA+XG4gICAgICA8c3ZnLWljb25cbiAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICBzcmM9XCJhc3NldHMvY2EtY29tcG9uZW50cy9zdmcvY29tbW9uL2ljX2xvY2F0aW9uX21hcC5zdmdcIlxuICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgPjwvc3ZnLWljb24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXBEYXRhLmlzWm9vbVNob3duXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1hcC16b29tLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtZW5kIGdhcC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFwLXpvb20tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInpvb20tYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC0xXCJcbiAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL3BvcHVwL01pbnVzLnN2Z1wiXG4gICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgIChjbGljayk9XCJvblpvb21DaGFuZ2UoZmFsc2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19wbHVzLnN2Z1wiXG4gICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcC16b29tLXJhbmdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLXRleHQgY2EtZm9udC1tZWRpdW1cIj41MCBtaTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtbGluZVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9nb29nbGUtbWFwPlxuIl19
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixRQUFRO0FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBYWhFLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFLL0QsWUFBWTtBQUNaLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFvQjVELE1BQU0s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QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7K0dBcGdCVSxjQUFjO21HQUFkLGNBQWMsNllBV2QsU0FBUyxrRkFDVCxhQUFhLGdEQ2pGMUIsOGtKQStJQTtnQkR0RkksVUFBVTtnQkFDVixnQkFBZ0IsMG1EQUNoQixZQUFZLDZWQUNaLG9CQUFvQixnT0FDcEIsZ0JBQWdCO2dCQUVoQixhQUFhO2dCQUNiLHNCQUFzQiw4TUFDdEIsdUJBQXVCOzs0RkFJZCxjQUFjO2tCQWxCMUIsU0FBUzsrQkFDRSxZQUFZLGNBR1YsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3FCQUN4QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO3dHQUl4QixJQUFJO3NCQUFoQixLQUFLO2dCQUdJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ2tDLElBQUk7c0JBQTVDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDYixlQUFlO3NCQUF4QyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEdvb2dsZU1hcCxcbiAgR29vZ2xlTWFwc01vZHVsZSxcbiAgTWFwSW5mb1dpbmRvdyxcbiAgTWFwTWFya2VyLFxuICBNYXBDaXJjbGUsXG59IGZyb20gJ0Bhbmd1bGFyL2dvb2dsZS1tYXBzJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gIElNYXBNYXJrZXJzLFxuICBJTWFwUm91dGVQYXRoLFxuICBJQ2FNYXBQcm9wcyxcbiAgSU1hcE9wdGlvbnMsXG4gIElSb3V0ZVBhdGgsXG4gIElNYXBCb3VuZHNab29tLFxuICBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhLFxufSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzL21hcC5tb2RlbCc7XG5cbi8vIEhlbHBlcnNcbmltcG9ydCB7IE1hcEhlbHBlciB9IGZyb20gJy4uL2NhLW1hcC91dGlscy9oZWxwZXJzL21hcC5oZWxwZXInO1xuXG4vLyBTdmctcm91dGVzXG5pbXBvcnQgeyBNYXBTdmdSb3V0ZXMgfSBmcm9tICcuLi9jYS1tYXAvdXRpbHMvbWFwLXN2Zy1yb3V0ZXMvbWFwLXN2Zy1yb3V0ZXMnO1xuXG4vLyBDb25zdGFudHNcbmltcG9ydCB7XG4gIE1hcEluZm9XaW5kb3dPcHRpb25zQ29uc3RhbnRzLFxuICBNYXBPcHRpb25zQ29uc3RhbnRzLFxufSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWFwLmNvbnN0YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZXNcbiAgICBHb29nbGVNYXBzTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIENhTWFwRHJvcGRvd25Db21wb25lbnQsXG4gICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIENhTWFwQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgQElucHV0KCkgc2V0IGRhdGEodmFsdWVzOiBJQ2FNYXBQcm9wcykge1xuICAgIHRoaXMuaGFuZGxlTWFwRGF0YSh2YWx1ZXMpO1xuICB9XG4gIEBPdXRwdXQoKSByZXNldFNlbGVjdGVkTWFya2VySXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNsdXN0ZXJNYXJrZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcE1hcmtlcnM+KCk7XG4gIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgQE91dHB1dCgpIGdldEluZm9XaW5kb3dEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBib3VuZHNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwQm91bmRzWm9vbT4oKTtcbiAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKEdvb2dsZU1hcCwgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcHMhOiBHb29nbGVNYXA7XG4gIEBWaWV3Q2hpbGQoTWFwSW5mb1dpbmRvdykgaW5mb1dpbmRvd3NWaWV3ITogTWFwSW5mb1dpbmRvdztcbiAgcHVibGljIGN1cnJlbnRseU9wZW5XaW5kb3chOiBNYXBJbmZvV2luZG93IHwgbnVsbDtcbiAgcHVibGljIGN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nITogTWFwSW5mb1dpbmRvdyB8IG51bGw7XG4gIHB1YmxpYyBwcmV2aW91c0ljb25VcmwhOiBzdHJpbmc7XG4gIHB1YmxpYyBwcmV2aW91c0ljb25VcmxSb3V0aW5nITogc3RyaW5nO1xuICBwdWJsaWMgZm9jdXNlZEljb25Sb3V0aW5nITogbnVtYmVyO1xuICBwcml2YXRlIGRpcmVjdGlvblNlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1NlcnZpY2UoKTtcbiAgcHVibGljIGRpcmVjdGlvbnNSZW5kZXJlcnM6IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZW5kZXJlcltdID0gW107XG4gIHB1YmxpYyBpbml0aWFsSWNvbnM6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBsYWJlbE9yaWdpbj86IGdvb2dsZS5tYXBzLlBvaW50O1xuICB9W10gPSBbXTtcbiAgcHVibGljIGluaXRpYWxNYXJrZXJJY29uczoge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGxhYmVsT3JpZ2luPzogZ29vZ2xlLm1hcHMuUG9pbnQ7XG4gICAgekluZGV4PzogbnVtYmVyO1xuICB9W10gPSBbXTtcbiAgcHVibGljIGluZm9XaW5kb3dPcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucyA9XG4gICAgTWFwSW5mb1dpbmRvd09wdGlvbnNDb25zdGFudHMubWFwSW5mb1dpbmRvd09wdGlvbnM7XG4gIHB1YmxpYyBtYXBPcHRpb25zOiBJTWFwT3B0aW9ucyA9IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcE9wdGlvbnM7XG4gIHB1YmxpYyBtYXBab29tOiBudW1iZXIgPSBNYXBPcHRpb25zQ29uc3RhbnRzLmRlZmF1bHRNYXBab29tO1xuICBwdWJsaWMgbWFwQ2VudGVyOiBJUm91dGVQYXRoID0gTWFwT3B0aW9uc0NvbnN0YW50cy5kZWZhdWx0TWFwQ2VudGVyO1xuICBwdWJsaWMgbWFwOiBnb29nbGUubWFwcy5NYXAgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGlzTWFwQ2VudGVyU2V0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjbHVzdGVyTWFya2Vyc0RhdGE6IElNYXBNYXJrZXJzW10gPSBbXTtcbiAgcHVibGljIG1hcmtlcnNEYXRhOiBJTWFwTWFya2Vyc1tdID0gW107XG4gIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHt9O1xuICBwdWJsaWMgb3BlbmVkSW5mb1dpbmRvd0RhdGE6IElNYXBNYXJrZXJzIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuYXJlYUZpbHRlckRhdGE7XG4gIHB1YmxpYyBpc0FyZWFGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGhvdmVyZWRNYXJrZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdG9yZUluaXRpYWxJY29uRm9yTWFya2VyKCk7XG4gICAgdGhpcy5zdG9yZUluaXRpYWxJY29uRm9yUm91dGluZ01hcmtlcigpO1xuICAgIC8vIFJlc2V0IGFsbCBpY29ucyB0byB0aGVpciBpbml0aWFsIHN0YXRlIG9uIHBhZ2UgbG9hZFxuICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcbiAgICB0aGlzLnJlc2V0Um91dGluZ01hcmtlcnMoKTtcbiAgICAvL0Rpc3BsYXkgcm91dGVzIGZvciByb3V0aW5nTWFya2Vyc1xuICAgIHRoaXMuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc3RvcmVJbml0aWFsSWNvbkZvck1hcmtlcigpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxNYXJrZXJJY29ucyA9IFtdO1xuXG4gICAgdGhpcy5tYXBEYXRhIS5tYXJrZXJzPy5mb3JFYWNoKChtYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLmluaXRpYWxNYXJrZXJJY29uc1tpbmRleF0gPSB7XG4gICAgICAgIHVybDogbWFya2VyLmljb24hLnVybCxcbiAgICAgICAgbGFiZWxPcmlnaW46IG1hcmtlci5pY29uIS5sYWJlbE9yaWdpbixcbiAgICAgICAgekluZGV4OiBtYXJrZXIub3B0aW9ucz8uekluZGV4ID8/IDEsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0b3JlSW5pdGlhbEljb25Gb3JSb3V0aW5nTWFya2VyKCk6IHZvaWQge1xuICAgIHRoaXMubWFwRGF0YS5yb3V0aW5nTWFya2Vycz8uZm9yRWFjaChcbiAgICAgIChtYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbEljb25zW2luZGV4XSA9IHtcbiAgICAgICAgICB1cmw6IG1hcmtlci5pY29uIS51cmwsXG4gICAgICAgICAgbGFiZWxPcmlnaW46IG1hcmtlci5pY29uIS5sYWJlbE9yaWdpbixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uQ2x1c3Rlck1hcmtlckNsaWNrKG1hcmtlckl0ZW06IElNYXBNYXJrZXJzKTogdm9pZCB7XG4gICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgIG1hcmtlckl0ZW0sXG4gICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgKTtcblxuICAgIGlmICghaXNJbmZvV2luZG93T3BlbmVkKSB0aGlzLmNsdXN0ZXJNYXJrZXJDbGljay5lbWl0KG1hcmtlckl0ZW0pO1xuICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobWFya2VySWQpIHRoaXMuZ2V0SW5mb1dpbmRvd0RhdGEuZW1pdChtYXJrZXJJZCk7XG4gIH1cblxuICBwdWJsaWMgb25NYXJrZXJDbGljayhtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkgdGhpcy5nZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlckl0ZW0uZGF0YS5pZCk7XG4gICAgZWxzZSB0aGlzLmNsb3NlSW5mb1dpbmRvdygpO1xuICB9XG5cbiAgcHVibGljIHNldERpcmVjdGlvbnNPbk1hcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBzPy5nb29nbGVNYXApIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5mb3JFYWNoKChyZW5kZXJlcikgPT5cbiAgICAgICAgcmVuZGVyZXIuc2V0TWFwKHRoaXMubWFwcz8uZ29vZ2xlTWFwISlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUFuZERpc3BsYXlSb3V0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgIC8vIENsZWFyIHByZXZpb3VzIGRpcmVjdGlvbnMgcmVuZGVyZXJzXG4gICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+IHJlbmRlcmVyLnNldE1hcChudWxsKSk7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMgPSBbXTtcblxuICAgICAgdGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMhLmZvckVhY2goKHJvdXRlOiBJTWFwUm91dGVQYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZXF1ZXN0ID0ge1xuICAgICAgICAgIG9yaWdpbjogcm91dGUucGF0aFswXSxcbiAgICAgICAgICBkZXN0aW5hdGlvbjogcm91dGUucGF0aFtyb3V0ZS5wYXRoLmxlbmd0aCAtIDFdLFxuICAgICAgICAgIHdheXBvaW50czogcm91dGUucGF0aFxuICAgICAgICAgICAgLnNsaWNlKDEsIHJvdXRlLnBhdGgubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIC5tYXAoKHBvc2l0aW9uKSA9PiAoeyBsb2NhdGlvbjogcG9zaXRpb24gfSkpLFxuICAgICAgICAgIHRyYXZlbE1vZGU6IGdvb2dsZS5tYXBzLlRyYXZlbE1vZGUuQklDWUNMSU5HLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uU2VydmljZS5yb3V0ZShyZXF1ZXN0LCAocmVzdWx0LCBzdGF0dXMpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSBnb29nbGUubWFwcy5EaXJlY3Rpb25zU3RhdHVzLk9LICYmIHJlc3VsdD8ucm91dGVzWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25zUmVuZGVyZXIgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyKHtcbiAgICAgICAgICAgICAgc3VwcHJlc3NJbmZvV2luZG93czogdHJ1ZSxcbiAgICAgICAgICAgICAgc3VwcHJlc3NNYXJrZXJzOiB0cnVlLFxuICAgICAgICAgICAgICBwcmVzZXJ2ZVZpZXdwb3J0OiB0cnVlLFxuICAgICAgICAgICAgICBwb2x5bGluZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjogcm91dGUuc3Ryb2tlQ29sb3IgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTpcbiAgICAgICAgICAgICAgICAgIHJvdXRlLnN0cm9rZU9wYWNpdHkgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfT1BBQ0lUWSxcbiAgICAgICAgICAgICAgICBzdHJva2VXZWlnaHQ6IHJvdXRlLnN0cm9rZVdlaWdodCB8fCBHb29nbGVNYXBFbnVtLlNUUk9LRV9XRUlHSFQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpcmVjdGlvbnNSZW5kZXJlci5zZXREaXJlY3Rpb25zKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMucHVzaChkaXJlY3Rpb25zUmVuZGVyZXIpO1xuICAgICAgICAgICAgdGhpcy5zZXREaXJlY3Rpb25zT25NYXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Sb3V0aW5nTWFya2VyQ2xpY2soXG4gICAgaTogbnVtYmVyLFxuICAgIGV2ZW50OiBnb29nbGUubWFwcy5NYXBNb3VzZUV2ZW50LFxuICAgIG1hcmtlcml0ZW06IElNYXBNYXJrZXJzXG4gICk6IHZvaWQge1xuICAgIC8vIGlmIChtYXJrZXJpdGVtPy5pbmZvV2luZG93Q29udGVudCkge1xuICAgIC8vICAgaWYgKFxuICAgIC8vICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dJbmRleFJvdXRpbmcgPT09IGkgJiZcbiAgICAvLyAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93Um91dGluZ1xuICAgIC8vICAgKSB7XG4gICAgLy8gICAgIGNvbnN0IGluZm9XaW5kb3cgPSB0aGlzLmluZm9XaW5kb3dzVmlld1JvdXRpbmcudG9BcnJheSgpW2ldO1xuICAgIC8vICAgICAvLyBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4gaW5mbyB3aW5kb3cgYW5kIHJlc2V0IHRoZSBpbmRleFxuICAgIC8vICAgICB0aGlzLm1hcERhdGEucm91dGluZ01hcmtlcnMhLm1hcCgoaXRlbTogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAvLyAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcbiAgICAvLyAgICAgICAgIGl0ZW0uaWNvbiA9IHtcbiAgICAvLyAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1tpbmRleF0hLnVybCxcbiAgICAvLyAgICAgICAgICAgbGFiZWxPcmlnaW46IHRoaXMuaW5pdGlhbEljb25zW2luZGV4XSEubGFiZWxPcmlnaW4sXG4gICAgLy8gICAgICAgICB9O1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICAgIGluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAvLyAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93SW5kZXhSb3V0aW5nID0gbnVsbDtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIGNvbnN0IG1hcmtlckluZGV4ID0gdGhpcy5tYXJrZXJSb3V0aW5nLnRvQXJyYXkoKVtpXTtcbiAgICAvLyAgICAgY29uc3QgaW5mb1dpbmRvdyA9IHRoaXMuaW5mb1dpbmRvd3NWaWV3Um91dGluZy50b0FycmF5KClbaV07XG4gICAgLy8gICAgIGlmICh0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nKSB7XG4gICAgLy8gICAgICAgdGhpcy5jdXJyZW50bHlPcGVuV2luZG93Um91dGluZy5jbG9zZSgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChpbmZvV2luZG93KSB7XG4gICAgLy8gICAgICAgLy8gUmVzdG9yZSB0aGUgcHJldmlvdXMgaWNvbiBmb3IgdGhlIHByZXZpb3VzbHkgZm9jdXNlZCByb3V0aW5nIG1hcmtlclxuICAgIC8vICAgICAgIGlmIChcbiAgICAvLyAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nICE9PSB1bmRlZmluZWQgJiZcbiAgICAvLyAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nICE9PSBpXG4gICAgLy8gICAgICAgKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBwcmV2aW91c0ZvY3VzZWRJdGVtID1cbiAgICAvLyAgICAgICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzIVt0aGlzLmZvY3VzZWRJY29uUm91dGluZ107XG4gICAgLy8gICAgICAgICBpZiAocHJldmlvdXNGb2N1c2VkSXRlbSkge1xuICAgIC8vICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRJdGVtLmljb24gPSB7XG4gICAgLy8gICAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1t0aGlzLmZvY3VzZWRJY29uUm91dGluZ10udXJsLFxuICAgIC8vICAgICAgICAgICAgIGxhYmVsT3JpZ2luOlxuICAgIC8vICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsSWNvbnNbdGhpcy5mb2N1c2VkSWNvblJvdXRpbmddLmxhYmVsT3JpZ2luLFxuICAgIC8vICAgICAgICAgICB9O1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnQgbWFya2VyXG4gICAgLy8gICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzIS5tYXAoXG4gICAgLy8gICAgICAgICAoaXRlbTogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAvLyAgICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5wcmV2aW91c0ljb25VcmxSb3V0aW5nID0gaXRlbS5pY29uID8gaXRlbS5pY29uLnVybCA6ICcnO1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nID0gaTtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLnNob3dMYWJlbCA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgICAgIGl0ZW0uaWNvbiA9IHtcbiAgICAvLyAgICAgICAgICAgICAgIHVybDpcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5tYXBEYXRhLmlzVW5pdFZpZXdTdG9wcyB8fCB0aGlzLm1hcERhdGEuaXNEcml2ZXJNaWxlc1xuICAgIC8vICAgICAgICAgICAgICAgICAgID8gaXRlbS5pY29uIS51cmxcbiAgICAvLyAgICAgICAgICAgICAgICAgICA6IE1hcFN2Z1JvdXRlcy5tYXJrZXJTdmdSb3V0ZSxcbiAgICAvLyAgICAgICAgICAgICB9O1xuICAgIC8vICAgICAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICk7XG4gICAgLy8gICAgICAgaW5mb1dpbmRvdy5vcGVuKG1hcmtlckluZGV4KTtcbiAgICAvLyAgICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dSb3V0aW5nID0gaW5mb1dpbmRvdztcbiAgICAvLyAgICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3dJbmRleFJvdXRpbmcgPSBpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gICB0aGlzLm1hcmtlckNsaWNrLmVtaXQobWFya2VyaXRlbSk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5tYXBzLmdvb2dsZU1hcD8uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcblxuICAgICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzPy5tYXAoKGl0ZW06IElNYXBNYXJrZXJzLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IHRoaXMuZm9jdXNlZEljb25Sb3V0aW5nKSB7XG4gICAgICAgICAgaXRlbS5pY29uID0ge1xuICAgICAgICAgICAgdXJsOiB0aGlzLmluaXRpYWxJY29uc1tpXS51cmwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRNYXJrZXJzSWNvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhLm1hcmtlcnM/Lm1hcCgobWFya2VyOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubWFya2VyLFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgLi4ubWFya2VyLmljb24sXG4gICAgICAgICAgc2NhbGVkU2l6ZTogbWFya2VyLmlzTGFyZ2VNYXJrZXJcbiAgICAgICAgICAgID8gTWFwT3B0aW9uc0NvbnN0YW50cy5sYXJnZU1hcmtlclNpemVcbiAgICAgICAgICAgIDogTWFwT3B0aW9uc0NvbnN0YW50cy5kZWZhdWx0TWFya2VyU2l6ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczogeyB6SW5kZXg6IGluZGV4ICsgMSB9LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Um91dGluZ01hcmtlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzPy5mb3JFYWNoKFxuICAgICAgKG1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbWFya2VyLmljb24gPSB7XG4gICAgICAgICAgdXJsOiBtYXJrZXIuaWNvbiEudXJsLFxuICAgICAgICAgIGxhYmVsT3JpZ2luOiBtYXJrZXIuaWNvbiEubGFiZWxPcmlnaW4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcFJlYWR5KG1hcEluc3RhbmNlOiBnb29nbGUubWFwcy5NYXApOiB7XG4gICAgZmlsbENvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdlaWdodD86IG51bWJlcjtcbiAgICBmaWxsT3BhY2l0eT86IG51bWJlcjtcbiAgfSB8IHZvaWQge1xuICAgIHRoaXMubWFwID0gbWFwSW5zdGFuY2U7XG5cbiAgICBpZiAodGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybCkge1xuICAgICAgY29uc3Qgc3RhdGVCb3VuZGFyaWVzVXJsID0gdGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybC51cmw7XG4gICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLmxvYWRHZW9Kc29uKHN0YXRlQm91bmRhcmllc1VybCk7XG5cbiAgICAgIHRoaXMubWFwcy5nb29nbGVNYXA/LmRhdGEuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVEZW5zaXR5ID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnZGVuc2l0eScpO1xuICAgICAgICBjb25zdCB7IGZpbGxDb2xvciwgZmlsbE9wYWNpdHkgfSA9IE1hcEhlbHBlci5nZXRGaWxsQ29sb3JGb3JTdGF0ZShcbiAgICAgICAgICBzdGF0ZURlbnNpdHkgYXMgbnVtYmVyLFxuICAgICAgICAgIHRoaXMubWFwRGF0YS52aWV3IHx8ICcnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsbENvbG9yOiBmaWxsQ29sb3IsXG4gICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRUVFRUVFJyxcbiAgICAgICAgICBzdHJva2VXZWlnaHQ6IDAuNixcbiAgICAgICAgICBmaWxsT3BhY2l0eTogZmlsbE9wYWNpdHksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICB0aGlzLnNldE1hcFN0eWxlcygpO1xuICAgIHRoaXMuZ2V0TWFwSWRsZUV2ZW50KG1hcEluc3RhbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNYXBTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwRGF0YT8uZGFya01vZGUpXG4gICAgICB0aGlzLm1hcE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcbiAgICAgICAgc3R5bGVzOiBNYXBDb25zdGFudHMuR09PR0xFX01BUF9EQVJLX1NUWUxFUyxcbiAgICAgIH07XG5cbiAgICBjb25zdCBhbGxNYXJrZXJzQ29tYmluZWQgPSBbXG4gICAgICAuLi4odGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzID8/IFtdKSxcbiAgICAgIC4uLih0aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMgPz8gW10pLFxuICAgICAgLi4uKHRoaXMubWFwRGF0YS5tYXJrZXJzID8/IFtdKSxcbiAgICBdO1xuXG4gICAgaWYgKGFsbE1hcmtlcnNDb21iaW5lZD8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBtYXBDZW50ZXJBbmRCb3VuZHMgPVxuICAgICAgICBNYXBIZWxwZXIuZ2V0TWFwQ2VudGVyQW5kWm9vbShhbGxNYXJrZXJzQ29tYmluZWQpO1xuXG4gICAgICB0aGlzLm1hcCEucGFuVG8obWFwQ2VudGVyQW5kQm91bmRzLm1hcENlbnRlcik7XG4gICAgICBpZiAobWFwQ2VudGVyQW5kQm91bmRzLmJvdW5kcylcbiAgICAgICAgdGhpcy5tYXA/LmZpdEJvdW5kcyhtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKTtcbiAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSlcbiAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obWFwQ2VudGVyQW5kQm91bmRzLm1hcFpvb20pO1xuXG4gICAgICB0aGlzLmlzTWFwQ2VudGVyU2V0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFwSWRsZUV2ZW50KG1hcDogZ29vZ2xlLm1hcHMuTWFwKTogdm9pZCB7XG4gICAgbWFwLmFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4ge1xuICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEJvdW5kc0NoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIGNvbnN0IG1hcEJvdW5kcyA9IHRoaXMubWFwLmdldEJvdW5kcygpO1xuICAgICAgY29uc3QgbWFwWm9vbSA9IHRoaXMubWFwLmdldFpvb20oKTtcblxuICAgICAgaWYgKG1hcEJvdW5kcyAmJiBtYXBab29tKSB7XG4gICAgICAgIGNvbnN0IGJvdW5kc09iamVjdCA9IHsgYm91bmRzOiBtYXBCb3VuZHMsIHpvb206IG1hcFpvb20gfTtcbiAgICAgICAgdGhpcy5ib3VuZHNDaGFuZ2VkLmVtaXQoYm91bmRzT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmV3RGF0YShkYXRhOiBJQ2FNYXBQcm9wcyk6IElDYU1hcFByb3BzIHtcbiAgICBjb25zdCBuZXdNYXJrZXJzID0gZGF0YT8ubWFya2Vycz8ubWFwKChtYXJrZXI6IElNYXBNYXJrZXJzKSA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgbWFya2VyLFxuICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoaXNTZWxlY3RlZE1hcmtlcikge1xuICAgICAgICBjb25zdCBuZXdNYXJrZXJEYXRhID0ge1xuICAgICAgICAgIC4uLm1hcmtlcixcbiAgICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICAuLi5tYXJrZXIuaWNvbixcbiAgICAgICAgICAgIHNjYWxlZFNpemU6IE1hcE9wdGlvbnNDb25zdGFudHMubGFyZ2VNYXJrZXJTaXplLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9uczogeyB6SW5kZXg6IDk5OSB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXdNYXJrZXJEYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFya2VyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBtYXJrZXJzOiBuZXdNYXJrZXJzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgb3Blbk1hcmtlckluZm9XaW5kb3cobWFya2VySXRlbTogSU1hcFNlbGVjdGVkTWFya2VyRGF0YSk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBjb25zdCBpc0NsdXN0ZXJJdGVtQ2hhbmdlZCA9IHRoaXMuY2hlY2tDbHVzdGVyRGF0YUNoYW5nZXMoXG4gICAgICBtYXJrZXJJdGVtLFxuICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pbmZvV2luZG93c1ZpZXcgJiYgKCFpc0luZm9XaW5kb3dPcGVuZWQgfHwgaXNDbHVzdGVySXRlbUNoYW5nZWQpKSB7XG4gICAgICB0aGlzLm1hcERhdGEubWFya2VycyEubWFwKChpdGVtOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihpdGVtLCBtYXJrZXJJdGVtKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRNYXJrZXIpIHtcbiAgICAgICAgICBpdGVtLmljb24gPSB7XG4gICAgICAgICAgICAuLi5pdGVtLmljb24sXG4gICAgICAgICAgICBzY2FsZWRTaXplOiBNYXBPcHRpb25zQ29uc3RhbnRzLmxhcmdlTWFya2VyU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGl0ZW0ub3B0aW9ucyA9IHsgekluZGV4OiA5OTkgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmljb24gPSB7XG4gICAgICAgICAgICAuLi5pdGVtLmljb24sXG4gICAgICAgICAgICBzY2FsZWRTaXplOiBpdGVtLmlzTGFyZ2VNYXJrZXJcbiAgICAgICAgICAgICAgPyBNYXBPcHRpb25zQ29uc3RhbnRzLmxhcmdlTWFya2VyU2l6ZVxuICAgICAgICAgICAgICA6IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcmtlclNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpdGVtLm9wdGlvbnMgPSB7IHpJbmRleDogaW5kZXggKyAxIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmN1cnJlbnRseU9wZW5XaW5kb3cgPSB0aGlzLmluZm9XaW5kb3dzVmlldztcbiAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBtYXJrZXJJdGVtO1xuXG4gICAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkge1xuICAgICAgICB0aGlzLm1hcCEucGFuVG8obWFya2VySXRlbS5wb3NpdGlvbik7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbmZvV2luZG93T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5mb1dpbmRvd09wdGlvbnMsXG4gICAgICAgICAgICBwb3NpdGlvbjogbWFya2VySXRlbS5wb3NpdGlvbixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuaW5mb1dpbmRvd3NWaWV3Lm9wZW4oKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgIG1hcmtlckl0ZW06IElNYXBNYXJrZXJzLFxuICAgIG1hcmtlckl0ZW0yPzogSU1hcE1hcmtlcnMgfCBudWxsXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBtYXJrZXJJdGVtLnBvc2l0aW9uLmxhdCA9PT0gbWFya2VySXRlbTI/LnBvc2l0aW9uPy5sYXQgJiZcbiAgICAgIG1hcmtlckl0ZW0ucG9zaXRpb24ubG5nID09PSBtYXJrZXJJdGVtMj8ucG9zaXRpb24/LmxuZ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VJbmZvV2luZG93KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcblxuICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudGx5T3BlbldpbmRvdyA9IG51bGw7XG4gICAgdGhpcy5pbmZvV2luZG93c1ZpZXcuY2xvc2UoKTtcbiAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNYXBEYXRhKG5ld0RhdGE6IElDYU1hcFByb3BzKTogdm9pZCB7XG4gICAgdGhpcy5tYXBEYXRhID0gdGhpcy5nZXROZXdEYXRhKG5ld0RhdGEpO1xuXG4gICAgaWYgKHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpXG4gICAgICB0aGlzLm9wZW5NYXJrZXJJbmZvV2luZG93KHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpO1xuICAgIGVsc2UgaWYgKHRoaXMuY3VycmVudGx5T3BlbldpbmRvdykgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcblxuICAgIGlmIChuZXdEYXRhICYmICF0aGlzLmlzTWFwQ2VudGVyU2V0ICYmIHRoaXMubWFwKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG5ld0RhdGEubWFya2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgIG5ld0RhdGEuY2x1c3Rlck1hcmtlcnM/Lmxlbmd0aCB8fFxuICAgICAgICBuZXdEYXRhLnJvdXRpbmdNYXJrZXJzPy5sZW5ndGhcbiAgICAgIClcbiAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEpXG4gICAgICB0aGlzLmNsdXN0ZXJMaXN0U2Nyb2xsRXZlbnQuZW1pdCh0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja0NsdXN0ZXJEYXRhQ2hhbmdlcyhcbiAgICBuZXdEYXRhOiBJTWFwTWFya2VycyxcbiAgICBwcmV2aW91c0RhdGE/OiBJTWFwTWFya2VycyB8IG51bGxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ld0RhdGEuaW5mb1dpbmRvd0NvbnRlbnQ/LmNsdXN0ZXJEYXRhXG4gICAgICA/IG5ld0RhdGEuaW5mb1dpbmRvd0NvbnRlbnQ/LnNlbGVjdGVkQ2x1c3Rlckl0ZW1EYXRhPy5kYXRhPy5pZCAhPT1cbiAgICAgICAgICBwcmV2aW91c0RhdGE/LmluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YT8uZGF0YT8uaWQgfHxcbiAgICAgICAgICBuZXdEYXRhLmluZm9XaW5kb3dDb250ZW50Py5jbHVzdGVyRGF0YT8ubGVuZ3RoICE9PVxuICAgICAgICAgICAgcHJldmlvdXNEYXRhPy5pbmZvV2luZG93Q29udGVudD8uY2x1c3RlckRhdGE/Lmxlbmd0aFxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtlck1vdXNlb3ZlcihtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGlmIChtYXJrZXJJdGVtPy5sYWJlbD8uaXNTaG93T25Ib3ZlcilcbiAgICAgIHRoaXMuaG92ZXJlZE1hcmtlcklkID0gbWFya2VySXRlbT8uZGF0YT8uaWQ7XG4gIH1cblxuICBwdWJsaWMgb25NYXJrZXJNb3VzZW91dChtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgIGlmIChtYXJrZXJJdGVtPy5sYWJlbD8uaXNTaG93T25Ib3ZlcikgdGhpcy5ob3ZlcmVkTWFya2VySWQgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIG9uWm9vbUNoYW5nZShpc01pbnVzQ2xpY2s/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFpvb21MZXZlbCA9IHRoaXMubWFwPy5nZXRab29tKCk7XG5cbiAgICBpZiAoY3VycmVudFpvb21MZXZlbCkge1xuICAgICAgY29uc3QgbmV4dFpvb21MZXZlbCA9IGlzTWludXNDbGlja1xuICAgICAgICA/IGN1cnJlbnRab29tTGV2ZWwgLSAxXG4gICAgICAgIDogY3VycmVudFpvb21MZXZlbCArIDE7XG4gICAgICB0aGlzLm1hcD8uc2V0Wm9vbShuZXh0Wm9vbUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25PcGVuSW5NYXAoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuSW5NYXBFdmVudC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIG1hcmtlcjogSU1hcE1hcmtlcnMpOiBudW1iZXIge1xuICAgIHJldHVybiBtYXJrZXIuZGF0YS5pZDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5UG9zaXRpb24oaW5kZXg6IG51bWJlciwgbWFya2VyOiBJTWFwTWFya2Vycyk6IG51bWJlciB7XG4gICAgcmV0dXJuIG1hcmtlci5wb3NpdGlvbi5sYXQgKyBtYXJrZXIucG9zaXRpb24ubG5nO1xuICB9XG5cbiAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5mb3JFYWNoKChyZW5kZXJlcikgPT4gcmVuZGVyZXIuc2V0TWFwKG51bGwpKTtcbiAgfVxufVxuIiwiPGdvb2dsZS1tYXBcbiAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gIFtjbGFzcy5kYXJrLW1vZGUtbWFwXT1cIm1hcERhdGEuZGFya01vZGVcIlxuICBoZWlnaHQ9XCIxMDAlXCJcbiAgd2lkdGg9XCIxMDAlXCJcbiAgW3pvb21dPVwibWFwWm9vbVwiXG4gIFtjZW50ZXJdPVwibWFwQ2VudGVyXCJcbiAgW29wdGlvbnNdPVwibWFwT3B0aW9uc1wiXG4gIChtYXBJbml0aWFsaXplZCk9XCJvbk1hcFJlYWR5KCRldmVudClcIlxuPlxuICA8bWFwLW1hcmtlclxuICAgICNtYXJrZXI9XCJtYXBNYXJrZXJcIlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IG1hcmtlcml0ZW0gb2YgbWFwRGF0YS5tYXJrZXJzO1xuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgIFwiXG4gICAgW3Bvc2l0aW9uXT1cIm1hcmtlcml0ZW0ucG9zaXRpb25cIlxuICAgIFtpY29uXT1cIm1hcmtlcml0ZW0uaWNvbiFcIlxuICAgIFtsYWJlbF09XCJcbiAgICAgIChvcGVuZWRJbmZvV2luZG93RGF0YT8ucG9zaXRpb24/LmxhdCA9PT0gbWFya2VyaXRlbT8ucG9zaXRpb24/LmxhdCAmJlxuICAgICAgICBvcGVuZWRJbmZvV2luZG93RGF0YT8ucG9zaXRpb24/LmxuZyA9PT0gbWFya2VyaXRlbT8ucG9zaXRpb24/LmxuZykgfHxcbiAgICAgIChtYXJrZXJpdGVtLmxhYmVsPy5pc1Nob3dPbkhvdmVyICYmXG4gICAgICAgIGhvdmVyZWRNYXJrZXJJZCAhPT0gbWFya2VyaXRlbS5kYXRhLmlkKVxuICAgICAgICA/ICcnXG4gICAgICAgIDogbWFya2VyaXRlbS5sYWJlbCFcbiAgICBcIlxuICAgIFtvcHRpb25zXT1cIm1hcmtlcml0ZW0ub3B0aW9ucyFcIlxuICAgIChtYXBDbGljayk9XCJvbk1hcmtlckNsaWNrKG1hcmtlcml0ZW0pXCJcbiAgICAobWFwTW91c2VvdmVyKT1cIm9uTWFya2VyTW91c2VvdmVyKG1hcmtlcml0ZW0pXCJcbiAgICAobWFwTW91c2VvdXQpPVwib25NYXJrZXJNb3VzZW91dChtYXJrZXJpdGVtKVwiXG4gID5cbiAgPC9tYXAtbWFya2VyPlxuXG4gIDxtYXAtaW5mby13aW5kb3dcbiAgICAjaW5mb1dpbmRvd3NWaWV3PVwibWFwSW5mb1dpbmRvd1wiXG4gICAgW29wdGlvbnNdPVwiaW5mb1dpbmRvd09wdGlvbnNcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW5lZEluZm9XaW5kb3dEYXRhICE9PSBudWxsXCI+XG4gICAgICA8YXBwLWNhLW1hcC1kcm9wZG93blxuICAgICAgICBbaW5mb1dpbmRvd0NvbnRlbnRdPVwib3BlbmVkSW5mb1dpbmRvd0RhdGEuaW5mb1dpbmRvd0NvbnRlbnRcIlxuICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YS5kYXRhXCJcbiAgICAgICAgKG9uQ2x1c3Rlckl0ZW1DbGljayk9XCJnZXRNYXJrZXJJbmZvV2luZG93KCRldmVudClcIlxuICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgKG9uQmFja0J1dHRvbkNsaWNrKT1cIm9uQ2x1c3RlckJhY2tCdXR0b25DbGljaygpXCJcbiAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbWFwLWluZm8td2luZG93PlxuXG4gIDxtYXAtbWFya2VyXG4gICAgI21hcmtlckNsdXN0ZXI9XCJtYXBNYXJrZXJcIlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IG1hcmtlciBvZiBtYXBEYXRhLmNsdXN0ZXJNYXJrZXJzO1xuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIHRyYWNrQnk6IHRyYWNrQnlQb3NpdGlvblxuICAgIFwiXG4gICAgW3Bvc2l0aW9uXT1cIm1hcmtlci5wb3NpdGlvblwiXG4gICAgW2ljb25dPVwibWFya2VyLmljb25cIlxuICAgIChtYXBDbGljayk9XCJvbkNsdXN0ZXJNYXJrZXJDbGljayhtYXJrZXIpXCJcbiAgPlxuICA8L21hcC1tYXJrZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJlYUZpbHRlckFjdGl2ZVwiPlxuICAgIDxtYXAtY2lyY2xlXG4gICAgICBbb3B0aW9uc109XCJhcmVhRmlsdGVyRGF0YS5vcHRpb25zXCJcbiAgICAgIFtjZW50ZXJdPVwiYXJlYUZpbHRlckRhdGEuY2VudGVyXCJcbiAgICAgIFtyYWRpdXNdPVwiYXJlYUZpbHRlckRhdGEucmFkaXVzXCJcbiAgICA+PC9tYXAtY2lyY2xlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bWFwLW1hcmtlclxuICAgICNtYXJrZXJSb3V0aW5nPVwibWFwTWFya2VyXCJcbiAgICAqbmdGb3I9XCJcbiAgICAgIGxldCBtYXJrZXJpdGVtIG9mIG1hcERhdGEucm91dGluZ01hcmtlcnM7XG4gICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgdHJhY2tCeTogaWRlbnRpdHlcbiAgICBcIlxuICAgIFtwb3NpdGlvbl09XCJtYXJrZXJpdGVtLnBvc2l0aW9uXCJcbiAgICBbaWNvbl09XCJtYXJrZXJpdGVtLmljb24hXCJcbiAgICBbbGFiZWxdPVwiZm9jdXNlZEljb25Sb3V0aW5nICE9PSBpID8gbWFya2VyaXRlbS5sYWJlbCEgOiAnJ1wiXG4gICAgW29wdGlvbnNdPVwibWFya2VyaXRlbS5vcHRpb25zIVwiXG4gICAgKG1hcENsaWNrKT1cIm9uUm91dGluZ01hcmtlckNsaWNrKGksICRldmVudCwgbWFya2VyaXRlbSlcIlxuICA+XG4gICAgPG1hcC1pbmZvLXdpbmRvdyAjaW5mb1dpbmRvd3NWaWV3Um91dGluZz1cIm1hcEluZm9XaW5kb3dcIj5cbiAgICAgIDxhcHAtY2EtbWFwLWRyb3Bkb3duPjwvYXBwLWNhLW1hcC1kcm9wZG93bj5cbiAgICA8L21hcC1pbmZvLXdpbmRvdz5cbiAgPC9tYXAtbWFya2VyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXBEYXRhLmlzT3BlbkluTWFwU2hvd25cIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm9wZW4taW4tbWFwLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgbmdiVG9vbHRpcFxuICAgICAgbWFpbkNhVG9vbHRpcD1cIk9wZW4gaW4gTWFwXCJcbiAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzQyNDI0MlwiXG4gICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAoY2xpY2spPVwib25PcGVuSW5NYXAoKVwiXG4gICAgPlxuICAgICAgPHN2Zy1pY29uXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19sb2NhdGlvbl9tYXAuc3ZnXCJcbiAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgID48L3N2Zy1pY29uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFwRGF0YS5pc1pvb21TaG93blwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibWFwLXpvb20tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1lbmQgZ2FwLTFcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZmxleC1jb2x1bW4nOiAhbWFwRGF0YS5pc1ZlcnRpY2FsWm9vbSxcbiAgICAgICAgJ3ZlcnRpY2FsLXpvb20tYnV0dG9ucyc6IG1hcERhdGEuaXNWZXJ0aWNhbFpvb21cbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXAtem9vbS1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbY2xhc3MuZmxleC1jb2x1bW5dPVwibWFwRGF0YS5pc1ZlcnRpY2FsWm9vbVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ6b29tLWJ1dHRvbi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtMVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uWm9vbUNoYW5nZSh0cnVlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9wb3B1cC9NaW51cy5zdmdcIlxuICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTQsICdoZWlnaHQucHgnOiAxNCB9XCJcbiAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInpvb20tYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC0xXCJcbiAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9jb21tb24vaWNfcGx1cy5zdmdcIlxuICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTQsICdoZWlnaHQucHgnOiAxNCB9XCJcbiAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXAtem9vbS1yYW5nZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1saW5lXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS10ZXh0IGNhLWZvbnQtbWVkaXVtXCI+NTAgbWk8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZ29vZ2xlLW1hcD5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL21vZGVscy9tYXAubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcERyb3Bkb3duQ29udGVudCB9IGZyb20gJy4uLy4uL2NhLW1hcC1kcm9wZG93bi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVBhdGgge1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhTWFwUHJvcHMge1xuICBjbHVzdGVyTWFya2Vycz86IElNYXBNYXJrZXJzW107XG4gIHJvdXRpbmdNYXJrZXJzPzogSU1hcE1hcmtlcnNbXTtcbiAgcm91dGVQYXRocz86IElNYXBSb3V0ZVBhdGhbXTtcbiAgc2VsZWN0ZWRNYXJrZXJEYXRhPzogSU1hcFNlbGVjdGVkTWFya2VyRGF0YTtcbiAgaXNBY2NpZGVudE1hcD86IGJvb2xlYW47XG4gIHN0YXRlQm91bmRhcmllc1VybD86IHsgdXJsOiBzdHJpbmcgfTtcbiAgbWFya2Vycz86IElNYXBNYXJrZXJzW107XG4gIHZpZXc/OiBzdHJpbmc7XG4gIGlzVW5pdFZpZXdTdG9wcz86IGJvb2xlYW47XG4gIGlzRHJpdmVyTWlsZXM/OiBib29sZWFuO1xuICBtYXBUeXBlPzogc3RyaW5nO1xuICBkYXJrTW9kZT86IGJvb2xlYW47XG4gIGlzWm9vbVNob3duPzogYm9vbGVhbjtcbiAgaXNPcGVuSW5NYXBTaG93bj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcE9wdGlvbnMge1xuICBmdWxsc2NyZWVuQ29udHJvbDogYm9vbGVhbjtcbiAgZGlzYWJsZURlZmF1bHRVSTogYm9vbGVhbjtcbiAgcmVzdHJpY3Rpb246IHtcbiAgICBsYXRMbmdCb3VuZHM6IHtcbiAgICAgIG5vcnRoOiBudW1iZXI7XG4gICAgICBzb3V0aDogbnVtYmVyO1xuICAgICAgZWFzdDogbnVtYmVyO1xuICAgICAgd2VzdDogbnVtYmVyO1xuICAgIH07XG4gICAgc3RyaWN0Qm91bmRzOiBib29sZWFuO1xuICB9O1xuICBzdHJlZXRWaWV3Q29udHJvbDogYm9vbGVhbjtcbiAgc3R5bGVzOiBJTWFwU3R5bGVzW107XG4gIGtleWJvYXJkU2hvcnRjdXRzOiBib29sZWFuO1xuICBwYW5Db250cm9sOiBib29sZWFuO1xuICBnZXN0dXJlSGFuZGxpbmc6IHN0cmluZztcbiAgbWFwVHlwZUNvbnRyb2w/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBTdHlsZXMge1xuICBlbGVtZW50VHlwZT86IHN0cmluZyB8IG51bGw7XG4gIGZlYXR1cmVUeXBlPzogc3RyaW5nIHwgbnVsbDtcbiAgc3R5bGVyczogSU1hcENvbG9yW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcENvbG9yIHtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIHZpc2liaWxpdHk/OiBzdHJpbmc7XG4gIHdlaWdodD86IG51bWJlcjtcbiAgc2F0dXJhdGlvbj86IG51bWJlcjtcbiAgbGlnaHRuZXNzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBNYXJrZXJzIHtcbiAgcG9zaXRpb246IElSb3V0ZVBhdGg7XG4gIGljb246IElNYXBNYXJrZXJzSWNvbjtcbiAgaW5mb1dpbmRvd0NvbnRlbnQ/OiBNYXBEcm9wZG93bkNvbnRlbnQ7XG4gIGxhYmVsPzogSU1hcmtlckxhYmVsO1xuICBsYWJlbE9yaWdpbj86IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgZGF0YT86IGFueTtcbiAgb3B0aW9ucz86IHsgekluZGV4PzogbnVtYmVyIH07XG4gIGlzTGFyZ2VNYXJrZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBNYXJrZXJzSWNvbiB7XG4gIHVybDogc3RyaW5nO1xuICBsYWJlbE9yaWdpbj86IGdvb2dsZS5tYXBzLlBvaW50O1xuICBzY2FsZWRTaXplPzogZ29vZ2xlLm1hcHMuU2l6ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFya2VyTGFiZWwge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZvbnRTaXplPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZm9udFdlaWdodD86IHN0cmluZztcbiAgaXNTaG93T25Ib3Zlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcFJvdXRlUGF0aCB7XG4gIHBhdGg6IElSb3V0ZVBhdGhbXTtcbiAgc3Ryb2tlQ29sb3I6IHN0cmluZztcbiAgc3Ryb2tlT3BhY2l0eT86IG51bWJlcjtcbiAgc3Ryb2tlV2VpZ2h0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBCb3VuZHNab29tIHtcbiAgYm91bmRzOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHM7XG4gIHpvb206IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhIGV4dGVuZHMgSU1hcE1hcmtlcnMge1xuICBpc0NsdXN0ZXJNYXJrZXI/OiBib29sZWFuO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL21vZGVscy9tYXAubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcERyb3Bkb3duQ29udGVudCB9IGZyb20gJy4uLy4uL2NhLW1hcC1kcm9wZG93bi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVBhdGgge1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhTWFwUHJvcHMge1xuICBjbHVzdGVyTWFya2Vycz86IElNYXBNYXJrZXJzW107XG4gIHJvdXRpbmdNYXJrZXJzPzogSU1hcE1hcmtlcnNbXTtcbiAgcm91dGVQYXRocz86IElNYXBSb3V0ZVBhdGhbXTtcbiAgc2VsZWN0ZWRNYXJrZXJEYXRhPzogSU1hcFNlbGVjdGVkTWFya2VyRGF0YTtcbiAgaXNBY2NpZGVudE1hcD86IGJvb2xlYW47XG4gIHN0YXRlQm91bmRhcmllc1VybD86IHsgdXJsOiBzdHJpbmcgfTtcbiAgbWFya2Vycz86IElNYXBNYXJrZXJzW107XG4gIHZpZXc/OiBzdHJpbmc7XG4gIGlzVW5pdFZpZXdTdG9wcz86IGJvb2xlYW47XG4gIGlzRHJpdmVyTWlsZXM/OiBib29sZWFuO1xuICBtYXBUeXBlPzogc3RyaW5nO1xuICBkYXJrTW9kZT86IGJvb2xlYW47XG4gIGlzWm9vbVNob3duPzogYm9vbGVhbjtcbiAgaXNWZXJ0aWNhbFpvb20/OiBib29sZWFuO1xuICBpc09wZW5Jbk1hcFNob3duPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwT3B0aW9ucyB7XG4gIGZ1bGxzY3JlZW5Db250cm9sOiBib29sZWFuO1xuICBkaXNhYmxlRGVmYXVsdFVJOiBib29sZWFuO1xuICByZXN0cmljdGlvbjoge1xuICAgIGxhdExuZ0JvdW5kczoge1xuICAgICAgbm9ydGg6IG51bWJlcjtcbiAgICAgIHNvdXRoOiBudW1iZXI7XG4gICAgICBlYXN0OiBudW1iZXI7XG4gICAgICB3ZXN0OiBudW1iZXI7XG4gICAgfTtcbiAgICBzdHJpY3RCb3VuZHM6IGJvb2xlYW47XG4gIH07XG4gIHN0cmVldFZpZXdDb250cm9sOiBib29sZWFuO1xuICBzdHlsZXM6IElNYXBTdHlsZXNbXTtcbiAga2V5Ym9hcmRTaG9ydGN1dHM6IGJvb2xlYW47XG4gIHBhbkNvbnRyb2w6IGJvb2xlYW47XG4gIGdlc3R1cmVIYW5kbGluZzogc3RyaW5nO1xuICBtYXBUeXBlQ29udHJvbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcFN0eWxlcyB7XG4gIGVsZW1lbnRUeXBlPzogc3RyaW5nIHwgbnVsbDtcbiAgZmVhdHVyZVR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICBzdHlsZXJzOiBJTWFwQ29sb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwQ29sb3Ige1xuICBjb2xvcj86IHN0cmluZztcbiAgdmlzaWJpbGl0eT86IHN0cmluZztcbiAgd2VpZ2h0PzogbnVtYmVyO1xuICBzYXR1cmF0aW9uPzogbnVtYmVyO1xuICBsaWdodG5lc3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcE1hcmtlcnMge1xuICBwb3NpdGlvbjogSVJvdXRlUGF0aDtcbiAgaWNvbjogSU1hcE1hcmtlcnNJY29uO1xuICBpbmZvV2luZG93Q29udGVudD86IE1hcERyb3Bkb3duQ29udGVudDtcbiAgbGFiZWw/OiBJTWFya2VyTGFiZWw7XG4gIGxhYmVsT3JpZ2luPzogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICBkYXRhPzogYW55O1xuICBvcHRpb25zPzogeyB6SW5kZXg/OiBudW1iZXIgfTtcbiAgaXNMYXJnZU1hcmtlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcE1hcmtlcnNJY29uIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxhYmVsT3JpZ2luPzogZ29vZ2xlLm1hcHMuUG9pbnQ7XG4gIHNjYWxlZFNpemU/OiBnb29nbGUubWFwcy5TaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXJrZXJMYWJlbCB7XG4gIHRleHQ6IHN0cmluZztcbiAgZm9udFNpemU/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBmb250V2VpZ2h0Pzogc3RyaW5nO1xuICBpc1Nob3dPbkhvdmVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwUm91dGVQYXRoIHtcbiAgcGF0aDogSVJvdXRlUGF0aFtdO1xuICBzdHJva2VDb2xvcjogc3RyaW5nO1xuICBzdHJva2VPcGFjaXR5PzogbnVtYmVyO1xuICBzdHJva2VXZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcEJvdW5kc1pvb20ge1xuICBib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcztcbiAgem9vbTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBTZWxlY3RlZE1hcmtlckRhdGEgZXh0ZW5kcyBJTWFwTWFya2VycyB7XG4gIGlzQ2x1c3Rlck1hcmtlcj86IGJvb2xlYW47XG59XG4iXX0=
@@ -110,7 +110,7 @@ export class CaPeriodContentPaymentComponent {
110
110
  //Modules
111
111
  CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i2.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type:
112
112
  //Components
113
- CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop"] }, { kind: "component", type: CaDotsMenuComponent, selector: "ca-dots-menu", inputs: ["icon", "openModalIcon", "itemList"], outputs: ["onClick"] }, { kind: "pipe", type: DateFromStringPipe, name: "dateFromStringPipe" }, { kind: "pipe", type: IncludedCountPipe, name: "includedCount" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
+ CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop"] }, { kind: "component", type: CaDotsMenuComponent, selector: "ca-dots-menu", inputs: ["icon", "openModalIcon", "itemList", "placement"], outputs: ["onClick"] }, { kind: "pipe", type: DateFromStringPipe, name: "dateFromStringPipe" }, { kind: "pipe", type: IncludedCountPipe, name: "includedCount" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaPeriodContentPaymentComponent, decorators: [{
116
116
  type: Component,
@@ -151,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
151
151
  }], reorderedDataEmiter: [{
152
152
  type: Output
153
153
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC9jb21wb25lbnRzL2NhLXBlcmlvZC1jb250ZW50LXBheW1lbnQvY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC9jb21wb25lbnRzL2NhLXBlcmlvZC1jb250ZW50LXBheW1lbnQvY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxTQUFTO0FBQ1QsT0FBTyxFQUVMLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsV0FBVztBQUNYLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxZQUFZO0FBQ1osT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFbkYsUUFBUTtBQUNSLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRWpHLFFBQVE7QUFDUixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBMEI3RSxNQUFNLE9BQU8sK0JBQStCO0lBTTFDLElBQWEsUUFBUSxDQUFDLFFBQWtEO1FBQ3RFLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxRQUFrRDtRQUN0RSxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBU0QsSUFBYSxNQUFNLENBQUMsSUFBYTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUk7WUFDekIsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLGFBQWE7WUFDNUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLG9CQUFvQixDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQTZCRCxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlEbkMsY0FBUyxHQUFpQyxFQUFFLENBQUM7UUFDN0MsY0FBUyxHQUFpQyxFQUFFLENBQUM7UUFFM0MsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFpQnpDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDbEIsb0JBQWUsR0FDcEIsNEJBQTRCLENBQUMsb0JBQW9CLENBQUM7UUFjM0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUxQiwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25ELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUkxQyxDQUFDO1FBRUssd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBRzVDLENBQUM7UUFFTCxXQUFXO1FBQ0osZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDM0IsbUJBQWMsR0FBK0IsRUFBRSxDQUFDO1FBRXhELE9BQU87UUFDQSwyQkFBc0IsR0FDM0Isc0JBQXNCLENBQUM7UUFDbEIsaUJBQVksR0FBVyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDdEQsa0JBQWEsR0FBVyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7UUFDOUQsZ0JBQVcsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBRVUsQ0FBQztJQUU5QyxRQUFRLEtBQUksQ0FBQztJQUVOLGlCQUFpQixDQUFDLFVBQWtCO1FBQ3pDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDckUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWdEO1FBQzVELElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDL0MsZUFBZSxDQUNiLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSyxFQUNyQixLQUFLLENBQUMsYUFBYSxFQUNuQixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDO1NBQ0g7YUFBTTtZQUNMLGlCQUFpQixDQUNmLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSyxFQUNyQixLQUFLLENBQUMsYUFBYSxFQUNuQixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLFlBQWlEO1FBQ2pFLE9BQU8sMEJBQTBCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxjQUFjLENBQUMsSUFJckI7UUFDQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBOUhVLCtCQUErQjttR0FBL0IsK0JBQStCLGlYQXJCL0IsQ0FBQyxrQkFBa0IsQ0FBQyxnSUNoRGpDLDY4V0FpVUE7Z0JEL1FJLFNBQVM7Z0JBQ1QsWUFBWSxvcEJBQ1osb0JBQW9CLGdPQUNwQixnQkFBZ0Isc1dBQ2hCLGNBQWM7Z0JBRWQsWUFBWTtnQkFDWix1QkFBdUIsbU5BRXZCLG1CQUFtQix5SEFHbkIsa0JBQWtCLHNEQUNsQixpQkFBaUI7OzRGQU1SLCtCQUErQjtrQkF4QjNDLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksYUFDTCxDQUFDLGtCQUFrQixDQUFDLFdBQ3RCO3dCQUNQLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFFZCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1Asa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjtxQkFDbEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07d0dBTXRDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU8zQixNQUFNO3NCQUFsQixLQUFLO2dCQVdHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBTUcsbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gU3ZnIHJvdXRlc1xuaW1wb3J0IHsgUGVyaW9kQ29udGVudFN2Z1JvdXRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG4vL01vZHVsZXNcbmltcG9ydCB7XG4gIENka0RyYWdEcm9wLFxuICBEcmFnRHJvcE1vZHVsZSxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICB0cmFuc2ZlckFycmF5SXRlbSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy9Db25zdGFudHNcbmltcG9ydCB7IHRpdGxlQ29sb3JNYXAgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuLy9Db21wb25lbnRzXG5pbXBvcnQgeyBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWFwcC10b29sdGlwLXYyL2NhLWFwcC10b29sdGlwLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2EtZHJvcGRvd24vY2EtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IENhRG90c01lbnVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1kb3RzLW1lbnUvY2EtZG90cy1tZW51LmNvbXBvbmVudCc7XG5cbi8vaGVscGVyXG5pbXBvcnQgeyBQYXlyb2xsUGVyaW9kQ29udGVudEhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7IElJdGVtTGlzdCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9kcm9wZG93bi5tb2RlbCc7XG5pbXBvcnQgeyBQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9wYXlyb2xsLXJlcG9ydC10YWJsZXMudHlwZSc7XG5pbXBvcnQgeyBQaWNrdXBEZWxpdmVyeUJsb2NrQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY2EtcGlja3VwLWRlbGl2ZXJ5LWJsb2NrL3V0aWxzL2NvbnN0YW50cyc7XG5cbi8vIFBpcGVzXG5pbXBvcnQgeyBJbmNsdWRlZENvdW50UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2luY2x1ZGVkX2NvdW50LnBpcGUnO1xuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgRGF0ZUZyb21TdHJpbmdQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvZGF0ZS1mcm9tLXN0cmluZy5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLXBlcmlvZC1jb250ZW50LXBheW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtGb3JtYXRDdXJyZW5jeVBpcGVdLFxuICBpbXBvcnRzOiBbXG4gICAgLy9Nb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG5cbiAgICAvL0NvbXBvbmVudHNcbiAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBDYURyb3Bkb3duQ29tcG9uZW50LFxuICAgIENhRG90c01lbnVDb21wb25lbnQsXG4gICAgLy9waXBlc1xuICAgIEZvcm1hdEN1cnJlbmN5UGlwZSxcbiAgICBEYXRlRnJvbVN0cmluZ1BpcGUsXG4gICAgSW5jbHVkZWRDb3VudFBpcGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1wZXJpb2QtY29udGVudC1wYXltZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FQZXJpb2RDb250ZW50UGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBfaW5jbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW10gPSBbXTtcbiAgcHVibGljIF9leGNsdWRlZDogUGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2VbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGluY2x1ZGVkKGluY2x1ZGVkOiBQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGluY2x1ZGVkKSB7XG4gICAgICB0aGlzLl9pbmNsdWRlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5jbHVkZWQpKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZXhjbHVkZWQoZXhjbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW10gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoZXhjbHVkZWQpIHtcbiAgICAgIHRoaXMuX2V4Y2x1ZGVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGNsdWRlZCkpO1xuICAgIH1cbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3BNZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBkcm9wTWVudSE6IENhRG90c01lbnVDb21wb25lbnQ7XG5cbiAgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgZHJvcGRvd25PcHRpb25zOiBJSXRlbUxpc3RbXSA9XG4gICAgUGlja3VwRGVsaXZlcnlCbG9ja0NvbnN0YW50cy5jbG9zZWRPcHRpb25zUGF5cm9sbDtcblxuICBASW5wdXQoKSBzZXQgaXNPcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc09wZW4gPSBvcGVuO1xuICAgIHRoaXMuZHJvcGRvd25PcHRpb25zID0gb3BlblxuICAgICAgPyBQaWNrdXBEZWxpdmVyeUJsb2NrQ29uc3RhbnRzLmFjdGl2ZU9wdGlvbnNcbiAgICAgIDogUGlja3VwRGVsaXZlcnlCbG9ja0NvbnN0YW50cy5jbG9zZWRPcHRpb25zUGF5cm9sbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZVRvdGFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9wZW5BZGROZXdNb2RhbEVtaXRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb3BlbkVkaXRFbnRyeUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAkZXZlbnQ6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgZGF0YTogYW55O1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpIHJlb3JkZXJlZERhdGFFbWl0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBfaW5jbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW107XG4gICAgX3RpdGxlOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgLy8gRHJvcGRvd25cbiAgcHVibGljIGhvdmVyU3RhdGVzOiBib29sZWFuW10gPSBbXTtcbiAgcHJpdmF0ZSBkcm9wZG93blN0YXRlczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvL0ljb25zXG4gIHB1YmxpYyBwZXJpb2RDb250ZW50U3ZnUm91dGVzOiBQZXJpb2RDb250ZW50U3ZnUm91dGVzID1cbiAgICBQZXJpb2RDb250ZW50U3ZnUm91dGVzO1xuICBwdWJsaWMgb3JpZ2luYWxJY29uOiBzdHJpbmcgPSBQZXJpb2RDb250ZW50U3ZnUm91dGVzLm9wdGlvbnM7XG4gIHB1YmxpYyBhbHRlcm5hdGVJY29uOiBzdHJpbmcgPSBQZXJpb2RDb250ZW50U3ZnUm91dGVzLm9wdGlvbnNDbGlja2VkO1xuICBwdWJsaWMgY3VycmVudEljb246IHN0cmluZyA9IHRoaXMub3JpZ2luYWxJY29uO1xuICBwdWJsaWMgY3VycmVudEljb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgcHVibGljIGlzRHJvcGRvd25FbmFibGVkKGxvYWROdW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd25TdGF0ZXNbbG9hZE51bWJlcl07XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZUVudGVyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyU3RhdGVzW2luZGV4XSA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZUxlYXZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZHJvcE1lbnU/LmlzTW9kYWxPcGVuZWQpIHRoaXMuaG92ZXJTdGF0ZXNbaW5kZXhdID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sb3IodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRpdGxlQ29sb3JNYXBbdGl0bGUudG9Mb3dlckNhc2UoKV0gfHwgJyM0MjQyNDInO1xuICB9XG5cbiAgcHVibGljIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8UGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2VbXT4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhISxcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucmVvcmRlcmVkRGF0YUVtaXRlci5lbWl0KHtcbiAgICAgIF90aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIF9pbmNsdWRlZDogdGhpcy5faW5jbHVkZWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBQZXJpb2RDb250ZW50U3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIuZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQWRkTmV3TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQWRkTmV3TW9kYWxFbWl0ZXIuZW1pdCh0aGlzLnRpdGxlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNZW51T3Blbih0eXBlOiB7XG4gICAgJGV2ZW50OiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIGRhdGE6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5FZGl0RW50cnlJdGVtLmVtaXQodHlwZSk7XG4gICAgdGhpcy5ob3ZlclN0YXRlcyA9IFtdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIndyYXBwZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0aXRsZS1jb250YWluZXIgY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC12YWx1ZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicGF5bWVudC1jb3VudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0IGNhLWZvbnQtZXh0cmEtYm9sZFwiPnt7IHRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2luY2x1ZGVkPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kIGNhLWZvbnQtYm9sZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgX2luY2x1ZGVkPy5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGFkZF9uZXdfaXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlbjsgZWxzZSBub3RPcGVuXCI+XG4gICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQWRkTmV3TW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdwbHVzJylcIlxuICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE9wZW4+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvdGFsLW1vbmV5LWNsb3NlZCBjYS1mb250LXNlbWktYm9sZFwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogZ2V0Q29sb3IodGl0bGUpIH1cIlxuICAgICAgICAgICAgICAgID57eyBzdW0gfCBmb3JtYXRDdXJyZW5jeSB9fTwvc3BhblxuICAgICAgICAgICAgICA+IC0tPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5jbHVkZWRfZXhjbHVkZWRfaG9sZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICNpbmNsdWRlZExpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2V4Y2x1ZGVkTGlzdF1cIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiX2luY2x1ZGVkXCJcbiAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC1kYXRhLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiXG4gICAgICAgICAgW2NsYXNzLmVtcHR5X2xpc3RfZXhfaW5dPVwiIV9pbmNsdWRlZC5sZW5ndGhcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgX2luY2x1ZGVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ5XCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnUHJldmlld0NvbnRhaW5lcj1cInBhcmVudFwiXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhaXNPcGVuIHx8IGRpc2FibGVSZW9yZGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcmFnLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3IG1hdGNoU2l6ZT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJhZy1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bWVudExpc3RJdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEcmFnUHJldmlldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRMaXN0SXRlbTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlVG90YWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGF5bWVudExpc3RUb3RhbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2luY2x1ZGVkTGlzdF1cIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiX2V4Y2x1ZGVkXCJcbiAgICAgICAgICAjZXhjbHVkZWRMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgIGNsYXNzPVwiY29tcG9uZW50LWRhdGEtY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGV4Y2x1ZGVfbGlzdFwiXG4gICAgICAgICAgW2NsYXNzLmVtcHR5X2xpc3RfZXhfaW5dPVwiIV9leGNsdWRlZC5sZW5ndGhcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgX2V4Y2x1ZGVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLnJlb3JkZXJJdGVtOyBlbHNlIGVsc2VUb3RhbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInlcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q29udGFpbmVyPVwicGFyZW50XCJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFpc09wZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXcgbWF0Y2hTaXplPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcmFnLXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXltZW50TGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyBfaW5jbHVkZWQubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEcmFnUHJldmlldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRMaXN0SXRlbTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIF9pbmNsdWRlZC5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICAgICAgICAgIGlzRXhjbHVkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVG90YWw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXltZW50TGlzdFRvdGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2VtcHR5Q29tcG9uZW50RGF0YT5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyIGNvbnRhaW5lci1lbXB0eSBkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXZhbHVlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwYXltZW50LWNvdW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQgY2EtZm9udC1leHRyYS1ib2xkXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGlzT3BlbiA/ICcjNDI0MjQyJyA6ICcjYWFhYWFhJyB9XCJcbiAgICAgICAgICAgID57eyB0aXRsZSB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW47IGVsc2Ugbm90T3BlblwiPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGljb25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFkZE5ld01vZGFsKClcIlxuICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ3BsdXMnKVwiXG4gICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE9wZW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLW1vbmV5LWNsb3NlZCBjYS1mb250LXNlbWktYm9sZFwiPiQwLjAwPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gQ0EgUEVSSU9EIFRFTVBMQVRFUyAtLT5cblxuPG5nLXRlbXBsYXRlICNwYXltZW50TGlzdFRvdGFsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2luY2x1ZGVkIHwgaW5jbHVkZWRDb3VudDogaXNPcGVuIGFzIGluY2x1ZGVkX2NvdW50XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0b3RhbC1tb25leS10aXRsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10b3RhbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJkb2xhci1pY29uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdldENvbG9yKHRpdGxlKSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnZG9sYXJTaWduJylcIlxuICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXRpdGxlIGNhLWZvbnQtYm9sZFwiPlRvdGFsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRvdGFsLW1vbmV5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBjYS1mb250LXNlbWktYm9sZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdldENvbG9yKHRpdGxlKSB9XCJcbiAgICAgICAgPnt7IGluY2x1ZGVkX2NvdW50IH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNwYXltZW50TGlzdEl0ZW1cbiAgbGV0LWRhdGFcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1pc0RyYWdQcmV2aWV3PVwiaXNEcmFnUHJldmlld1wiXG4gIGxldC1pc0V4Y2x1ZGVkPVwiaXNFeGNsdWRlZFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgaW5mb3JtYXRpb25cIlxuICAgIFtjbGFzcy5leGNsdWRlZF09XCJpc0V4Y2x1ZGVkXCJcbiAgICBbY2xhc3MuaG92ZXJlZF09XCJob3ZlclN0YXRlc1tpXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyLWRhdGUtbG9jYXRpb24taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRHJhZ1ByZXZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctcHJldmlldy1pY29uXCI+XG4gICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0LCBjb2xvcjogJyNEQURBREEnIH1cIlxuICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdwcmV2aWV3QXJyb3dzJylcIlxuICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0RyYWdQcmV2aWV3XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKGkpXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoaSlcIlxuICAgICAgICAgIGNsYXNzPVwibnVtYmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBjYS1mb250LW1lZGl1bVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhvdmVyU3RhdGVzW2ldOyBlbHNlIGhvdmVyZWRTdGF0ZVwiXG4gICAgICAgICAgICA+e3sgaSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaG92ZXJlZFN0YXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImljb24taG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ01vcmUnXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNDI0MjQyXCJcbiAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkcm9wTWVudS5pc01vZGFsT3BlbmVkXG4gICAgICAgICAgICAgICAgICA/ICcjNDI0MjQyJ1xuICAgICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBob3ZlclN0YXRlc1tpXSA/ICdkZXNpcmVkQ29sb3InIDogJ2luaXRpYWxDb2xvcicsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2EtZG90cy1tZW51XG4gICAgICAgICAgICAgICAgI2Ryb3BNZW51XG4gICAgICAgICAgICAgICAgW2l0ZW1MaXN0XT1cImRyb3Bkb3duT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3JpZ2luYWxJY29uXCJcbiAgICAgICAgICAgICAgICBbb3Blbk1vZGFsSWNvbl09XCJhbHRlcm5hdGVJY29uXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVNZW51T3Blbih7ICRldmVudCwgZGF0YSwgdGl0bGUgfSlcIlxuICAgICAgICAgICAgICA+PC9jYS1kb3RzLW1lbnU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRhdGUtbG9jYXRpb24gZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2EtZm9udC1zZW1pLWJvbGQgbG9jYXRpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7XG4gICAgICAgICAgZGF0YS5kZXNjcmlwdGlvblxuICAgICAgICB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUgY2EtZm9udC1tZWRpdW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7XG4gICAgICAgICAgZGF0YS5kYXRlIHwgZGF0ZUZyb21TdHJpbmdQaXBlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nOiB0aXRsZSA9PT0gJ0RlZHVjdGlvbicgfHwgdGl0bGUgPT09ICdGdWVsJyxcbiAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiB0aXRsZSAhPT0gJ0RlZHVjdGlvbicgJiYgdGl0bGUgIT09ICdGdWVsJyxcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJpY29uLW1vbmV5LWhvbGRlciBkLWZsZXhcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0RlZHVjdGlvbidcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInJlY3VycmluZyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEucmVjdXJyaW5nICYmICFkYXRhLmFsbFJlY3VycmFuY2VcIj5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2luZmluaXR5SWNvbicpXCJcbiAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEucmVjdXJyaW5nICYmIGRhdGEuYWxsUmVjdXJyYW5jZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3VycmluZy1jb3VudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIHt7IGRhdGEuY3VycmVudFJlY3VycmFuY2UgfX0ve3sgZGF0YS5hbGxSZWN1cnJhbmNlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGl0bGUgPT09ICdGdWVsJ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwicmVjdXJyaW5nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkYXRhLmdhbG9ucyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibW9uZXkgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtcmVndWxhclwiXG4gICAgICA+XG4gICAgICAgIHt7IChkYXRhLnN1YnRvdGFsIHwgY3VycmVuY3k6ICdVU0QnKSA/PyAnJDAuMDAnIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC9jb21wb25lbnRzL2NhLXBlcmlvZC1jb250ZW50LXBheW1lbnQvY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC9jb21wb25lbnRzL2NhLXBlcmlvZC1jb250ZW50LXBheW1lbnQvY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxTQUFTO0FBQ1QsT0FBTyxFQUVMLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsV0FBVztBQUNYLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxZQUFZO0FBQ1osT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENB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Q3hCLENBQUM7K0dBOUhVLCtCQUErQjttR0FBL0IsK0JBQStCLGlYQXJCL0IsQ0FBQyxrQkFBa0IsQ0FBQyxnSUNoRGpDLDY4V0FpVUE7Z0JEL1FJLFNBQVM7Z0JBQ1QsWUFBWSxvcEJBQ1osb0JBQW9CLGdPQUNwQixnQkFBZ0Isc1dBQ2hCLGNBQWM7Z0JBRWQsWUFBWTtnQkFDWix1QkFBdUIsbU5BRXZCLG1CQUFtQixzSUFHbkIsa0JBQWtCLHNEQUNsQixpQkFBaUI7OzRGQU1SLCtCQUErQjtrQkF4QjNDLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksYUFDTCxDQUFDLGtCQUFrQixDQUFDLFdBQ3RCO3dCQUNQLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFFZCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1Asa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjtxQkFDbEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07d0dBTXRDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU8zQixNQUFNO3NCQUFsQixLQUFLO2dCQVdHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBTUcsbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gU3ZnIHJvdXRlc1xuaW1wb3J0IHsgUGVyaW9kQ29udGVudFN2Z1JvdXRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG4vL01vZHVsZXNcbmltcG9ydCB7XG4gIENka0RyYWdEcm9wLFxuICBEcmFnRHJvcE1vZHVsZSxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICB0cmFuc2ZlckFycmF5SXRlbSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy9Db25zdGFudHNcbmltcG9ydCB7IHRpdGxlQ29sb3JNYXAgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuLy9Db21wb25lbnRzXG5pbXBvcnQgeyBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWFwcC10b29sdGlwLXYyL2NhLWFwcC10b29sdGlwLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2EtZHJvcGRvd24vY2EtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IENhRG90c01lbnVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1kb3RzLW1lbnUvY2EtZG90cy1tZW51LmNvbXBvbmVudCc7XG5cbi8vaGVscGVyXG5pbXBvcnQgeyBQYXlyb2xsUGVyaW9kQ29udGVudEhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7IElJdGVtTGlzdCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9kcm9wZG93bi5tb2RlbCc7XG5pbXBvcnQgeyBQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9wYXlyb2xsLXJlcG9ydC10YWJsZXMudHlwZSc7XG5pbXBvcnQgeyBQaWNrdXBEZWxpdmVyeUJsb2NrQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY2EtcGlja3VwLWRlbGl2ZXJ5LWJsb2NrL3V0aWxzL2NvbnN0YW50cyc7XG5cbi8vIFBpcGVzXG5pbXBvcnQgeyBJbmNsdWRlZENvdW50UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2luY2x1ZGVkX2NvdW50LnBpcGUnO1xuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgRGF0ZUZyb21TdHJpbmdQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvZGF0ZS1mcm9tLXN0cmluZy5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLXBlcmlvZC1jb250ZW50LXBheW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtGb3JtYXRDdXJyZW5jeVBpcGVdLFxuICBpbXBvcnRzOiBbXG4gICAgLy9Nb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG5cbiAgICAvL0NvbXBvbmVudHNcbiAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBDYURyb3Bkb3duQ29tcG9uZW50LFxuICAgIENhRG90c01lbnVDb21wb25lbnQsXG4gICAgLy9waXBlc1xuICAgIEZvcm1hdEN1cnJlbmN5UGlwZSxcbiAgICBEYXRlRnJvbVN0cmluZ1BpcGUsXG4gICAgSW5jbHVkZWRDb3VudFBpcGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1wZXJpb2QtY29udGVudC1wYXltZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtcGVyaW9kLWNvbnRlbnQtcGF5bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FQZXJpb2RDb250ZW50UGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBfaW5jbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW10gPSBbXTtcbiAgcHVibGljIF9leGNsdWRlZDogUGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2VbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGluY2x1ZGVkKGluY2x1ZGVkOiBQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGluY2x1ZGVkKSB7XG4gICAgICB0aGlzLl9pbmNsdWRlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5jbHVkZWQpKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZXhjbHVkZWQoZXhjbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW10gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoZXhjbHVkZWQpIHtcbiAgICAgIHRoaXMuX2V4Y2x1ZGVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGNsdWRlZCkpO1xuICAgIH1cbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3BNZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBkcm9wTWVudSE6IENhRG90c01lbnVDb21wb25lbnQ7XG5cbiAgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgZHJvcGRvd25PcHRpb25zOiBJSXRlbUxpc3RbXSA9XG4gICAgUGlja3VwRGVsaXZlcnlCbG9ja0NvbnN0YW50cy5jbG9zZWRPcHRpb25zUGF5cm9sbDtcblxuICBASW5wdXQoKSBzZXQgaXNPcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc09wZW4gPSBvcGVuO1xuICAgIHRoaXMuZHJvcGRvd25PcHRpb25zID0gb3BlblxuICAgICAgPyBQaWNrdXBEZWxpdmVyeUJsb2NrQ29uc3RhbnRzLmFjdGl2ZU9wdGlvbnNcbiAgICAgIDogUGlja3VwRGVsaXZlcnlCbG9ja0NvbnN0YW50cy5jbG9zZWRPcHRpb25zUGF5cm9sbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZVRvdGFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9wZW5BZGROZXdNb2RhbEVtaXRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb3BlbkVkaXRFbnRyeUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAkZXZlbnQ6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgZGF0YTogYW55O1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpIHJlb3JkZXJlZERhdGFFbWl0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBfaW5jbHVkZWQ6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlW107XG4gICAgX3RpdGxlOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgLy8gRHJvcGRvd25cbiAgcHVibGljIGhvdmVyU3RhdGVzOiBib29sZWFuW10gPSBbXTtcbiAgcHJpdmF0ZSBkcm9wZG93blN0YXRlczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvL0ljb25zXG4gIHB1YmxpYyBwZXJpb2RDb250ZW50U3ZnUm91dGVzOiBQZXJpb2RDb250ZW50U3ZnUm91dGVzID1cbiAgICBQZXJpb2RDb250ZW50U3ZnUm91dGVzO1xuICBwdWJsaWMgb3JpZ2luYWxJY29uOiBzdHJpbmcgPSBQZXJpb2RDb250ZW50U3ZnUm91dGVzLm9wdGlvbnM7XG4gIHB1YmxpYyBhbHRlcm5hdGVJY29uOiBzdHJpbmcgPSBQZXJpb2RDb250ZW50U3ZnUm91dGVzLm9wdGlvbnNDbGlja2VkO1xuICBwdWJsaWMgY3VycmVudEljb246IHN0cmluZyA9IHRoaXMub3JpZ2luYWxJY29uO1xuICBwdWJsaWMgY3VycmVudEljb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgcHVibGljIGlzRHJvcGRvd25FbmFibGVkKGxvYWROdW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd25TdGF0ZXNbbG9hZE51bWJlcl07XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZUVudGVyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyU3RhdGVzW2luZGV4XSA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZUxlYXZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZHJvcE1lbnU/LmlzTW9kYWxPcGVuZWQpIHRoaXMuaG92ZXJTdGF0ZXNbaW5kZXhdID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sb3IodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRpdGxlQ29sb3JNYXBbdGl0bGUudG9Mb3dlckNhc2UoKV0gfHwgJyM0MjQyNDInO1xuICB9XG5cbiAgcHVibGljIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8UGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2VbXT4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhISxcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucmVvcmRlcmVkRGF0YUVtaXRlci5lbWl0KHtcbiAgICAgIF90aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIF9pbmNsdWRlZDogdGhpcy5faW5jbHVkZWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBQZXJpb2RDb250ZW50U3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIuZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQWRkTmV3TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQWRkTmV3TW9kYWxFbWl0ZXIuZW1pdCh0aGlzLnRpdGxlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNZW51T3Blbih0eXBlOiB7XG4gICAgJGV2ZW50OiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIGRhdGE6IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5FZGl0RW50cnlJdGVtLmVtaXQodHlwZSk7XG4gICAgdGhpcy5ob3ZlclN0YXRlcyA9IFtdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIndyYXBwZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0aXRsZS1jb250YWluZXIgY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC12YWx1ZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicGF5bWVudC1jb3VudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0IGNhLWZvbnQtZXh0cmEtYm9sZFwiPnt7IHRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2luY2x1ZGVkPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kIGNhLWZvbnQtYm9sZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgX2luY2x1ZGVkPy5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGFkZF9uZXdfaXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlbjsgZWxzZSBub3RPcGVuXCI+XG4gICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQWRkTmV3TW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdwbHVzJylcIlxuICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE9wZW4+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvdGFsLW1vbmV5LWNsb3NlZCBjYS1mb250LXNlbWktYm9sZFwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogZ2V0Q29sb3IodGl0bGUpIH1cIlxuICAgICAgICAgICAgICAgID57eyBzdW0gfCBmb3JtYXRDdXJyZW5jeSB9fTwvc3BhblxuICAgICAgICAgICAgICA+IC0tPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5jbHVkZWRfZXhjbHVkZWRfaG9sZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICNpbmNsdWRlZExpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2V4Y2x1ZGVkTGlzdF1cIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiX2luY2x1ZGVkXCJcbiAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC1kYXRhLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiXG4gICAgICAgICAgW2NsYXNzLmVtcHR5X2xpc3RfZXhfaW5dPVwiIV9pbmNsdWRlZC5sZW5ndGhcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgX2luY2x1ZGVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ5XCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnUHJldmlld0NvbnRhaW5lcj1cInBhcmVudFwiXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhaXNPcGVuIHx8IGRpc2FibGVSZW9yZGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcmFnLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3IG1hdGNoU2l6ZT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJhZy1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bWVudExpc3RJdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEcmFnUHJldmlldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRMaXN0SXRlbTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlVG90YWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGF5bWVudExpc3RUb3RhbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2luY2x1ZGVkTGlzdF1cIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiX2V4Y2x1ZGVkXCJcbiAgICAgICAgICAjZXhjbHVkZWRMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgIGNsYXNzPVwiY29tcG9uZW50LWRhdGEtY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGV4Y2x1ZGVfbGlzdFwiXG4gICAgICAgICAgW2NsYXNzLmVtcHR5X2xpc3RfZXhfaW5dPVwiIV9leGNsdWRlZC5sZW5ndGhcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgX2V4Y2x1ZGVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLnJlb3JkZXJJdGVtOyBlbHNlIGVsc2VUb3RhbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInlcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q29udGFpbmVyPVwicGFyZW50XCJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFpc09wZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXcgbWF0Y2hTaXplPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcmFnLXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXltZW50TGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyBfaW5jbHVkZWQubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEcmFnUHJldmlldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRMaXN0SXRlbTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIF9pbmNsdWRlZC5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICAgICAgICAgIGlzRXhjbHVkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVG90YWw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXltZW50TGlzdFRvdGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2VtcHR5Q29tcG9uZW50RGF0YT5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyIGNvbnRhaW5lci1lbXB0eSBkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXZhbHVlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwYXltZW50LWNvdW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQgY2EtZm9udC1leHRyYS1ib2xkXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGlzT3BlbiA/ICcjNDI0MjQyJyA6ICcjYWFhYWFhJyB9XCJcbiAgICAgICAgICAgID57eyB0aXRsZSB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW47IGVsc2Ugbm90T3BlblwiPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGljb25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFkZE5ld01vZGFsKClcIlxuICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ3BsdXMnKVwiXG4gICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE9wZW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLW1vbmV5LWNsb3NlZCBjYS1mb250LXNlbWktYm9sZFwiPiQwLjAwPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gQ0EgUEVSSU9EIFRFTVBMQVRFUyAtLT5cblxuPG5nLXRlbXBsYXRlICNwYXltZW50TGlzdFRvdGFsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2luY2x1ZGVkIHwgaW5jbHVkZWRDb3VudDogaXNPcGVuIGFzIGluY2x1ZGVkX2NvdW50XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0b3RhbC1tb25leS10aXRsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10b3RhbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJkb2xhci1pY29uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdldENvbG9yKHRpdGxlKSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnZG9sYXJTaWduJylcIlxuICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXRpdGxlIGNhLWZvbnQtYm9sZFwiPlRvdGFsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRvdGFsLW1vbmV5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBjYS1mb250LXNlbWktYm9sZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdldENvbG9yKHRpdGxlKSB9XCJcbiAgICAgICAgPnt7IGluY2x1ZGVkX2NvdW50IH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNwYXltZW50TGlzdEl0ZW1cbiAgbGV0LWRhdGFcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1pc0RyYWdQcmV2aWV3PVwiaXNEcmFnUHJldmlld1wiXG4gIGxldC1pc0V4Y2x1ZGVkPVwiaXNFeGNsdWRlZFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgaW5mb3JtYXRpb25cIlxuICAgIFtjbGFzcy5leGNsdWRlZF09XCJpc0V4Y2x1ZGVkXCJcbiAgICBbY2xhc3MuaG92ZXJlZF09XCJob3ZlclN0YXRlc1tpXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyLWRhdGUtbG9jYXRpb24taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRHJhZ1ByZXZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctcHJldmlldy1pY29uXCI+XG4gICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0LCBjb2xvcjogJyNEQURBREEnIH1cIlxuICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdwcmV2aWV3QXJyb3dzJylcIlxuICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0RyYWdQcmV2aWV3XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKGkpXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoaSlcIlxuICAgICAgICAgIGNsYXNzPVwibnVtYmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBjYS1mb250LW1lZGl1bVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhvdmVyU3RhdGVzW2ldOyBlbHNlIGhvdmVyZWRTdGF0ZVwiXG4gICAgICAgICAgICA+e3sgaSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaG92ZXJlZFN0YXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImljb24taG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ01vcmUnXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNDI0MjQyXCJcbiAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkcm9wTWVudS5pc01vZGFsT3BlbmVkXG4gICAgICAgICAgICAgICAgICA/ICcjNDI0MjQyJ1xuICAgICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBob3ZlclN0YXRlc1tpXSA/ICdkZXNpcmVkQ29sb3InIDogJ2luaXRpYWxDb2xvcicsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2EtZG90cy1tZW51XG4gICAgICAgICAgICAgICAgI2Ryb3BNZW51XG4gICAgICAgICAgICAgICAgW2l0ZW1MaXN0XT1cImRyb3Bkb3duT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3JpZ2luYWxJY29uXCJcbiAgICAgICAgICAgICAgICBbb3Blbk1vZGFsSWNvbl09XCJhbHRlcm5hdGVJY29uXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVNZW51T3Blbih7ICRldmVudCwgZGF0YSwgdGl0bGUgfSlcIlxuICAgICAgICAgICAgICA+PC9jYS1kb3RzLW1lbnU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRhdGUtbG9jYXRpb24gZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2EtZm9udC1zZW1pLWJvbGQgbG9jYXRpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7XG4gICAgICAgICAgZGF0YS5kZXNjcmlwdGlvblxuICAgICAgICB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUgY2EtZm9udC1tZWRpdW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7XG4gICAgICAgICAgZGF0YS5kYXRlIHwgZGF0ZUZyb21TdHJpbmdQaXBlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nOiB0aXRsZSA9PT0gJ0RlZHVjdGlvbicgfHwgdGl0bGUgPT09ICdGdWVsJyxcbiAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiB0aXRsZSAhPT0gJ0RlZHVjdGlvbicgJiYgdGl0bGUgIT09ICdGdWVsJyxcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJpY29uLW1vbmV5LWhvbGRlciBkLWZsZXhcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0RlZHVjdGlvbidcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInJlY3VycmluZyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEucmVjdXJyaW5nICYmICFkYXRhLmFsbFJlY3VycmFuY2VcIj5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2luZmluaXR5SWNvbicpXCJcbiAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEucmVjdXJyaW5nICYmIGRhdGEuYWxsUmVjdXJyYW5jZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3VycmluZy1jb3VudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIHt7IGRhdGEuY3VycmVudFJlY3VycmFuY2UgfX0ve3sgZGF0YS5hbGxSZWN1cnJhbmNlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGl0bGUgPT09ICdGdWVsJ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwicmVjdXJyaW5nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkYXRhLmdhbG9ucyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibW9uZXkgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtcmVndWxhclwiXG4gICAgICA+XG4gICAgICAgIHt7IChkYXRhLnN1YnRvdGFsIHwgY3VycmVuY3k6ICdVU0QnKSA/PyAnJDAuMDAnIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==