nuxeo-development-framework 6.2.6 → 6.2.7

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 (29) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +137 -13
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +1 -1
  4. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +1 -1
  5. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +1 -1
  6. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +1 -1
  7. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +1 -1
  8. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +1 -1
  9. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +1 -1
  10. package/esm2015/lib/components/ndf-errors/404/404.component.js +75 -0
  11. package/esm2015/lib/components/ndf-errors/errors.module.js +31 -0
  12. package/esm2015/lib/components/ndf-errors/index.js +3 -0
  13. package/esm2015/lib/components/ndf-scanner/ndf-scanner.component.js +1 -1
  14. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +1 -1
  15. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
  16. package/esm2015/lib/components/reports/ndf-reports/directives/empty-content-template.directive.js +1 -1
  17. package/esm2015/lib/components/reports/ndf-reports/directives/header-panel-template.directive.js +1 -1
  18. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +1 -1
  19. package/esm2015/lib/components/tables/shared/index.js +1 -1
  20. package/esm2015/lib/components/tables/table/table/table.component.js +1 -1
  21. package/esm2015/lib/shared/components/button/button.component.js +1 -1
  22. package/esm2015/public-api.js +2 -1
  23. package/fesm2015/nuxeo-development-framework.js +109 -14
  24. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  25. package/lib/components/ndf-errors/404/404.component.d.ts +20 -0
  26. package/lib/components/ndf-errors/errors.module.d.ts +9 -0
  27. package/lib/components/ndf-errors/index.d.ts +2 -0
  28. package/package.json +1 -1
  29. package/public-api.d.ts +1 -0
@@ -941,7 +941,7 @@ export class NdfScannerComponent {
941
941
  }
942
942
  }
943
943
  NdfScannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfScannerComponent, deps: [{ token: i1.TranslateService }, { token: i2.DocumentsService }, { token: i3.NdfUploaderService }, { token: i4.DatePipe }, { token: APP_BASE_HREF }], target: i0.ɵɵFactoryTarget.Component });
944
- NdfScannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfScannerComponent, selector: "ndf-scanner", inputs: { useStoredFile: "useStoredFile", hideUploadButton: "hideUploadButton", loading: "loading" }, outputs: { file: "file" }, host: { classAttribute: "ndf-scanner" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"DWTcontainer\" class=\"h-full\">\r\n\t<div id=\"DWTcontainerTop\">\r\n\t\t<div id=\"divEdit\">\r\n\t\t\t<ul class=\"operateGrp\">\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.showImageEditor' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnShowImageEditor_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Editor'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotateLeft' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotateLeft_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-Left'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotateRight' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotateRight_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-Right'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotate180' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotate180_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-180'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.mirror' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnMirror_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:flip-horizontal'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.flip' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnFlip_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:flip-vertical'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.removeSelected' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRemoveCurrentImage_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:RemoveImages'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.removeAll' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRemoveAllImages_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:RemoveAllImages'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.resize' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnChangeImageSize_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:changeSize'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.crop' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnCrop_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:crop'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t\t<div id=\"ImgSizeEditor\" style=\"visibility: hidden\">\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"img_height\"\r\n\t\t\t\t\t\t\t>{{ 'scanner.newHeight' | translate }} :\r\n\t\t\t\t\t\t\t<input type=\"text\" id=\"img_height\" style=\"width: 50%\" size=\"10\" />\r\n\t\t\t\t\t\t\t{{ 'scanner.pixel' | translate }}</label\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"img_width\"\r\n\t\t\t\t\t\t\t>{{ 'scanner.newWidth' | translate }} :&nbsp;\r\n\t\t\t\t\t\t\t<input type=\"text\" id=\"img_width\" style=\"width: 50%\" size=\"10\" />\r\n\t\t\t\t\t\t\t{{ 'scanner.pixel' | translate }}</label\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t{{ 'scanner.InterpolationMethod' | translate }}:\r\n\t\t\t\t\t\t<select size=\"1\" id=\"InterpolationMethod\">\r\n\t\t\t\t\t\t\t<option value=\"\"></option>\r\n\t\t\t\t\t\t</select>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li style=\"text-align: center\">\r\n\t\t\t\t\t\t<input type=\"button\" value=\" OK \" id=\"btnChangeImageSizeOK\" (click)=\"btnChangeImageSizeOK_onclick()\" />\r\n\t\t\t\t\t\t<input type=\"button\" value=\" Cancel \" id=\"btnCancelChange\" (click)=\"btnCancelChange_onclick()\" />\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"dwtcontrolContainer\"></div>\r\n\t\t<div class=\"w-full\" id=\"loader\">\r\n\t\t\t<div class=\"flex items-center justify-center h-full\">\r\n\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"btnGroupBtm\">\r\n\t\t\t<div class=\"ct-lt\">\r\n\t\t\t\t{{ 'scanner.page' | translate }}:\r\n\t\t\t\t<input id=\"DW_btnFirstImage\" (click)=\"btnFirstImage_onclick()\" type=\"button\" value=\" |< \" />&nbsp;\r\n\t\t\t\t<input id=\"DW_btnPreImage\" (click)=\"btnPreImage_onclick()\" type=\"button\" value=\" < \" />&nbsp;&nbsp;\r\n\t\t\t\t<input type=\"text\" size=\"2\" id=\"DW_CurrentImage\" readonly=\"readonly\" />\r\n\t\t\t\t/\r\n\t\t\t\t<input type=\"text\" size=\"2\" id=\"DW_TotalImage\" readonly=\"readonly\" />&nbsp;&nbsp;\r\n\t\t\t\t<input id=\"DW_btnNextImage\" (click)=\"btnNextImage_onclick()\" type=\"button\" value=\"> \" />&nbsp;\r\n\t\t\t\t<input id=\"DW_btnLastImage\" (click)=\"btnLastImage_onclick()\" type=\"button\" value=\">| \" />\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ct-rt\">\r\n\t\t\t\t{{ 'scanner.preview' | translate }}:\r\n\t\t\t\t<select size=\"1\" id=\"DW_PreviewMode\" (change)=\"setlPreviewMode()\">\r\n\t\t\t\t\t<option value=\"0\">1X1</option>\r\n\t\t\t\t\t<option value=\"1\">2X2</option>\r\n\t\t\t\t\t<option value=\"2\">3X3</option>\r\n\t\t\t\t\t<option value=\"3\">4X4</option>\r\n\t\t\t\t\t<option value=\"4\">5X5</option></select\r\n\t\t\t\t><br />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"ScanWrapper\">\r\n\t\t<div id=\"divScanner\" class=\"divinput\">\r\n\t\t\t<div id=\"div_ScanImage\" class=\"divTableStyle\">\r\n\t\t\t\t<ul id=\"ulScaneImageHIDE\">\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"source\">\r\n\t\t\t\t\t\t\t<p>{{ 'scanner.source' | translate }}:</p>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<select size=\"1\" id=\"source\" style=\"position: relative\" (change)=\"source_onchange()\">\r\n\t\t\t\t\t\t\t<option value=\"\"></option>\r\n\t\t\t\t\t\t</select>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li style=\"display: none\" id=\"pNoScanner\">\r\n\t\t\t\t\t\t<a href=\"javascript: void(0)\" class=\"ShowtblLoadImage\" style=\"color: #fe8e14\" id=\"aNoScanner\"\r\n\t\t\t\t\t\t\t>(No TWAIN compatible drivers detected)</a\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li id=\"divProductDetail\">\r\n\t\t\t\t\t\t<ul id=\"divTwainType\">\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t<label id=\"lblShowUI\" for=\"ShowUI\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"checkbox\" id=\"ShowUI\" />{{ 'scanner.ShowUI' | translate }}&nbsp;</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"ADF\"> <input type=\"checkbox\" id=\"ADF\" />{{ 'scanner.AutoFeeder' | translate }}&nbsp;</label>\r\n\t\t\t\t\t\t\t\t<label for=\"Duplex\"> <input type=\"checkbox\" id=\"Duplex\" />{{ 'scanner.Duplex' | translate }}</label>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t{{ 'scanner.PixelType' | translate }}:\r\n\t\t\t\t\t\t\t\t<label for=\"BW\" style=\"margin-left: 5px\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"BW\" name=\"PixelType\" />{{ 'scanner.B&W' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"Gray\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"Gray\" name=\"PixelType\" />{{ 'scanner.Gray' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"RGB\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"RGB\" name=\"PixelType\" />{{ 'scanner.Color' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t<span>{{ 'scanner.Resolution' | translate }}:&nbsp;</span\r\n\t\t\t\t\t\t\t\t><select size=\"1\" id=\"Resolution\">\r\n\t\t\t\t\t\t\t\t\t<option value=\"100\">100</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"150\">150</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"200\">200</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"300\" selected>300</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</li>\r\n\r\n\t\t\t\t\t<div class=\"flex justify-between items-center\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tid=\"btnScan\"\r\n\t\t\t\t\t\t\tdisabled=\"disabled\"\r\n\t\t\t\t\t\t\t(click)=\"acquireImage()\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclass=\"action-btn action-btn_2\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<i class=\"bi bi-upc-upload icon\"></i>\r\n\t\t\t\t\t\t\t<span> {{ 'scanner.scanFile' | translate }}</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t(click)=\"btnLoadImagesOrPDFs_onclick()\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclass=\"action-btn action-btn_1 flex items-center justify-center gap-x-2\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<i class=\"bi bi-upload icon\"></i>\r\n\t\t\t\t\t\t\t<span> {{ 'scanner.loadFile' | translate }}</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"flex justify-end mx-3\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"btn save-button\"\r\n\t\t\t\t[ngClass]=\"{ 'hide-upload-button': hideUploadButton }\"\r\n\t\t\t\t#scannerUploadButton\r\n\t\t\t\tid=\"scannerUploadButton\"\r\n\t\t\t\t[disabled]=\"DWObject?.HowManyImagesInBuffer === 0\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(click)=\"convertToBlob()\"\r\n\t\t\t>\r\n\t\t\t\t{{ 'scanner.saveFile' | translate }}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".ndf-scanner img{vertical-align:middle;border:0}.ndf-scanner p{margin:0;padding:0}.ndf-scanner a:link,.ndf-scanner a:visited{color:#606060;text-decoration:none}.ndf-scanner a:hover{color:#fe8e14}.ndf-scanner input{font:normal 12px verdana;color:#444}.ndf-scanner input.invalid{background-color:#ff9;border:2px red inset}.ndf-scanner a img{border:none}.ndf-scanner a img:hover{border:none}.ndf-scanner ul{list-style:none;padding-left:0;margin:0}.ndf-scanner .container{width:980px;margin:0 auto}.ndf-scanner .container:after,.ndf-scanner .clearfix:after{content:\"\";display:table;clear:both}.ndf-scanner .tc{text-align:center}.ndf-scanner .btnOrg{padding:0 15px;height:30px;line-height:28px;font-size:14px;color:#fff;background:#50a8e1;border:none;outline:none;cursor:pointer;border-radius:5px;-webkit-border-radius:5px;-moz-border-right-colors:5px;transition:all .2s ease-in-out}.ndf-scanner .btnOrg:hover{background:#61c2ec}.ndf-scanner .d-btn{display:inline-block;padding:0 25px;height:36px;line-height:30px;color:#fe8e14;font-size:14px;text-align:center;cursor:pointer;border:solid 2px #fe8e14;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;transition:all .2s ease-in-out}.ndf-scanner .d-btn:link,.ndf-scanner .d-btn:visited{color:#fe8e14}.ndf-scanner .d-btn:hover{color:#ffae38;border:solid 2px #ffae38}.ndf-scanner .d-btn.lgBtn{height:46px;line-height:40px}.ndf-scanner .d-btn.mdBtn{height:42px;line-height:36px}.ndf-scanner .d-btn.smBtn{height:38px;line-height:32px}.ndf-scanner .d-btn.bgOrange{background:#fe8e14;color:#fff}.ndf-scanner .d-btn.bgOrange:hover{background:#ffae38}.ndf-scanner .d-btn.bgBlue{border-color:#50a8e1;background:#50a8e1;color:#fff}.ndf-scanner .d-btn.bgBlue:hover{border-color:#61c2ec;background:#61c2ec}.ndf-scanner #dwtScanDemo{width:980px;margin:0 auto}.ndf-scanner #dwtScanDemo .ct-top{padding:0 0 15px}.ndf-scanner #dwtScanDemo .ct-top .title{font-size:18px;line-height:27px;color:#444}.ndf-scanner #dwtScanDemo .ct-top .desc{margin:0 15px 0 30px;font-size:14px;line-height:24px;color:#aaa}.ndf-scanner #DWTcontainer{display:flex;justify-content:space-between;flex-direction:row}.ndf-scanner #DWTcontainerTop{position:relative;float:left;flex:1;margin:0 10px;height:auto;border-radius:4px;border:3px solid #ccc;display:flex;justify-content:space-between;flex-direction:row;overflow:hidden}.ndf-scanner .ds-dwt-container-box>div{border:none!important}.ndf-scanner #divEdit{float:left;margin:0;padding:0;width:60px;background:#fff;border-right:1px solid #ccc}.ndf-scanner #divEdit .operateGrp li{margin:0;width:60px;height:57px;line-height:52px;border-bottom:solid 1px #ccc;text-align:center}.ndf-scanner #divEdit .operateGrp li:nth-last-child(2){height:58px}.ndf-scanner #divEdit .operateGrp li:last-child{height:56px}.ndf-scanner #divEdit .operateGrp li>img{cursor:pointer}.ndf-scanner #Crop{padding:10px 5px 5px;text-align:center;border-collapse:collapse;border:3px solid #ce5e04;position:absolute;height:80px;z-index:1;background-color:#f0f0f0;width:250px}.ndf-scanner #ImgSizeEditor{padding:10px 15px;position:absolute;z-index:1;top:513px;left:-1px;height:auto;width:320px;font-size:14px;color:#606060;text-align:left;background-color:#f5f5f5;border-collapse:collapse;border:1px solid #ccc;box-shadow:4px 4px 18px #ccc;-webkit-box-shadow:4px 4px 18px #ccc;-moz-box-shadow:4px 4px 18px #ccc}.ndf-scanner #ImgSizeEditor li{margin-bottom:5px}.ndf-scanner #ImgSizeEditor input{background:#fff;border:solid 1px #ccc}.ndf-scanner #ImgSizeEditor input[type=text]{padding-left:3px}.ndf-scanner #ImgSizeEditor input[type=button]{padding:5px;margin:6px 5px 0}.ndf-scanner #dwtcontrolContainer{float:left;width:100%;height:calc(100% - 58px)}.ndf-scanner #dwtcontrolContainer .dynamsoft-dwt-container-box>div{border:none!important}.ndf-scanner #dwt-NonInstallContainerID{float:left;width:560px;height:590px}.ndf-scanner #DWTcontainerTop #btnGroupBtm{position:absolute;bottom:0;padding:15px;width:calc(100% - 60px);height:58px;background:#f5f5f5;border-top:1px solid #ccc;font-size:14px;color:#606060;vertical-align:bottom;display:flex;justify-content:space-between;flex-direction:row;align-items:center;box-sizing:border-box;left:60px}.ndf-scanner #btnGroupBtm .ct-lt{float:left}.ndf-scanner #btnGroupBtm .ct-lt input{padding:0;margin-right:6px;width:25px;height:20px;font-size:10px;background:var(--input-field-bg, #f5f5f5);border:solid 1px var(--border-color, #bbbcc0);color:var(--input-field-color, #606060);outline:none;cursor:pointer}.ndf-scanner #btnGroupBtm .ct-lt input[type=text]{height:20px;font-size:12px;border:none;cursor:default}.ndf-scanner #btnGroupBtm .ct-lt #DW_btnFirstImage{margin-left:5px}.ndf-scanner #btnGroupBtm .ct-lt #DW_CurrentImage{margin:0 0 0 -13px;text-align:right}.ndf-scanner #btnGroupBtm .ct-lt #DW_TotalImage{margin:0 -7px 0 0;text-align:left}.ndf-scanner #btnGroupBtm .ct-rt{float:right}.ndf-scanner #DW_PreviewMode{padding:0 5px;margin-left:5px;height:26px;border:solid 1px #d8d8d8;color:#444;outline:none;border-radius:5px;cursor:pointer}.ndf-scanner #ScanWrapper{border-radius:4px;width:315px;height:570px;box-sizing:border-box}.ndf-scanner div.divinput{font-size:14px;color:#606060;line-height:24px;margin-bottom:20px}.ndf-scanner .divType,.ndf-scanner #ScanWrapper .toggle{padding-left:20px;height:38px;line-height:36px;font-size:14px;color:#444;background:#eee;border-bottom:1px solid #ccc;cursor:pointer}.ndf-scanner #ScanWrapper .toggle{cursor:default}.ndf-scanner .mark_arrow{display:block;float:right;margin:15px 20px 0 0;width:12px;height:8px}.ndf-scanner .divTableStyle{border:3px solid #ccc;border-radius:5px;padding:10px}.ndf-scanner .divTableStyle input[type=radio],.ndf-scanner .divTableStyle input[type=checkbox]{margin:0 5px!important;height:13px;display:inline-block}.ndf-scanner #ScanWrapper select,.ndf-scanner #divUpload input[type=text]{margin-top:3px;margin-bottom:6px;height:26px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.ndf-scanner #ScanWrapper input[type=checkbox],.ndf-scanner #ScanWrapper input[type=radio]{margin:0 3px 0 0}.ndf-scanner #divScanner{border-bottom:none}.ndf-scanner #PCollapse{list-style:none inside none;margin-left:0;padding-left:0}.ndf-scanner select#source{margin-top:3px;padding-left:3px;width:100%;font-size:12px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.ndf-scanner select#Resolution{margin-left:3px;width:192px;height:26px}.ndf-scanner #divProductDetail li{margin-top:8px}.ndf-scanner #divProductDetail li:first-child{margin-top:3px}.ndf-scanner #divProductDetail li label{display:inline-block;margin:0 4px;font-size:12px}.ndf-scanner #divProductDetail li label:last-child{margin:0}.ndf-scanner #divProductDetail li label input{width:15px;height:15px;vertical-align:middle}.ndf-scanner #div_LoadLocalImage input[type=button]{margin:15px 0;width:90px;height:30px}.ndf-scanner #div_ScanImage{position:relative}.ndf-scanner #tblLoadImage{position:absolute;top:102px;z-index:1;padding:30px 22px;width:275px;height:128px;font-size:14px;line-height:30px;text-align:left;border:1px solid #fe8e14;background-color:#f5f5f5}.ndf-scanner #tblLoadImage>a{position:absolute;top:15px;right:15px;line-height:normal;text-decoration:none}.ndf-scanner #tblLoadImage a{color:#50a8e1}.ndf-scanner #tblLoadImage a:hover{color:#61c2ec}.ndf-scanner #divUpload input[type=text]{width:100%;padding-left:5px}.ndf-scanner #divUpload li label{display:inline-block;margin:0 8px 0 0;font-size:12px}.ndf-scanner #divUpload li img{margin-right:2px}.ndf-scanner #divUpload li label:last-child{margin-right:0}.ndf-scanner #divUpload li input{width:15px;height:15px;vertical-align:middle}.ndf-scanner #divUpload li:nth-child(3){margin:5px 0 8px}.ndf-scanner #divUpload li{padding:0 20px}.ndf-scanner #divUpload li:nth-child(2){padding-top:12px}.ndf-scanner #divUpload input[type=button]{margin:14px 0 20px}.ndf-scanner #divUpload #btnSave,.ndf-scanner #divUpload #btnUpload{padding:0;width:115px;height:30px;margin-right:15px;cursor:pointer}.ndf-scanner #divUpload #btnUpload{width:138px;margin-right:0}.ndf-scanner #DWTcontainerBtm{position:relative;float:left;width:980px}.ndf-scanner #DWTemessageContainer{float:left}.ndf-scanner #DWTemessageContainer input[type=text]{border:solid 1px #ccc;padding-left:3px}.ndf-scanner #DWTemessageContainer input[type=button]{cursor:pointer;margin:0 3px;outline:none}.ndf-scanner #DWTdivMsg{padding:5px 0 0;font-size:14px;color:#444}.ndf-scanner #DWTemessage{padding:6px 0 0 8px;margin-top:3px;width:632px;height:160px;border:solid 1px #ccc;overflow-y:scroll;background:#fff}.ndf-scanner #divNoteMessage{float:right;padding:10px 15px;margin-top:34px;width:315px;height:160px;font-size:12px;line-height:20px;border:1px solid #ccc;background:#e7f2fd;color:#606060}.ndf-scanner #divNoteMessage p{margin:0;color:#444}.ndf-scanner .ds-dialog-wrap,.ndf-scanner .ds-dialog-wrap div{box-sizing:content-box!important}.ndf-scanner .ds-dialog-wrap:before,.ndf-scanner .ds-dialog-wrap div:before,.ndf-scanner .ds-dialog-wrap:after,.ndf-scanner .ds-dialog-wrap div:after{box-sizing:content-box!important}.ndf-scanner .ks-overlay{position:absolute;left:-9999px;top:-9999px}.ndf-scanner .ks-ext-close{padding:0 20px;position:absolute;right:-5px;top:5px}.ndf-scanner .ks-ext-close,.ndf-scanner .ks-ext-close:link{color:#22a;text-decoration:none;cursor:pointer}.ndf-scanner .ks-ext-mask{background:#999;filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7}.ndf-scanner .D-dailog .ks-ext-close .ks-ext-close-x{height:8px}.ndf-scanner .D-dailog .ks-ext-close,.ndf-scanner .D-dailog .ks-ext-close:hover{background:none;border:none}.ndf-scanner .D-dailog{position:absolute;left:-9999px;top:-99999px;margin:100px auto;padding:0;width:392px;height:262px;background-color:#f1f2f2}.ndf-scanner .D-dailog .D-dailog-body{width:350px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Mac{width:350px;height:235px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-NotAllowed{color:#444;line-height:1.8;width:350px;height:185px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Scan{width:380px;height:240px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Scan-sample{width:380px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog a{text-decoration:none}.ndf-scanner .link{text-decoration:underline}.ndf-scanner .D-dailog ul{margin:10px 0 10px 20px;list-style-type:disc}.ndf-scanner .red{color:red;margin-left:5px}.ndf-scanner #message{position:fixed;top:0px;left:0px;width:100%;z-index:105;text-align:center;font-weight:bold;font-size:100%;padding:10px 0;color:#239210;background-color:#e0f0d6;border:1px solid #54d33f;box-shadow:0 0 10px #3a3a3a}.ndf-scanner #MessageBody a{color:#6a9962;font-size:14px}.ndf-scanner #message span{text-align:center;width:95%;float:left}.ndf-scanner #MessageBoy a:hover{text-decoration:underline}.ndf-scanner .close-notify{white-space:nowrap;float:right;margin-right:10px;color:#fff;text-decoration:none;border:2px #fff solid;padding-left:3px;padding-right:3px}.ndf-scanner .close-notify a{color:#fff}.ndf-scanner .DWTPage{margin:0 auto}.hide-upload-button{opacity:0!important}app-scanner input[type=checkbox]{appearance:none;-webkit-appearance:none;width:20px!important;height:20px!important;border:2px solid var(--main-color)!important;background-color:var(--wrapper-bg)!important;cursor:pointer;border-radius:4px;position:relative;transition:background-color .3s}app-scanner input[type=checkbox]:checked{background-color:var(--main-color)!important;border-color:var(--main-color)!important}app-scanner input[type=checkbox]:checked:after{content:\"\";position:absolute;top:2px;left:6px;width:5px;border:solid var(--checkbox-inner-color, #fff);height:10px;border-width:0 2px 2px 0;transform:rotate(45deg)}app-scanner input[type=radio]{appearance:none;-webkit-appearance:none;width:20px!important;height:20px!important;border:2px solid var(--radio-border, var(--main-color))!important;background-color:var(--radio-bg, var(--wrapper-bg))!important;border-radius:50%;cursor:pointer;position:relative;transition:background-color .3s ease}app-scanner input[type=radio]:checked{background-color:var(--main-color)!important;border-color:var(--main-color)!important}app-scanner input[type=radio]:checked:after{content:\"\";position:absolute;top:4px;left:4px;width:8px;height:8px;background-color:var(--radio-inner-color, #fff)!important;border-radius:50%}app-scanner .mat-icon{color:var(--scanner-icon-color, #161616)}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
944
+ NdfScannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfScannerComponent, selector: "ndf-scanner", inputs: { useStoredFile: "useStoredFile", hideUploadButton: "hideUploadButton", loading: "loading" }, outputs: { file: "file" }, host: { classAttribute: "ndf-scanner" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"DWTcontainer\" class=\"h-full\">\r\n\t<div id=\"DWTcontainerTop\">\r\n\t\t<div id=\"divEdit\">\r\n\t\t\t<ul class=\"operateGrp\">\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.showImageEditor' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnShowImageEditor_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Editor'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotateLeft' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotateLeft_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-Left'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotateRight' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotateRight_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-Right'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.rotate180' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRotate180_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:Rotate-180'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.mirror' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnMirror_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:flip-horizontal'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.flip' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnFlip_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:flip-vertical'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.removeSelected' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRemoveCurrentImage_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:RemoveImages'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.removeAll' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnRemoveAllImages_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:RemoveAllImages'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.resize' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnChangeImageSize_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:changeSize'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li clss=\"flex items-center justify-center leading-none w-15 h-15\">\r\n\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t[matTooltip]=\"'scanner.crop' | translate\"\r\n\t\t\t\t\t\t(click)=\"btnCrop_onclick()\"\r\n\t\t\t\t\t\tclass=\"filter-icon cursor-pointer\"\r\n\t\t\t\t\t\t[svgIcon]=\"'icons:crop'\"\r\n\t\t\t\t\t></mat-icon>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t\t<div id=\"ImgSizeEditor\" style=\"visibility: hidden\">\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"img_height\"\r\n\t\t\t\t\t\t\t>{{ 'scanner.newHeight' | translate }} :\r\n\t\t\t\t\t\t\t<input type=\"text\" id=\"img_height\" style=\"width: 50%\" size=\"10\" />\r\n\t\t\t\t\t\t\t{{ 'scanner.pixel' | translate }}</label\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"img_width\"\r\n\t\t\t\t\t\t\t>{{ 'scanner.newWidth' | translate }} :&nbsp;\r\n\t\t\t\t\t\t\t<input type=\"text\" id=\"img_width\" style=\"width: 50%\" size=\"10\" />\r\n\t\t\t\t\t\t\t{{ 'scanner.pixel' | translate }}</label\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t{{ 'scanner.InterpolationMethod' | translate }}:\r\n\t\t\t\t\t\t<select size=\"1\" id=\"InterpolationMethod\">\r\n\t\t\t\t\t\t\t<option value=\"\"></option>\r\n\t\t\t\t\t\t</select>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li style=\"text-align: center\">\r\n\t\t\t\t\t\t<input type=\"button\" value=\" OK \" id=\"btnChangeImageSizeOK\" (click)=\"btnChangeImageSizeOK_onclick()\" />\r\n\t\t\t\t\t\t<input type=\"button\" value=\" Cancel \" id=\"btnCancelChange\" (click)=\"btnCancelChange_onclick()\" />\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"dwtcontrolContainer\"></div>\r\n\t\t<div class=\"w-full\" id=\"loader\">\r\n\t\t\t<div class=\"flex items-center justify-center h-full\">\r\n\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"btnGroupBtm\">\r\n\t\t\t<div class=\"ct-lt\">\r\n\t\t\t\t{{ 'scanner.page' | translate }}:\r\n\t\t\t\t<input id=\"DW_btnFirstImage\" (click)=\"btnFirstImage_onclick()\" type=\"button\" value=\" |< \" />&nbsp;\r\n\t\t\t\t<input id=\"DW_btnPreImage\" (click)=\"btnPreImage_onclick()\" type=\"button\" value=\" < \" />&nbsp;&nbsp;\r\n\t\t\t\t<input type=\"text\" size=\"2\" id=\"DW_CurrentImage\" readonly=\"readonly\" />\r\n\t\t\t\t/\r\n\t\t\t\t<input type=\"text\" size=\"2\" id=\"DW_TotalImage\" readonly=\"readonly\" />&nbsp;&nbsp;\r\n\t\t\t\t<input id=\"DW_btnNextImage\" (click)=\"btnNextImage_onclick()\" type=\"button\" value=\"> \" />&nbsp;\r\n\t\t\t\t<input id=\"DW_btnLastImage\" (click)=\"btnLastImage_onclick()\" type=\"button\" value=\">| \" />\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ct-rt\">\r\n\t\t\t\t{{ 'scanner.preview' | translate }}:\r\n\t\t\t\t<select size=\"1\" id=\"DW_PreviewMode\" (change)=\"setlPreviewMode()\">\r\n\t\t\t\t\t<option value=\"0\">1X1</option>\r\n\t\t\t\t\t<option value=\"1\">2X2</option>\r\n\t\t\t\t\t<option value=\"2\">3X3</option>\r\n\t\t\t\t\t<option value=\"3\">4X4</option>\r\n\t\t\t\t\t<option value=\"4\">5X5</option></select\r\n\t\t\t\t><br />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"ScanWrapper\">\r\n\t\t<div id=\"divScanner\" class=\"divinput\">\r\n\t\t\t<div id=\"div_ScanImage\" class=\"divTableStyle\">\r\n\t\t\t\t<ul id=\"ulScaneImageHIDE\">\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<label for=\"source\">\r\n\t\t\t\t\t\t\t<p>{{ 'scanner.source' | translate }}:</p>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<select size=\"1\" id=\"source\" style=\"position: relative\" (change)=\"source_onchange()\">\r\n\t\t\t\t\t\t\t<option value=\"\"></option>\r\n\t\t\t\t\t\t</select>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li style=\"display: none\" id=\"pNoScanner\">\r\n\t\t\t\t\t\t<a href=\"javascript: void(0)\" class=\"ShowtblLoadImage\" style=\"color: #fe8e14\" id=\"aNoScanner\"\r\n\t\t\t\t\t\t\t>(No TWAIN compatible drivers detected)</a\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t<li id=\"divProductDetail\">\r\n\t\t\t\t\t\t<ul id=\"divTwainType\">\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t<label id=\"lblShowUI\" for=\"ShowUI\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"checkbox\" id=\"ShowUI\" />{{ 'scanner.ShowUI' | translate }}&nbsp;</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"ADF\"> <input type=\"checkbox\" id=\"ADF\" />{{ 'scanner.AutoFeeder' | translate }}&nbsp;</label>\r\n\t\t\t\t\t\t\t\t<label for=\"Duplex\"> <input type=\"checkbox\" id=\"Duplex\" />{{ 'scanner.Duplex' | translate }}</label>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t{{ 'scanner.PixelType' | translate }}:\r\n\t\t\t\t\t\t\t\t<label for=\"BW\" style=\"margin-left: 5px\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"BW\" name=\"PixelType\" />{{ 'scanner.B&W' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"Gray\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"Gray\" name=\"PixelType\" />{{ 'scanner.Gray' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<label for=\"RGB\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"RGB\" name=\"PixelType\" />{{ 'scanner.Color' | translate }}</label\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t<span>{{ 'scanner.Resolution' | translate }}:&nbsp;</span\r\n\t\t\t\t\t\t\t\t><select size=\"1\" id=\"Resolution\">\r\n\t\t\t\t\t\t\t\t\t<option value=\"100\">100</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"150\">150</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"200\">200</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"300\" selected>300</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</li>\r\n\r\n\t\t\t\t\t<div class=\"flex justify-between items-center\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tid=\"btnScan\"\r\n\t\t\t\t\t\t\tdisabled=\"disabled\"\r\n\t\t\t\t\t\t\t(click)=\"acquireImage()\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclass=\"action-btn action-btn_2\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<i class=\"bi bi-upc-upload icon\"></i>\r\n\t\t\t\t\t\t\t<span> {{ 'scanner.scanFile' | translate }}</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t(click)=\"btnLoadImagesOrPDFs_onclick()\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclass=\"action-btn action-btn_1 flex items-center justify-center gap-x-2\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<i class=\"bi bi-upload icon\"></i>\r\n\t\t\t\t\t\t\t<span> {{ 'scanner.loadFile' | translate }}</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"flex justify-end mx-3\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"btn save-button\"\r\n\t\t\t\t[ngClass]=\"{ 'hide-upload-button': hideUploadButton }\"\r\n\t\t\t\t#scannerUploadButton\r\n\t\t\t\tid=\"scannerUploadButton\"\r\n\t\t\t\t[disabled]=\"DWObject?.HowManyImagesInBuffer === 0\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(click)=\"convertToBlob()\"\r\n\t\t\t>\r\n\t\t\t\t{{ 'scanner.saveFile' | translate }}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".ndf-scanner img{vertical-align:middle;border:0}.ndf-scanner p{margin:0;padding:0}.ndf-scanner a:link,.ndf-scanner a:visited{color:#606060;text-decoration:none}.ndf-scanner a:hover{color:#fe8e14}.ndf-scanner input{font:normal 12px verdana;color:#444}.ndf-scanner input.invalid{background-color:#ff9;border:2px red inset}.ndf-scanner a img{border:none}.ndf-scanner a img:hover{border:none}.ndf-scanner ul{list-style:none;padding-left:0;margin:0}.ndf-scanner .container{width:980px;margin:0 auto}.ndf-scanner .container:after,.ndf-scanner .clearfix:after{content:\"\";display:table;clear:both}.ndf-scanner .tc{text-align:center}.ndf-scanner .btnOrg{padding:0 15px;height:30px;line-height:28px;font-size:14px;color:#fff;background:#50a8e1;border:none;outline:none;cursor:pointer;border-radius:5px;-webkit-border-radius:5px;-moz-border-right-colors:5px;transition:all .2s ease-in-out}.ndf-scanner .btnOrg:hover{background:#61c2ec}.ndf-scanner .d-btn{display:inline-block;padding:0 25px;height:36px;line-height:30px;color:#fe8e14;font-size:14px;text-align:center;cursor:pointer;border:solid 2px #fe8e14;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;transition:all .2s ease-in-out}.ndf-scanner .d-btn:link,.ndf-scanner .d-btn:visited{color:#fe8e14}.ndf-scanner .d-btn:hover{color:#ffae38;border:solid 2px #ffae38}.ndf-scanner .d-btn.lgBtn{height:46px;line-height:40px}.ndf-scanner .d-btn.mdBtn{height:42px;line-height:36px}.ndf-scanner .d-btn.smBtn{height:38px;line-height:32px}.ndf-scanner .d-btn.bgOrange{background:#fe8e14;color:#fff}.ndf-scanner .d-btn.bgOrange:hover{background:#ffae38}.ndf-scanner .d-btn.bgBlue{border-color:#50a8e1;background:#50a8e1;color:#fff}.ndf-scanner .d-btn.bgBlue:hover{border-color:#61c2ec;background:#61c2ec}.ndf-scanner #dwtScanDemo{width:980px;margin:0 auto}.ndf-scanner #dwtScanDemo .ct-top{padding:0 0 15px}.ndf-scanner #dwtScanDemo .ct-top .title{font-size:18px;line-height:27px;color:#444}.ndf-scanner #dwtScanDemo .ct-top .desc{margin:0 15px 0 30px;font-size:14px;line-height:24px;color:#aaa}.ndf-scanner #DWTcontainer{display:flex;justify-content:space-between;flex-direction:row}.ndf-scanner #DWTcontainerTop{position:relative;float:left;flex:1;margin:0 10px;height:auto;border-radius:4px;border:3px solid #ccc;display:flex;justify-content:space-between;flex-direction:row;overflow:hidden}.ndf-scanner .ds-dwt-container-box>div{border:none!important}.ndf-scanner #divEdit{float:left;margin:0;padding:0;width:60px;background:#fff;border-right:1px solid #ccc}.ndf-scanner #divEdit .operateGrp li{margin:0;width:60px;height:57px;line-height:52px;border-bottom:solid 1px #ccc;text-align:center}.ndf-scanner #divEdit .operateGrp li:nth-last-child(2){height:58px}.ndf-scanner #divEdit .operateGrp li:last-child{height:56px}.ndf-scanner #divEdit .operateGrp li>img{cursor:pointer}.ndf-scanner #Crop{padding:10px 5px 5px;text-align:center;border-collapse:collapse;border:3px solid #ce5e04;position:absolute;height:80px;z-index:1;background-color:#f0f0f0;width:250px}.ndf-scanner #ImgSizeEditor{padding:10px 15px;position:absolute;z-index:1;top:513px;left:-1px;height:auto;width:320px;font-size:14px;color:#606060;text-align:left;background-color:#f5f5f5;border-collapse:collapse;border:1px solid #ccc;box-shadow:4px 4px 18px #ccc;-webkit-box-shadow:4px 4px 18px #ccc;-moz-box-shadow:4px 4px 18px #ccc}.ndf-scanner #ImgSizeEditor li{margin-bottom:5px}.ndf-scanner #ImgSizeEditor input{background:#fff;border:solid 1px #ccc}.ndf-scanner #ImgSizeEditor input[type=text]{padding-left:3px}.ndf-scanner #ImgSizeEditor input[type=button]{padding:5px;margin:6px 5px 0}.ndf-scanner #dwtcontrolContainer{float:left;width:100%;height:calc(100% - 58px)}.ndf-scanner #dwtcontrolContainer .dynamsoft-dwt-container-box>div{border:none!important}.ndf-scanner #dwt-NonInstallContainerID{float:left;width:560px;height:590px}.ndf-scanner #DWTcontainerTop #btnGroupBtm{position:absolute;bottom:0;padding:15px;width:calc(100% - 60px);height:58px;background:#f5f5f5;border-top:1px solid #ccc;font-size:14px;color:#606060;vertical-align:bottom;display:flex;justify-content:space-between;flex-direction:row;align-items:center;box-sizing:border-box;left:60px}.ndf-scanner #btnGroupBtm .ct-lt{float:left}.ndf-scanner #btnGroupBtm .ct-lt input{padding:0;margin-right:6px;width:25px;height:20px;font-size:10px;background:var(--input-field-bg, #f5f5f5);border:solid 1px var(--border-color, #bbbcc0);color:var(--input-field-color, rgb(96, 96, 96));outline:none;cursor:pointer}.ndf-scanner #btnGroupBtm .ct-lt input[type=text]{height:20px;font-size:12px;border:none;cursor:default}.ndf-scanner #btnGroupBtm .ct-lt #DW_btnFirstImage{margin-left:5px}.ndf-scanner #btnGroupBtm .ct-lt #DW_CurrentImage{margin:0 0 0 -13px;text-align:right}.ndf-scanner #btnGroupBtm .ct-lt #DW_TotalImage{margin:0 -7px 0 0;text-align:left}.ndf-scanner #btnGroupBtm .ct-rt{float:right}.ndf-scanner #DW_PreviewMode{padding:0 5px;margin-left:5px;height:26px;border:solid 1px #d8d8d8;color:#444;outline:none;border-radius:5px;cursor:pointer}.ndf-scanner #ScanWrapper{border-radius:4px;width:315px;height:570px;box-sizing:border-box}.ndf-scanner div.divinput{font-size:14px;color:#606060;line-height:24px;margin-bottom:20px}.ndf-scanner .divType,.ndf-scanner #ScanWrapper .toggle{padding-left:20px;height:38px;line-height:36px;font-size:14px;color:#444;background:#eee;border-bottom:1px solid #ccc;cursor:pointer}.ndf-scanner #ScanWrapper .toggle{cursor:default}.ndf-scanner .mark_arrow{display:block;float:right;margin:15px 20px 0 0;width:12px;height:8px}.ndf-scanner .divTableStyle{border:3px solid #ccc;border-radius:5px;padding:10px}.ndf-scanner .divTableStyle input[type=radio],.ndf-scanner .divTableStyle input[type=checkbox]{margin:0 5px!important;height:13px;display:inline-block}.ndf-scanner #ScanWrapper select,.ndf-scanner #divUpload input[type=text]{margin-top:3px;margin-bottom:6px;height:26px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.ndf-scanner #ScanWrapper input[type=checkbox],.ndf-scanner #ScanWrapper input[type=radio]{margin:0 3px 0 0}.ndf-scanner #divScanner{border-bottom:none}.ndf-scanner #PCollapse{list-style:none inside none;margin-left:0;padding-left:0}.ndf-scanner select#source{margin-top:3px;padding-left:3px;width:100%;font-size:12px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.ndf-scanner select#Resolution{margin-left:3px;width:192px;height:26px}.ndf-scanner #divProductDetail li{margin-top:8px}.ndf-scanner #divProductDetail li:first-child{margin-top:3px}.ndf-scanner #divProductDetail li label{display:inline-block;margin:0 4px;font-size:12px}.ndf-scanner #divProductDetail li label:last-child{margin:0}.ndf-scanner #divProductDetail li label input{width:15px;height:15px;vertical-align:middle}.ndf-scanner #div_LoadLocalImage input[type=button]{margin:15px 0;width:90px;height:30px}.ndf-scanner #div_ScanImage{position:relative}.ndf-scanner #tblLoadImage{position:absolute;top:102px;z-index:1;padding:30px 22px;width:275px;height:128px;font-size:14px;line-height:30px;text-align:left;border:1px solid #fe8e14;background-color:#f5f5f5}.ndf-scanner #tblLoadImage>a{position:absolute;top:15px;right:15px;line-height:normal;text-decoration:none}.ndf-scanner #tblLoadImage a{color:#50a8e1}.ndf-scanner #tblLoadImage a:hover{color:#61c2ec}.ndf-scanner #divUpload input[type=text]{width:100%;padding-left:5px}.ndf-scanner #divUpload li label{display:inline-block;margin:0 8px 0 0;font-size:12px}.ndf-scanner #divUpload li img{margin-right:2px}.ndf-scanner #divUpload li label:last-child{margin-right:0}.ndf-scanner #divUpload li input{width:15px;height:15px;vertical-align:middle}.ndf-scanner #divUpload li:nth-child(3){margin:5px 0 8px}.ndf-scanner #divUpload li{padding:0 20px}.ndf-scanner #divUpload li:nth-child(2){padding-top:12px}.ndf-scanner #divUpload input[type=button]{margin:14px 0 20px}.ndf-scanner #divUpload #btnSave,.ndf-scanner #divUpload #btnUpload{padding:0;width:115px;height:30px;margin-right:15px;cursor:pointer}.ndf-scanner #divUpload #btnUpload{width:138px;margin-right:0}.ndf-scanner #DWTcontainerBtm{position:relative;float:left;width:980px}.ndf-scanner #DWTemessageContainer{float:left}.ndf-scanner #DWTemessageContainer input[type=text]{border:solid 1px #ccc;padding-left:3px}.ndf-scanner #DWTemessageContainer input[type=button]{cursor:pointer;margin:0 3px;outline:none}.ndf-scanner #DWTdivMsg{padding:5px 0 0;font-size:14px;color:#444}.ndf-scanner #DWTemessage{padding:6px 0 0 8px;margin-top:3px;width:632px;height:160px;border:solid 1px #ccc;overflow-y:scroll;background:#fff}.ndf-scanner #divNoteMessage{float:right;padding:10px 15px;margin-top:34px;width:315px;height:160px;font-size:12px;line-height:20px;border:1px solid #ccc;background:#e7f2fd;color:#606060}.ndf-scanner #divNoteMessage p{margin:0;color:#444}.ndf-scanner .ds-dialog-wrap,.ndf-scanner .ds-dialog-wrap div{box-sizing:content-box!important}.ndf-scanner .ds-dialog-wrap:before,.ndf-scanner .ds-dialog-wrap div:before,.ndf-scanner .ds-dialog-wrap:after,.ndf-scanner .ds-dialog-wrap div:after{box-sizing:content-box!important}.ndf-scanner .ks-overlay{position:absolute;left:-9999px;top:-9999px}.ndf-scanner .ks-ext-close{padding:0 20px;position:absolute;right:-5px;top:5px}.ndf-scanner .ks-ext-close,.ndf-scanner .ks-ext-close:link{color:#22a;text-decoration:none;cursor:pointer}.ndf-scanner .ks-ext-mask{background:#999;filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7}.ndf-scanner .D-dailog .ks-ext-close .ks-ext-close-x{height:8px}.ndf-scanner .D-dailog .ks-ext-close,.ndf-scanner .D-dailog .ks-ext-close:hover{background:none;border:none}.ndf-scanner .D-dailog{position:absolute;left:-9999px;top:-99999px;margin:100px auto;padding:0;width:392px;height:262px;background-color:#f1f2f2}.ndf-scanner .D-dailog .D-dailog-body{width:350px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Mac{width:350px;height:235px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-NotAllowed{color:#444;line-height:1.8;width:350px;height:185px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Scan{width:380px;height:240px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog .D-dailog-body-Scan-sample{width:380px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.ndf-scanner .D-dailog a{text-decoration:none}.ndf-scanner .link{text-decoration:underline}.ndf-scanner .D-dailog ul{margin:10px 0 10px 20px;list-style-type:disc}.ndf-scanner .red{color:red;margin-left:5px}.ndf-scanner #message{position:fixed;top:0px;left:0px;width:100%;z-index:105;text-align:center;font-weight:bold;font-size:100%;padding:10px 0;color:#239210;background-color:#e0f0d6;border:1px solid #54d33f;box-shadow:0 0 10px #3a3a3a}.ndf-scanner #MessageBody a{color:#6a9962;font-size:14px}.ndf-scanner #message span{text-align:center;width:95%;float:left}.ndf-scanner #MessageBoy a:hover{text-decoration:underline}.ndf-scanner .close-notify{white-space:nowrap;float:right;margin-right:10px;color:#fff;text-decoration:none;border:2px #fff solid;padding-left:3px;padding-right:3px}.ndf-scanner .close-notify a{color:#fff}.ndf-scanner .DWTPage{margin:0 auto}.hide-upload-button{opacity:0!important}app-scanner input[type=checkbox]{appearance:none;-webkit-appearance:none;width:20px!important;height:20px!important;border:2px solid var(--main-color)!important;background-color:var(--wrapper-bg)!important;cursor:pointer;border-radius:4px;position:relative;transition:background-color .3s}app-scanner input[type=checkbox]:checked{background-color:var(--main-color)!important;border-color:var(--main-color)!important}app-scanner input[type=checkbox]:checked:after{content:\"\";position:absolute;top:2px;left:6px;width:5px;border:solid var(--checkbox-inner-color, #fff);height:10px;border-width:0 2px 2px 0;transform:rotate(45deg)}app-scanner input[type=radio]{appearance:none;-webkit-appearance:none;width:20px!important;height:20px!important;border:2px solid var(--radio-border, var(--main-color))!important;background-color:var(--radio-bg, var(--wrapper-bg))!important;border-radius:50%;cursor:pointer;position:relative;transition:background-color .3s ease}app-scanner input[type=radio]:checked{background-color:var(--main-color)!important;border-color:var(--main-color)!important}app-scanner input[type=radio]:checked:after{content:\"\";position:absolute;top:4px;left:4px;width:8px;height:8px;background-color:var(--radio-inner-color, #fff)!important;border-radius:50%}app-scanner .mat-icon{color:var(--scanner-icon-color, #161616)}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
945
945
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfScannerComponent, decorators: [{
946
946
  type: Component,
947
947
  args: [{
@@ -63,7 +63,7 @@ export class GraphChartComponent extends BaseChart {
63
63
  }
64
64
  }
65
65
  GraphChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
66
- GraphChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GraphChartComponent, selector: "app-graph-chart", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"report$ | async as report\">\r\n\t<div class=\"chart-legends\"></div>\r\n\t<app-chart\r\n\t\t[type]=\"report.config.type\"\r\n\t\t[data]=\"report.data\"\r\n\t\t[options]=\"report.config?.options\"\r\n\t\t[plugins]=\"report.config?.plugins\"\r\n\t\t[responsive]=\"true\"\r\n\t\t(onReady)=\"chartReady($event)\"\r\n\t\tclass=\"app-chart\"\r\n\t></app-chart>\r\n</ng-container>\r\n", styles: [":host{--chart-height: var(--graph-chart-height, 100%);display:var(--graph-chart-display, flex);flex-direction:var(--graph-chart-direction, row);justify-content:var(--graph-chart-justify-content, space-between);align-items:var(--graph-chart-align-items, center);grid-gap:var(--graph-chart-gap, .5rem);gap:var(--graph-chart-gap, .5rem);min-height:0}.app-chart{--chart-padding: 1rem}.app-chart.bs-chart-pie,.app-chart.bs-chart-doughnut{--chart-grow: 0;aspect-ratio:1/1;--chart-align-self: center;--chart-print-width:65mm;--chart-print-height:65mm;--chart-print-max-width: 65mm}::ng-deep .chart-legends{max-height:var(--chart-legends-height, var(--chart-height));min-width:var(--chart-legends-width, 0);overflow:auto;font-size:1rem;text-align:start;display:flex;flex-direction:column;grid-gap:.2rem;gap:.2rem;padding-block:.5rem}::ng-deep .chart-legends:empty{--chart-legends-width: 0;display:none}::ng-deep .chart-legends.has-items{--chart-legends-width: var(--chart-legends-items-width, 200px)}::ng-deep .chart-legends__legend{display:flex;align-items:baseline;-webkit-user-select:none;user-select:none;cursor:default}::ng-deep .chart-legends__box{width:var(--chart-legends-box-width, 8px);height:var(--chart-legends-box-height, 8px);border-radius:var(--chart-legends-radius, 50%);margin-inline:var(--chart-legends-box-inline, 0 .5rem);display:inline-block;flex-shrink:0}@media print{::ng-deep .chart-legends__box{-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact}}\n"], components: [{ type: i1.ChartComponent, selector: "app-chart", inputs: ["data", "options"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2.AsyncPipe } });
66
+ GraphChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GraphChartComponent, selector: "app-graph-chart", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"report$ | async as report\">\r\n\t<div class=\"chart-legends\"></div>\r\n\t<app-chart\r\n\t\t[type]=\"report.config.type\"\r\n\t\t[data]=\"report.data\"\r\n\t\t[options]=\"report.config?.options\"\r\n\t\t[plugins]=\"report.config?.plugins\"\r\n\t\t[responsive]=\"true\"\r\n\t\t(onReady)=\"chartReady($event)\"\r\n\t\tclass=\"app-chart\"\r\n\t></app-chart>\r\n</ng-container>\r\n", styles: [":host{--chart-height: var(--graph-chart-height, 100%);display:var(--graph-chart-display, flex);flex-direction:var(--graph-chart-direction, row);justify-content:var(--graph-chart-justify-content, space-between);align-items:var(--graph-chart-align-items, center);grid-gap:var(--graph-chart-gap, .5rem);gap:var(--graph-chart-gap, .5rem);min-height:0}.app-chart{--chart-padding: 1rem}.app-chart.bs-chart-pie,.app-chart.bs-chart-doughnut{--chart-grow: 0;aspect-ratio:1/1;--chart-align-self: center;--chart-print-width:65mm;--chart-print-height:65mm;--chart-print-max-width: 65mm}::ng-deep .chart-legends:empty{--chart-legends-width: 0;display:none}::ng-deep .chart-legends{max-height:var(--chart-legends-height, var(--chart-height));min-width:var(--chart-legends-width, 0);overflow:auto;font-size:1rem;text-align:start;display:flex;flex-direction:column;grid-gap:.2rem;gap:.2rem;padding-block:.5rem}::ng-deep .chart-legends.has-items{--chart-legends-width: var(--chart-legends-items-width, 200px)}::ng-deep .chart-legends__legend{display:flex;align-items:baseline;-webkit-user-select:none;user-select:none;cursor:default}::ng-deep .chart-legends__box{width:var(--chart-legends-box-width, 8px);height:var(--chart-legends-box-height, 8px);border-radius:var(--chart-legends-radius, 50%);margin-inline:var(--chart-legends-box-inline, 0 .5rem);display:inline-block;flex-shrink:0}@media print{::ng-deep .chart-legends__box{-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact}}\n"], components: [{ type: i1.ChartComponent, selector: "app-chart", inputs: ["data", "options"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2.AsyncPipe } });
67
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphChartComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{
@@ -369,7 +369,7 @@ export class NdfReportsComponent extends DestroySubject {
369
369
  }
370
370
  }
371
371
  NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: i2.FiltersMapperService }, { token: i3.NdfReportsService }, { token: i3.ChartManagerService }, { token: i3.ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: i2.FilterQueryService }, { token: i3.ReportsStateService }, { token: i3.ReportConfigurationService }, { token: i4.Router }, { token: i0.NgZone }, { token: i3.ReportsHooksService }], target: i0.ɵɵFactoryTarget.Component });
372
- NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", loadCondition: "loadCondition", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "headerPanelTemplate", first: true, predicate: HEADER_PANEL_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "emptyContentTemplate", first: true, predicate: EMPTY_CONTENT_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ndf-reports__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n>\r\n <div\r\n class=\"absolute flex justify-center items-center loading-result\"\r\n *ngIf=\"isLoadingResult && callLoadCondition()\"\r\n >\r\n <mat-spinner class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n </div>\r\n\r\n <div class=\"ndf-reports__panel print:hidden\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerPanelTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: aggregations,\r\n filterChanged: filterChanged,\r\n activeQuery: activeQuery,\r\n triggerUpdate: triggerUpdate,\r\n reset: resetFilters,\r\n config: config\r\n }\"\r\n ></ng-container>\r\n\r\n <app-filters-panel\r\n *ngIf=\"!!filtersConfig?.fields?.length && callLoadCondition()\"\r\n [fields]=\"filtersConfig?.fields\"\r\n [aggregations]=\"aggregations\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n class=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n\r\n <ng-container *ngIf=\"callLoadCondition(); else emptyContent\">\r\n <div\r\n class=\"ndf-reports__content\"\r\n (scrolled)=\"onContentScroll($event)\"\r\n *ngIf=\"reportsData$ | async as reports\"\r\n >\r\n <div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n <button\r\n mat-stroked-button\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && reportsKey\"\r\n [key]=\"reportsKey\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"config?.options?.print\"\r\n class=\"print-button\"\r\n (click)=\"printAll()\"\r\n >\r\n <mat-icon> print</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n <app-ndf-report\r\n *ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n [config]=\"config\"\r\n [data]=\"reports?.response\"\r\n [criteria]=\"filtersParams$ | async\"\r\n [direction]=\"direction\"\r\n [attr.data-width]=\"config?.layout?.width || 4\"\r\n [attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n [attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n [attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n [class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n class=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n (onNavigate)=\"onNavigate($event)\"\r\n (onOpen)=\"openReportDetails($event, config)\"\r\n ></app-ndf-report>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n class=\"ndf-reports__details print:hidden\"\r\n [class.opened]=\"showDetails\"\r\n [@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n (@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n >\r\n <app-ndf-table\r\n *ngIf=\"reportDetails$ | async as report\"\r\n [config]=\"report.config\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n [customCriteria]=\"detailsFiltersParams$ | async\"\r\n >\r\n <ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n <div class=\"ndf-reports__details__header flex gap-2\">\r\n <button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"close-button\"\r\n (click)=\"closeDetailsPanel()\"\r\n >\r\n <mat-icon> close</mat-icon>\r\n </button>\r\n </div>\r\n <h3>\r\n {{ report.label | translate }}\r\n </h3>\r\n </ng-template>\r\n </app-ndf-table>\r\n </div>\r\n</div>\r\n\r\n<ng-template #emptyContent>\r\n <div class=\"ndf-reports__content flex items-center flex-grow-1\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyContentTemplate || defaultEmptyContent\"\r\n ></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyContent>\r\n <div class=\"no-data mt-26\">\r\n {{ 'noData' | translate }}\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.loading-result{background:var(--loading-result-background, rgba(255, 255, 255, .5));backdrop-filter:var(--loading-result-filter, blur(3px));width:100%;height:100%;z-index:3}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc( var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5) ));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));grid-template-rows:var(--reports-grid-rows, auto);margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i14.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
372
+ NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", loadCondition: "loadCondition", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "headerPanelTemplate", first: true, predicate: HEADER_PANEL_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "emptyContentTemplate", first: true, predicate: EMPTY_CONTENT_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ndf-reports__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n>\r\n <div\r\n class=\"absolute flex justify-center items-center loading-result\"\r\n *ngIf=\"isLoadingResult && callLoadCondition()\"\r\n >\r\n <mat-spinner class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n </div>\r\n\r\n <div class=\"ndf-reports__panel print:hidden\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerPanelTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: aggregations,\r\n filterChanged: filterChanged,\r\n activeQuery: activeQuery,\r\n triggerUpdate: triggerUpdate,\r\n reset: resetFilters,\r\n config: config\r\n }\"\r\n ></ng-container>\r\n\r\n <app-filters-panel\r\n *ngIf=\"!!filtersConfig?.fields?.length && callLoadCondition()\"\r\n [fields]=\"filtersConfig?.fields\"\r\n [aggregations]=\"aggregations\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n class=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n\r\n <ng-container *ngIf=\"callLoadCondition(); else emptyContent\">\r\n <div\r\n class=\"ndf-reports__content\"\r\n (scrolled)=\"onContentScroll($event)\"\r\n *ngIf=\"reportsData$ | async as reports\"\r\n >\r\n <div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n <button\r\n mat-stroked-button\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && reportsKey\"\r\n [key]=\"reportsKey\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"config?.options?.print\"\r\n class=\"print-button\"\r\n (click)=\"printAll()\"\r\n >\r\n <mat-icon> print</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n <app-ndf-report\r\n *ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n [config]=\"config\"\r\n [data]=\"reports?.response\"\r\n [criteria]=\"filtersParams$ | async\"\r\n [direction]=\"direction\"\r\n [attr.data-width]=\"config?.layout?.width || 4\"\r\n [attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n [attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n [attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n [class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n class=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n (onNavigate)=\"onNavigate($event)\"\r\n (onOpen)=\"openReportDetails($event, config)\"\r\n ></app-ndf-report>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n class=\"ndf-reports__details print:hidden\"\r\n [class.opened]=\"showDetails\"\r\n [@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n (@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n >\r\n <app-ndf-table\r\n *ngIf=\"reportDetails$ | async as report\"\r\n [config]=\"report.config\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n [customCriteria]=\"detailsFiltersParams$ | async\"\r\n >\r\n <ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n <div class=\"ndf-reports__details__header flex gap-2\">\r\n <button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"close-button\"\r\n (click)=\"closeDetailsPanel()\"\r\n >\r\n <mat-icon> close</mat-icon>\r\n </button>\r\n </div>\r\n <h3>\r\n {{ report.label | translate }}\r\n </h3>\r\n </ng-template>\r\n </app-ndf-table>\r\n </div>\r\n</div>\r\n\r\n<ng-template #emptyContent>\r\n <div class=\"ndf-reports__content flex items-center flex-grow-1\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyContentTemplate || defaultEmptyContent\"\r\n ></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyContent>\r\n <div class=\"no-data mt-26\">\r\n {{ 'noData' | translate }}\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.loading-result{background:var(--loading-result-background, rgba(255, 255, 255, .5));backdrop-filter:var(--loading-result-filter, blur(3px));width:100%;height:100%;z-index:3}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - var(--ndf-reports-block-padding, 1rem) * 2.5));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));grid-template-rows:var(--reports-grid-rows, auto);margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i14.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
373
373
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, decorators: [{
374
374
  type: Component,
375
375
  args: [{
@@ -407,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
407
407
  type: ContentChild,
408
408
  args: [EMPTY_CONTENT_TEMPLATE, { read: TemplateRef }]
409
409
  }] } });
410
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9jb250YWluZXJzL25kZi1yZXBvcnRzL25kZi1yZXBvcnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvY29udGFpbmVycy9uZGYtcmVwb3J0cy9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFFVCxFQUFFLEVBQ0YsYUFBYSxHQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FB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dGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQge1xyXG4gIEJlaGF2aW9yU3ViamVjdCxcclxuICBjb21iaW5lTGF0ZXN0LFxyXG4gIGZvcmtKb2luLFxyXG4gIGZyb20sXHJcbiAgZnJvbUV2ZW50LFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgUmVwbGF5U3ViamVjdCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBmaWx0ZXIsXHJcbiAgZmluYWxpemUsXHJcbiAgbWFwLFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YWtlVW50aWwsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QsIEZsdWlkSGVpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE5ERl9FRElUT1JfVFlQRSB9IGZyb20gJy4uLy4uLy4uLy4uL25kZi1jb25maWctZWRpdG9yL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgQWdncmVnYXRpb25SZXNwb25zZSxcclxuICBDVVNUT01fVEVNUExBVEUsXHJcbiAgRmllbGRDb25maWdNb2RlbCxcclxuICBGaWx0ZXJRdWVyeVNlcnZpY2UsXHJcbiAgRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcbiAgRm9ybVF1ZXJ5TW9kZWwsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWZpbHRlcnMnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL3RhYmxlcyc7XHJcbmltcG9ydCB7XHJcbiAgRU1QVFlfQ09OVEVOVF9URU1QTEFURSxcclxuICBIRUFERVJfUEFORUxfVEVNUExBVEUsXHJcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3JpdGVyaWFNb2RlbCxcclxuICBOZGZSZXBvcnRzQ29uZmlnLFxyXG4gIFJlcG9ydENvbmZpZ01vZGVsLFxyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhcnRNYW5hZ2VyU2VydmljZSxcclxuICBOZGZSZXBvcnRzU2VydmljZSxcclxuICBSZXBvcnRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICBSZXBvcnRzSG9va3NTZXJ2aWNlLFxyXG4gIFJlcG9ydHNTdGF0ZVNlcnZpY2UsXHJcbiAgUmVwb3J0VHJhbnNmb3JtU2VydmljZSxcclxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IG1hcFRvTmRmVGFibGVDb25maWcsIHByZXBhcmVOZGZUYWJsZUZpbHRlcnMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNsaWRlQW5pbWF0aW9uID0gdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuICBzdGF0ZShcclxuICAgICdjbG9zZWQnLFxyXG4gICAgc3R5bGUoe1xyXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHZhcigtLW5kZi1yZXBvcnRzLWRldGFpbHMtdHJhbnNsYXRlWCwgLTEwMCUpKScsXHJcbiAgICB9KVxyXG4gICksXHJcbiAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcclxuICB0cmFuc2l0aW9uKCdjbG9zZWQgPD0+IG9wZW4nLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKSxcclxuXSk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1uZGYtcmVwb3J0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25kZi1yZXBvcnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnbmRmLXJlcG9ydHMnLFxyXG4gICAgJ1tkaXJdJzogJ2RpcmVjdGlvbicsXHJcbiAgfSxcclxuICBhbmltYXRpb25zOiBbc2xpZGVBbmltYXRpb25dLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmUmVwb3J0c0NvbXBvbmVudFxyXG4gIGV4dGVuZHMgRGVzdHJveVN1YmplY3RcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcclxue1xyXG4gIEBWaWV3Q2hpbGQoRmx1aWRIZWlnaHREaXJlY3RpdmUpIGZsdWlkRGlyZWN0aXZlOiBGbHVpZEhlaWdodERpcmVjdGl2ZTtcclxuICBfaXNIZWlnaHRVcGRhdGVkID0gZmFsc2U7XHJcbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb24gPSAncnRsJztcclxuICBpc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nUmVzdWx0ID0gZmFsc2U7XHJcbiAgcmVwb3J0c0RhdGEkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgaXNFeHBhbmRlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVRdWVyeVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xyXG4gICAgcHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH0+KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVGaWx0ZXJzUXVlcnlTdWIgPSBuZXcgUmVwbGF5U3ViamVjdDxGb3JtUXVlcnlNb2RlbD4oKTtcclxuICByZWFkb25seSBhY3RpdmVGaWx0ZXJzUXVlcnkkID0gdGhpcy5fYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZGZSZXBvcnRzQ29uZmlnPihudWxsKTtcclxuICByZWFkb25seSByZXBvcnRDb25maWckID0gdGhpcy5fY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyc0NyaXRlcmlhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4oXHJcbiAgICBudWxsXHJcbiAgKTtcclxuICByZWFkb25seSBmaWx0ZXJzUGFyYW1zJCA9IHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyaWdnZXJGaWx0ZXJzU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsc0ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDcml0ZXJpYU1vZGVsPihcclxuICAgIG51bGxcclxuICApO1xyXG4gIHJlYWRvbmx5IGRldGFpbHNGaWx0ZXJzUGFyYW1zJCA9IHRoaXMuX2RldGFpbHNGaWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfcmVwb3J0RGV0YWlsc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgY29uZmlnOiBOZGZUYWJsZUNvbmZpZztcclxuICB9PihudWxsKTtcclxuXHJcbiAgZ2V0IGFjdGl2ZVF1ZXJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLmdldFZhbHVlKCk/LmN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICByZXBvcnREZXRhaWxzJCA9IHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFnZ3JlZ2F0aW9uUmVzcG9uc2U+O1xyXG5cclxuICBnZXQgc2hvd0RldGFpbHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNEZXRhaWxzT3BlbmVkID0gZmFsc2U7XHJcblxyXG4gIGdldCBmaWx0ZXJzQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5maWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcG9ydENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ucmVwb3J0cztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVwb3J0c0tleTogc3RyaW5nO1xyXG4gIGVkaXRvclR5cGUgPSBOREZfRURJVE9SX1RZUEUuUkVQT1JUUztcclxuXHJcbiAgQElucHV0KCkgbmF2aWdhdGVSb3V0ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgbG9hZENvbmRpdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIF9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXQgY29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvblF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAQ29udGVudENoaWxkKENVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoSEVBREVSX1BBTkVMX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgaGVhZGVyUGFuZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChFTVBUWV9DT05URU5UX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgZW1wdHlDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHRyYWNrQnlGbiA9IChfOiBudW1iZXIsIHJlcG9ydDogUmVwb3J0Q29uZmlnTW9kZWwpID0+IHtcclxuICAgIHJldHVybiByZXBvcnQuaWQ7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmlsdGVyc01hcHBlcjogRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9uZGZSZXBvcnRzU2VydmljZTogTmRmUmVwb3J0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFydEhlbHBlclNlcnZpY2U6IENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2Zvcm1TZXJ2aWNlOiBSZXBvcnRUcmFuc2Zvcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2ZpbHRlclF1ZXJ5U2VydmljZTogRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RhdGVTZXJ2aWNlOiBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IFJlcG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgX3JlcG9ydHNIb29rc1NlcnZpY2U6IFJlcG9ydHNIb29rc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gcmVzLmxhbmcgPT09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBvcnRzRGF0YSQgPSB0aGlzLl9wcmVwYXJlUmVwb3J0cygpO1xyXG4gICAgdGhpcy5faGFuZGxlS2V5Ym9hcmRFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlclVwZGF0ZSA9ICgpID0+IHtcclxuICAgIHRoaXMuX3RyaWdnZXJGaWx0ZXJzU3ViLm5leHQodHJ1ZSk7XHJcbiAgfTtcclxuXHJcbiAgcmVzZXRGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5fcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpO1xyXG4gIH07XHJcblxyXG4gIGNhbGxMb2FkQ29uZGl0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZENvbmRpdGlvbiAmJiB0eXBlb2YgdGhpcy5sb2FkQ29uZGl0aW9uID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZENvbmRpdGlvbih0aGlzLmFjdGl2ZVF1ZXJ5KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgcmVwb3J0c0tleSA9IGNoYW5nZXMucmVwb3J0c0tleT8uY3VycmVudFZhbHVlO1xyXG4gICAgY29uc3QgY29uZmlnID0gY2hhbmdlcy5jb25maWc/LmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICBpZiAocmVwb3J0c0tleSAmJiBjb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdZb3UgY2Fubm90IHNldCBib3RoIHJlcG9ydHNLZXkgYW5kIHJlcG9ydHMgQ29uZmlnIGF0IHRoZSBzYW1lIHRpbWUuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5faW5pdFJlcG9ydHNDb25maWcoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0c0tleSkge1xyXG4gICAgICB0aGlzLl9sb2FkUmVwb3J0c0NvbmZpZyhyZXBvcnRzS2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTmF2aWdhdGUoZGF0YTogeyByZXBvcnQ6IFJlY29yZDxzdHJpbmcsIGFueT47IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gfSkge1xyXG4gICAgY29uc3QgcmVwb3J0ID0gZGF0YT8ucmVwb3J0O1xyXG4gICAgY29uc3QgX2N1c3RvbVJvdXRlID0gcmVwb3J0Lm5hdmlnYXRlPy5yb3V0ZSB8fCBbXTtcclxuICAgIC8vIGxldCByb3V0ZSA9IFtSTVNfQkFTRS5yZXBsYWNlKC9cXC8kLywgJycpXTtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMubmF2aWdhdGVSb3V0ZTtcclxuICAgIGlmICghIV9jdXN0b21Sb3V0ZS5sZW5ndGgpIHtcclxuICAgICAgcm91dGUgPSBbLi4ucm91dGUsIC4uLl9jdXN0b21Sb3V0ZV07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcclxuICAgIGlmIChyZXBvcnQubmF2aWdhdGU/LmluY2x1ZGVQYXJhbXMgPz8gdHJ1ZSkge1xyXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5hY3RpdmVRdWVyeSB8fCB7fSkubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlclF1ZXJ5U2VydmljZS5lbmNvZGVRdWVyeSh0aGlzLmFjdGl2ZVF1ZXJ5KTtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXNbJ2ZpbHRlcnMnXSA9IGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKHJvdXRlLCB7IHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyB9KS50aGVuKCgpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhbmVsKCkge1xyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gIXRoaXMuaXNQYW5lbE9wZW5lZDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFydEhlbHBlclNlcnZpY2UucmVzaXplQ2hhcnRzKCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgcHJpbnRBbGwoKSB7XHJcbiAgICB3aW5kb3cucHJpbnQoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckNoYW5nZWQgPSAoY3JpdGVyaWE6IFJlY29yZDxhbnksIGFueT4pID0+IHtcclxuICAgIGlmIChfLmlzRXF1YWwodGhpcy5hY3RpdmVRdWVyeSwgY3JpdGVyaWEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KGNyaXRlcmlhKTtcclxuICAgIGNvbnN0IF9kYXRlID0gdGhpcy5fcHJlcGFyZU1hcHBlZFF1ZXJ5KGNyaXRlcmlhLCB0aGlzLmZpbHRlcnNDb25maWcubW9kZSk7XHJcbiAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQoX2RhdGUpO1xyXG4gIH07XHJcblxyXG4gIG9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RhdGVTZXJ2aWNlLm9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZyk7XHJcblxyXG4gICAgaWYgKGlzU2Nyb2xsaW5nICYmICF0aGlzLl9pc0hlaWdodFVwZGF0ZWQpIHtcclxuICAgICAgdGhpcy5faXNIZWlnaHRVcGRhdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG4gICAgfSBlbHNlIGlmICghaXNTY3JvbGxpbmcgJiYgdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZsdWlkRGlyZWN0aXZlLnNjaGVkdWxlU2V0SGVpZ2h0KDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGV0YWlscyhcclxuICAgIGNyaXRlcmlhTW9kZWw6IENyaXRlcmlhTW9kZWwsXHJcbiAgICByZXBvcnRDb25maWc6IFJlcG9ydENvbmZpZ01vZGVsXHJcbiAgKSB7XHJcbiAgICBpZiAoIXJlcG9ydENvbmZpZz8uZGV0YWlscz8uZW5hYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5fZGV0YWlsc0ZpbHRlcnNTdWJqZWN0Lm5leHQocGFyYW1zKTtcclxuXHJcbiAgICB0aGlzLmlzUGFuZWxPcGVuZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHNvdXJjZSA9IHJlcG9ydENvbmZpZz8uZGV0YWlscz8uc291cmNlO1xyXG4gICAgY29uc3QgY29uZmlnJCA9XHJcbiAgICAgIHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJ1xyXG4gICAgICAgID8gdGhpcy5fY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0VGFibGVDb25maWd1cmF0aW9uKHNvdXJjZSkucGlwZShcclxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCEhZGF0YT8ub3B0aW9ucz8uZmlsdGVycz8uZmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gXy5tZXJnZShkYXRhLCB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IHByZXBhcmVOZGZUYWJsZUZpbHRlcnMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YT8ub3B0aW9ucz8uZmlsdGVycyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogb2YobWFwVG9OZGZUYWJsZUNvbmZpZyh0aGlzLmNvbmZpZywgcmVwb3J0Q29uZmlnLmRldGFpbHMpKTtcclxuXHJcbiAgICBjb25maWckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dCh7XHJcbiAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICBsYWJlbDogcmVwb3J0Q29uZmlnLmxhYmVsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEZXRhaWxzUGFuZWwoKSB7XHJcbiAgICB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxzQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgdGhpcy5pc0RldGFpbHNPcGVuZWQgPSBldmVudC50b1N0YXRlID09PSAnb3Blbic7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLl9jaGFydEhlbHBlclNlcnZpY2UuZGVzdHJveUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKFxyXG4gICAgY3JpdGVyaWE6IFJlY29yZDxhbnksIGFueT4sXHJcbiAgICBmaWVsZHM6IEZpZWxkQ29uZmlnTW9kZWxbXSA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHNcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKGZpZWxkcywgY3JpdGVyaWEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY3JpdGVyaWEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgYWNjW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZVJlcG9ydHMoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuZmlsdGVyc1BhcmFtcyQsXHJcbiAgICAgIHRoaXMucmVwb3J0Q29uZmlnJCxcclxuICAgICAgdGhpcy5fdHJpZ2dlckZpbHRlcnNTdWIsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKChbY3JpdGVyaWEsIGNvbmZpZ10pID0+IHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gY29uZmlnPy5yZXF1ZXN0O1xyXG4gICAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgX3BheWxvYWQgPSBjcml0ZXJpYTtcclxuICAgICAgICBpZiAoIWNyaXRlcmlhICYmICEhY29uZmlnLmFjdGl2ZVF1ZXJ5KSB7XHJcbiAgICAgICAgICBfcGF5bG9hZCA9IHRoaXMucHJlcGFyZUNyaXRlcmlhUGF5bG9hZChjb25maWcuYWN0aXZlUXVlcnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGF0YSQgPSBmcm9tKFxyXG4gICAgICAgICAgdGhpcy5fcmVwb3J0c0hvb2tzU2VydmljZS5leGVjdXRlQmVmb3JlU3VibWl0KHtcclxuICAgICAgICAgICAgLi4udGhpcy5fbmRmUmVwb3J0c1NlcnZpY2UucHJlcGFyZVJlcXVlc3QocmVxdWVzdCwgY3JpdGVyaWEpLFxyXG4gICAgICAgICAgICByZXF1ZXN0LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gdGhpcy5fbmRmUmVwb3J0c1NlcnZpY2UuZ2V0RGF0YShyZXF1ZXN0LCByZXMpKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVwb3J0czogQXBpUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtU2VydmljZS5wcmVwYXJlRGF0YShyZXBvcnRzLCBjb25maWcpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihbb2YoY29uZmlnKSwgZGF0YSRdKTtcclxuICAgICAgfSksXHJcbiAgICAgIG1hcCgoW2NvbmZpZywgcmVzcG9uc2VdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUFnZ3JlZ2F0aW9ucyhyZXNwb25zZT8uYWdncmVnYXRpb25zKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY29uZmlnLFxyXG4gICAgICAgICAgcmVzcG9uc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVLZXlib2FyZEV2ZW50KCkge1xyXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLnNob3dEZXRhaWxzXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZURldGFpbHNQYW5lbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlTWFwcGVkUXVlcnkoXHJcbiAgICBjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIG1vZGU6ICdwYXlsb2FkJyB8ICdwYXJhbXMnXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbW9kZSA9PSAncGF5bG9hZCdcclxuICAgICAgPyB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY3JpdGVyaWEpXHJcbiAgICAgIDoge1xyXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLl9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWEpLFxyXG4gICAgICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBY3RpdmVRdWVyeShxdWVyeTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5fYWN0aXZlUXVlcnlTdWIubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLmFjdGl2ZVF1ZXJ5LFxyXG4gICAgICBjdXJyZW50OiBxdWVyeSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViLm5leHQoe1xyXG4gICAgICBxdWVyeSxcclxuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucykge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVsb2FkU3RyYXRlZ3kgPSB0aGlzLmNvbmZpZz8uZmlsdGVycz8ucmVsb2FkPy5zdHJhdGVneTtcclxuXHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgJiYgcmVsb2FkU3RyYXRlZ3kgPT09ICduZXZlcicpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyAmJiByZWxvYWRTdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG4gICAgICBpZiAodGhpcy5fc2hvdWxkUmVsb2FkT25DaGFuZ2UoKSkge1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zKTtcclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvdWxkUmVsb2FkT25DaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8uc3RyYXRlZ3kgIT09ICdvbkNoYW5nZScpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyaWdnZXJGaWVsZHMgPSB0aGlzLmNvbmZpZz8uZmlsdGVycz8ucmVsb2FkPy50cmlnZ2VyRmllbGRzO1xyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0cmlnZ2VyRmllbGRzKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsaWRGaWVsZHMgPSB0cmlnZ2VyRmllbGRzLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGlmICghdmFsaWRGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLmdldFZhbHVlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudCB8fCB7fTtcclxuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXMgfHwge307XHJcblxyXG4gICAgY29uc3QgY2hhbmdlZEtleXMgPSB0aGlzLl9nZXRDaGFuZ2VkS2V5cyhwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpO1xyXG5cclxuICAgIHJldHVybiB2YWxpZEZpZWxkcy5zb21lKChmaWVsZCkgPT4gY2hhbmdlZEtleXMuaW5jbHVkZXMoZmllbGQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldENoYW5nZWRLZXlzKFxyXG4gICAgcHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgYWxsS2V5cyA9IF8udW5pb24oXy5rZXlzKHByZXZpb3VzKSwgXy5rZXlzKGN1cnJlbnQpKTtcclxuICAgIHJldHVybiBhbGxLZXlzLmZpbHRlcigoa2V5KSA9PiAhXy5pc0VxdWFsKHByZXZpb3VzW2tleV0sIGN1cnJlbnRba2V5XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9uczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IF8uY2xvbmVEZWVwKGFnZ3JlZ2F0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0NvbmZpZ0NoYW5nZSh2YWx1ZTogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgY29uc3QgeyBhY3RpdmVRdWVyeSwgLi4uY29uZmlnIH0gPSB2YWx1ZTtcclxuICAgIGNvbnN0IHsgYWN0aXZlUXVlcnk6IGFxLCAuLi5jdXJyZW50Q29uZmlnIH0gPVxyXG4gICAgICB0aGlzLl9jb25maWdTdWJqZWN0LmdldFZhbHVlKCkgfHwge307XHJcblxyXG4gICAgdGhpcy5faXNDb25maWdDaGFuZ2VkID0gIV8uaXNFcXVhbChjdXJyZW50Q29uZmlnLCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZFJlcG9ydHNDb25maWcoa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcbiAgICAgIC5nZXRSZXBvcnRzQ29uZmlndXJhdGlvbihrZXkpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5faW5pdFJlcG9ydHNDb25maWcoY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJlcG9ydHNDb25maWcoY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IF8uY2xvbmVEZWVwKGNvbmZpZyk7XHJcbiAgICB0aGlzLl9jaGVja0NvbmZpZ0NoYW5nZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9jb25maWdTdWJqZWN0Lm5leHQodmFsdWUpO1xyXG4gICAgaWYgKHZhbHVlPy5hY3RpdmVRdWVyeSAmJiAhIU9iamVjdC5rZXlzKHZhbHVlPy5hY3RpdmVRdWVyeSkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KHZhbHVlPy5hY3RpdmVRdWVyeSk7XHJcbiAgICAgIHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QubmV4dChcclxuICAgICAgICB0aGlzLl9wcmVwYXJlTWFwcGVkUXVlcnkodmFsdWU/LmFjdGl2ZVF1ZXJ5LCB0aGlzLmZpbHRlcnNDb25maWcubW9kZSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuYWN0aXZlUXVlcnkgfHwgT2JqZWN0LmtleXModGhpcy5hY3RpdmVRdWVyeSkubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5fcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gISFjb25maWc/LmZpbHRlcnMudmlzaWJsZTtcclxuICAgIHRoaXMuaXNEZXRhaWxzT3BlbmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpIHtcclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KHt9KTtcclxuICAgIHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRhaW5lclwiXHJcbiAgW2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG4gIFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuICBuZGZGbHVpZEhlaWdodFxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBsb2FkaW5nLXJlc3VsdFwiXHJcbiAgICAqbmdJZj1cImlzTG9hZGluZ1Jlc3VsdCAmJiBjYWxsTG9hZENvbmRpdGlvbigpXCJcclxuICA+XHJcbiAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJtdC01IG14LWF1dG9cIiBbZGlhbWV0ZXJdPVwiNDhcIj48L21hdC1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX3BhbmVsIHByaW50OmhpZGRlblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJQYW5lbFRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAkaW1wbGljaXQ6IGFnZ3JlZ2F0aW9ucyxcclxuICAgICAgICBmaWx0ZXJDaGFuZ2VkOiBmaWx0ZXJDaGFuZ2VkLFxyXG4gICAgICAgIGFjdGl2ZVF1ZXJ5OiBhY3RpdmVRdWVyeSxcclxuICAgICAgICB0cmlnZ2VyVXBkYXRlOiB0cmlnZ2VyVXBkYXRlLFxyXG4gICAgICAgIHJlc2V0OiByZXNldEZpbHRlcnMsXHJcbiAgICAgICAgY29uZmlnOiBjb25maWdcclxuICAgICAgfVwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGFwcC1maWx0ZXJzLXBhbmVsXHJcbiAgICAgICpuZ0lmPVwiISFmaWx0ZXJzQ29uZmlnPy5maWVsZHM/Lmxlbmd0aCAmJiBjYWxsTG9hZENvbmRpdGlvbigpXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnPy5maWVsZHNcIlxyXG4gICAgICBbYWdncmVnYXRpb25zXT1cImFnZ3JlZ2F0aW9uc1wiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cImZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG4gICAgICBjbGFzcz1cIm5kZi1yZXBvcnRzX19maWx0ZXJzXCJcclxuICAgICAgW2N1c3RvbVRlbXBsYXRlUmVmXT1cImZpbHRlckN1c3RvbVRlbXBsYXRlXCJcclxuICAgID48L2FwcC1maWx0ZXJzLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsbExvYWRDb25kaXRpb24oKTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fY29udGVudFwiXHJcbiAgICAgIChzY3JvbGxlZCk9XCJvbkNvbnRlbnRTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwicmVwb3J0c0RhdGEkIHwgYXN5bmMgYXMgcmVwb3J0c1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19faGVhZGVyIGZsZXggcHQtNCBwcmludDpoaWRkZW5cIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YXBwLWVkaXRvci1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwianNvbkVkaXRvckVuYWJsZWQgJiYgcmVwb3J0c0tleVwiXHJcbiAgICAgICAgICBba2V5XT1cInJlcG9ydHNLZXlcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiZWRpdG9yVHlwZVwiXHJcbiAgICAgICAgPjwvYXBwLWVkaXRvci1idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8ub3B0aW9ucz8ucHJpbnRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwcmludC1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInByaW50QWxsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj4gcHJpbnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXBvcnRzLWdyaWRcIiAqbmdJZj1cIiFpc0xvYWRpbmdSZXN1bHRcIj5cclxuICAgICAgICA8YXBwLW5kZi1yZXBvcnRcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb25maWcgb2YgcmVwb3J0Q29uZmlnLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICAgICAgW2RhdGFdPVwicmVwb3J0cz8ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgW2NyaXRlcmlhXT1cImZpbHRlcnNQYXJhbXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS13aWR0aF09XCJjb25maWc/LmxheW91dD8ud2lkdGggfHwgNFwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWhlaWdodF09XCJjb25maWc/LmxheW91dD8uaGVpZ2h0IHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXN0YXJ0LWNvbHVtbl09XCJjb25maWc/LmxheW91dD8uY29sdW1uUG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtc3RhcnQtcm93XT1cImNvbmZpZz8ubGF5b3V0Py5yb3dQb3NpdGlvbiB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgW2NsYXNzLndpZGVdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoID49IDZcIlxyXG4gICAgICAgICAgW3N0eWxlXT1cImNvbmZpZz8ubGF5b3V0Py5zdHlsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cInJlcG9ydHMtZ3JpZF9faXRlbSB7eyBjb25maWc/LmxheW91dD8uc3R5bGVDbGFzcyB9fSBcIlxyXG4gICAgICAgICAgKG9uTmF2aWdhdGUpPVwib25OYXZpZ2F0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChvbk9wZW4pPVwib3BlblJlcG9ydERldGFpbHMoJGV2ZW50LCBjb25maWcpXCJcclxuICAgICAgICA+PC9hcHAtbmRmLXJlcG9ydD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIm5kZi1yZXBvcnRzX19kZXRhaWxzIHByaW50OmhpZGRlblwiXHJcbiAgICBbY2xhc3Mub3BlbmVkXT1cInNob3dEZXRhaWxzXCJcclxuICAgIFtAc2xpZGVJbk91dF09XCJzaG93RGV0YWlscyA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAgIChAc2xpZGVJbk91dC5kb25lKT1cIm9uRGV0YWlsc0FuaW1hdGlvbkVuZCgkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8YXBwLW5kZi10YWJsZVxyXG4gICAgICAqbmdJZj1cInJlcG9ydERldGFpbHMkIHwgYXN5bmMgYXMgcmVwb3J0XCJcclxuICAgICAgW2NvbmZpZ109XCJyZXBvcnQuY29uZmlnXCJcclxuICAgICAgW2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZUZpbHRlcnNRdWVyeSQgfCBhc3luY1wiXHJcbiAgICAgIFtjdXN0b21Dcml0ZXJpYV09XCJkZXRhaWxzRmlsdGVyc1BhcmFtcyQgfCBhc3luY1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBzZWFyY2hUYWJsZVRlbXBsYXRlIGxldC10b2dnbGU9XCJ0b2dnbGVQYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlsc19faGVhZGVyIGZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+IGZpbHRlcl9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURldGFpbHNQYW5lbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPiBjbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aDM+XHJcbiAgICAgICAgICB7eyByZXBvcnQubGFiZWwgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9hcHAtbmRmLXRhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZW1wdHlDb250ZW50PlxyXG4gIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fY29udGVudCBmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0RW1wdHlDb250ZW50XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5Q29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibm8tZGF0YSBtdC0yNlwiPlxyXG4gICAge3sgJ25vRGF0YScgfCB0cmFuc2xhdGUgfX1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9jb250YWluZXJzL25kZi1yZXBvcnRzL25kZi1yZXBvcnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvY29udGFpbmVycy9uZGYtcmVwb3J0cy9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFFVCxFQUFFLEVBQ0YsYUFBYSxHQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FB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dGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQge1xyXG4gIEJlaGF2aW9yU3ViamVjdCxcclxuICBjb21iaW5lTGF0ZXN0LFxyXG4gIGZvcmtKb2luLFxyXG4gIGZyb20sXHJcbiAgZnJvbUV2ZW50LFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgUmVwbGF5U3ViamVjdCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBmaWx0ZXIsXHJcbiAgZmluYWxpemUsXHJcbiAgbWFwLFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YWtlVW50aWwsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QsIEZsdWlkSGVpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE5ERl9FRElUT1JfVFlQRSB9IGZyb20gJy4uLy4uLy4uLy4uL25kZi1jb25maWctZWRpdG9yL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgQWdncmVnYXRpb25SZXNwb25zZSxcclxuICBDVVNUT01fVEVNUExBVEUsXHJcbiAgRmllbGRDb25maWdNb2RlbCxcclxuICBGaWx0ZXJRdWVyeVNlcnZpY2UsXHJcbiAgRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcbiAgRm9ybVF1ZXJ5TW9kZWwsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWZpbHRlcnMnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL3RhYmxlcyc7XHJcbmltcG9ydCB7XHJcbiAgRU1QVFlfQ09OVEVOVF9URU1QTEFURSxcclxuICBIRUFERVJfUEFORUxfVEVNUExBVEUsXHJcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3JpdGVyaWFNb2RlbCxcclxuICBOZGZSZXBvcnRzQ29uZmlnLFxyXG4gIFJlcG9ydENvbmZpZ01vZGVsLFxyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhcnRNYW5hZ2VyU2VydmljZSxcclxuICBOZGZSZXBvcnRzU2VydmljZSxcclxuICBSZXBvcnRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICBSZXBvcnRzSG9va3NTZXJ2aWNlLFxyXG4gIFJlcG9ydHNTdGF0ZVNlcnZpY2UsXHJcbiAgUmVwb3J0VHJhbnNmb3JtU2VydmljZSxcclxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IG1hcFRvTmRmVGFibGVDb25maWcsIHByZXBhcmVOZGZUYWJsZUZpbHRlcnMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNsaWRlQW5pbWF0aW9uID0gdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuICBzdGF0ZShcclxuICAgICdjbG9zZWQnLFxyXG4gICAgc3R5bGUoe1xyXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHZhcigtLW5kZi1yZXBvcnRzLWRldGFpbHMtdHJhbnNsYXRlWCwgLTEwMCUpKScsXHJcbiAgICB9KVxyXG4gICksXHJcbiAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcclxuICB0cmFuc2l0aW9uKCdjbG9zZWQgPD0+IG9wZW4nLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKSxcclxuXSk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1uZGYtcmVwb3J0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25kZi1yZXBvcnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnbmRmLXJlcG9ydHMnLFxyXG4gICAgJ1tkaXJdJzogJ2RpcmVjdGlvbicsXHJcbiAgfSxcclxuICBhbmltYXRpb25zOiBbc2xpZGVBbmltYXRpb25dLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmUmVwb3J0c0NvbXBvbmVudFxyXG4gIGV4dGVuZHMgRGVzdHJveVN1YmplY3RcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcclxue1xyXG4gIEBWaWV3Q2hpbGQoRmx1aWRIZWlnaHREaXJlY3RpdmUpIGZsdWlkRGlyZWN0aXZlOiBGbHVpZEhlaWdodERpcmVjdGl2ZTtcclxuICBfaXNIZWlnaHRVcGRhdGVkID0gZmFsc2U7XHJcbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb24gPSAncnRsJztcclxuICBpc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nUmVzdWx0ID0gZmFsc2U7XHJcbiAgcmVwb3J0c0RhdGEkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgaXNFeHBhbmRlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVRdWVyeVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xyXG4gICAgcHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH0+KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVGaWx0ZXJzUXVlcnlTdWIgPSBuZXcgUmVwbGF5U3ViamVjdDxGb3JtUXVlcnlNb2RlbD4oKTtcclxuICByZWFkb25seSBhY3RpdmVGaWx0ZXJzUXVlcnkkID0gdGhpcy5fYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZGZSZXBvcnRzQ29uZmlnPihudWxsKTtcclxuICByZWFkb25seSByZXBvcnRDb25maWckID0gdGhpcy5fY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyc0NyaXRlcmlhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4oXHJcbiAgICBudWxsXHJcbiAgKTtcclxuICByZWFkb25seSBmaWx0ZXJzUGFyYW1zJCA9IHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyaWdnZXJGaWx0ZXJzU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsc0ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDcml0ZXJpYU1vZGVsPihcclxuICAgIG51bGxcclxuICApO1xyXG4gIHJlYWRvbmx5IGRldGFpbHNGaWx0ZXJzUGFyYW1zJCA9IHRoaXMuX2RldGFpbHNGaWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfcmVwb3J0RGV0YWlsc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgY29uZmlnOiBOZGZUYWJsZUNvbmZpZztcclxuICB9PihudWxsKTtcclxuXHJcbiAgZ2V0IGFjdGl2ZVF1ZXJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLmdldFZhbHVlKCk/LmN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICByZXBvcnREZXRhaWxzJCA9IHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFnZ3JlZ2F0aW9uUmVzcG9uc2U+O1xyXG5cclxuICBnZXQgc2hvd0RldGFpbHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNEZXRhaWxzT3BlbmVkID0gZmFsc2U7XHJcblxyXG4gIGdldCBmaWx0ZXJzQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5maWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcG9ydENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ucmVwb3J0cztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVwb3J0c0tleTogc3RyaW5nO1xyXG4gIGVkaXRvclR5cGUgPSBOREZfRURJVE9SX1RZUEUuUkVQT1JUUztcclxuXHJcbiAgQElucHV0KCkgbmF2aWdhdGVSb3V0ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgbG9hZENvbmRpdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIF9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXQgY29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvblF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAQ29udGVudENoaWxkKENVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoSEVBREVSX1BBTkVMX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgaGVhZGVyUGFuZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChFTVBUWV9DT05URU5UX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgZW1wdHlDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHRyYWNrQnlGbiA9IChfOiBudW1iZXIsIHJlcG9ydDogUmVwb3J0Q29uZmlnTW9kZWwpID0+IHtcclxuICAgIHJldHVybiByZXBvcnQuaWQ7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmlsdGVyc01hcHBlcjogRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9uZGZSZXBvcnRzU2VydmljZTogTmRmUmVwb3J0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFydEhlbHBlclNlcnZpY2U6IENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2Zvcm1TZXJ2aWNlOiBSZXBvcnRUcmFuc2Zvcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2ZpbHRlclF1ZXJ5U2VydmljZTogRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RhdGVTZXJ2aWNlOiBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IFJlcG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgX3JlcG9ydHNIb29rc1NlcnZpY2U6IFJlcG9ydHNIb29rc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gcmVzLmxhbmcgPT09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBvcnRzRGF0YSQgPSB0aGlzLl9wcmVwYXJlUmVwb3J0cygpO1xyXG4gICAgdGhpcy5faGFuZGxlS2V5Ym9hcmRFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlclVwZGF0ZSA9ICgpID0+IHtcclxuICAgIHRoaXMuX3RyaWdnZXJGaWx0ZXJzU3ViLm5leHQodHJ1ZSk7XHJcbiAgfTtcclxuXHJcbiAgcmVzZXRGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5fcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpO1xyXG4gIH07XHJcblxyXG4gIGNhbGxMb2FkQ29uZGl0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZENvbmRpdGlvbiAmJiB0eXBlb2YgdGhpcy5sb2FkQ29uZGl0aW9uID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZENvbmRpdGlvbih0aGlzLmFjdGl2ZVF1ZXJ5KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgcmVwb3J0c0tleSA9IGNoYW5nZXMucmVwb3J0c0tleT8uY3VycmVudFZhbHVlO1xyXG4gICAgY29uc3QgY29uZmlnID0gY2hhbmdlcy5jb25maWc/LmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICBpZiAocmVwb3J0c0tleSAmJiBjb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdZb3UgY2Fubm90IHNldCBib3RoIHJlcG9ydHNLZXkgYW5kIHJlcG9ydHMgQ29uZmlnIGF0IHRoZSBzYW1lIHRpbWUuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5faW5pdFJlcG9ydHNDb25maWcoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0c0tleSkge1xyXG4gICAgICB0aGlzLl9sb2FkUmVwb3J0c0NvbmZpZyhyZXBvcnRzS2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTmF2aWdhdGUoZGF0YTogeyByZXBvcnQ6IFJlY29yZDxzdHJpbmcsIGFueT47IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gfSkge1xyXG4gICAgY29uc3QgcmVwb3J0ID0gZGF0YT8ucmVwb3J0O1xyXG4gICAgY29uc3QgX2N1c3RvbVJvdXRlID0gcmVwb3J0Lm5hdmlnYXRlPy5yb3V0ZSB8fCBbXTtcclxuICAgIC8vIGxldCByb3V0ZSA9IFtSTVNfQkFTRS5yZXBsYWNlKC9cXC8kLywgJycpXTtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMubmF2aWdhdGVSb3V0ZTtcclxuICAgIGlmICghIV9jdXN0b21Sb3V0ZS5sZW5ndGgpIHtcclxuICAgICAgcm91dGUgPSBbLi4ucm91dGUsIC4uLl9jdXN0b21Sb3V0ZV07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcclxuICAgIGlmIChyZXBvcnQubmF2aWdhdGU/LmluY2x1ZGVQYXJhbXMgPz8gdHJ1ZSkge1xyXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5hY3RpdmVRdWVyeSB8fCB7fSkubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlclF1ZXJ5U2VydmljZS5lbmNvZGVRdWVyeSh0aGlzLmFjdGl2ZVF1ZXJ5KTtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXNbJ2ZpbHRlcnMnXSA9IGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKHJvdXRlLCB7IHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyB9KS50aGVuKCgpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhbmVsKCkge1xyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gIXRoaXMuaXNQYW5lbE9wZW5lZDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFydEhlbHBlclNlcnZpY2UucmVzaXplQ2hhcnRzKCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgcHJpbnRBbGwoKSB7XHJcbiAgICB3aW5kb3cucHJpbnQoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckNoYW5nZWQgPSAoY3JpdGVyaWE6IFJlY29yZDxhbnksIGFueT4pID0+IHtcclxuICAgIGlmIChfLmlzRXF1YWwodGhpcy5hY3RpdmVRdWVyeSwgY3JpdGVyaWEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KGNyaXRlcmlhKTtcclxuICAgIGNvbnN0IF9kYXRlID0gdGhpcy5fcHJlcGFyZU1hcHBlZFF1ZXJ5KGNyaXRlcmlhLCB0aGlzLmZpbHRlcnNDb25maWcubW9kZSk7XHJcbiAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQoX2RhdGUpO1xyXG4gIH07XHJcblxyXG4gIG9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RhdGVTZXJ2aWNlLm9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZyk7XHJcblxyXG4gICAgaWYgKGlzU2Nyb2xsaW5nICYmICF0aGlzLl9pc0hlaWdodFVwZGF0ZWQpIHtcclxuICAgICAgdGhpcy5faXNIZWlnaHRVcGRhdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG4gICAgfSBlbHNlIGlmICghaXNTY3JvbGxpbmcgJiYgdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZsdWlkRGlyZWN0aXZlLnNjaGVkdWxlU2V0SGVpZ2h0KDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGV0YWlscyhcclxuICAgIGNyaXRlcmlhTW9kZWw6IENyaXRlcmlhTW9kZWwsXHJcbiAgICByZXBvcnRDb25maWc6IFJlcG9ydENvbmZpZ01vZGVsXHJcbiAgKSB7XHJcbiAgICBpZiAoIXJlcG9ydENvbmZpZz8uZGV0YWlscz8uZW5hYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5fZGV0YWlsc0ZpbHRlcnNTdWJqZWN0Lm5leHQocGFyYW1zKTtcclxuXHJcbiAgICB0aGlzLmlzUGFuZWxPcGVuZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHNvdXJjZSA9IHJlcG9ydENvbmZpZz8uZGV0YWlscz8uc291cmNlO1xyXG4gICAgY29uc3QgY29uZmlnJCA9XHJcbiAgICAgIHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJ1xyXG4gICAgICAgID8gdGhpcy5fY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0VGFibGVDb25maWd1cmF0aW9uKHNvdXJjZSkucGlwZShcclxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCEhZGF0YT8ub3B0aW9ucz8uZmlsdGVycz8uZmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gXy5tZXJnZShkYXRhLCB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IHByZXBhcmVOZGZUYWJsZUZpbHRlcnMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YT8ub3B0aW9ucz8uZmlsdGVycyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogb2YobWFwVG9OZGZUYWJsZUNvbmZpZyh0aGlzLmNvbmZpZywgcmVwb3J0Q29uZmlnLmRldGFpbHMpKTtcclxuXHJcbiAgICBjb25maWckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dCh7XHJcbiAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICBsYWJlbDogcmVwb3J0Q29uZmlnLmxhYmVsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEZXRhaWxzUGFuZWwoKSB7XHJcbiAgICB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxzQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgdGhpcy5pc0RldGFpbHNPcGVuZWQgPSBldmVudC50b1N0YXRlID09PSAnb3Blbic7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLl9jaGFydEhlbHBlclNlcnZpY2UuZGVzdHJveUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKFxyXG4gICAgY3JpdGVyaWE6IFJlY29yZDxhbnksIGFueT4sXHJcbiAgICBmaWVsZHM6IEZpZWxkQ29uZmlnTW9kZWxbXSA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHNcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKGZpZWxkcywgY3JpdGVyaWEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY3JpdGVyaWEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgYWNjW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZVJlcG9ydHMoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuZmlsdGVyc1BhcmFtcyQsXHJcbiAgICAgIHRoaXMucmVwb3J0Q29uZmlnJCxcclxuICAgICAgdGhpcy5fdHJpZ2dlckZpbHRlcnNTdWIsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKChbY3JpdGVyaWEsIGNvbmZpZ10pID0+IHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gY29uZmlnPy5yZXF1ZXN0O1xyXG4gICAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgX3BheWxvYWQgPSBjcml0ZXJpYTtcclxuICAgICAgICBpZiAoIWNyaXRlcmlhICYmICEhY29uZmlnLmFjdGl2ZVF1ZXJ5KSB7XHJcbiAgICAgICAgICBfcGF5bG9hZCA9IHRoaXMucHJlcGFyZUNyaXRlcmlhUGF5bG9hZChjb25maWcuYWN0aXZlUXVlcnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGF0YSQgPSBmcm9tKFxyXG4gICAgICAgICAgdGhpcy5fcmVwb3J0c0hvb2tzU2VydmljZS5leGVjdXRlQmVmb3JlU3VibWl0KHtcclxuICAgICAgICAgICAgLi4udGhpcy5fbmRmUmVwb3J0c1NlcnZpY2UucHJlcGFyZVJlcXVlc3QocmVxdWVzdCwgY3JpdGVyaWEpLFxyXG4gICAgICAgICAgICByZXF1ZXN0LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gdGhpcy5fbmRmUmVwb3J0c1NlcnZpY2UuZ2V0RGF0YShyZXF1ZXN0LCByZXMpKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVwb3J0czogQXBpUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtU2VydmljZS5wcmVwYXJlRGF0YShyZXBvcnRzLCBjb25maWcpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihbb2YoY29uZmlnKSwgZGF0YSRdKTtcclxuICAgICAgfSksXHJcbiAgICAgIG1hcCgoW2NvbmZpZywgcmVzcG9uc2VdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUFnZ3JlZ2F0aW9ucyhyZXNwb25zZT8uYWdncmVnYXRpb25zKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY29uZmlnLFxyXG4gICAgICAgICAgcmVzcG9uc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVLZXlib2FyZEV2ZW50KCkge1xyXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLnNob3dEZXRhaWxzXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZURldGFpbHNQYW5lbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlTWFwcGVkUXVlcnkoXHJcbiAgICBjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIG1vZGU6ICdwYXlsb2FkJyB8ICdwYXJhbXMnXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbW9kZSA9PSAncGF5bG9hZCdcclxuICAgICAgPyB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY3JpdGVyaWEpXHJcbiAgICAgIDoge1xyXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLl9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWEpLFxyXG4gICAgICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBY3RpdmVRdWVyeShxdWVyeTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5fYWN0aXZlUXVlcnlTdWIubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLmFjdGl2ZVF1ZXJ5LFxyXG4gICAgICBjdXJyZW50OiBxdWVyeSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViLm5leHQoe1xyXG4gICAgICBxdWVyeSxcclxuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucykge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVsb2FkU3RyYXRlZ3kgPSB0aGlzLmNvbmZpZz8uZmlsdGVycz8ucmVsb2FkPy5zdHJhdGVneTtcclxuXHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgJiYgcmVsb2FkU3RyYXRlZ3kgPT09ICduZXZlcicpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyAmJiByZWxvYWRTdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG4gICAgICBpZiAodGhpcy5fc2hvdWxkUmVsb2FkT25DaGFuZ2UoKSkge1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zKTtcclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvdWxkUmVsb2FkT25DaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8uc3RyYXRlZ3kgIT09ICdvbkNoYW5nZScpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyaWdnZXJGaWVsZHMgPSB0aGlzLmNvbmZpZz8uZmlsdGVycz8ucmVsb2FkPy50cmlnZ2VyRmllbGRzO1xyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0cmlnZ2VyRmllbGRzKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsaWRGaWVsZHMgPSB0cmlnZ2VyRmllbGRzLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGlmICghdmFsaWRGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLmdldFZhbHVlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudCB8fCB7fTtcclxuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXMgfHwge307XHJcblxyXG4gICAgY29uc3QgY2hhbmdlZEtleXMgPSB0aGlzLl9nZXRDaGFuZ2VkS2V5cyhwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpO1xyXG5cclxuICAgIHJldHVybiB2YWxpZEZpZWxkcy5zb21lKChmaWVsZCkgPT4gY2hhbmdlZEtleXMuaW5jbHVkZXMoZmllbGQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldENoYW5nZWRLZXlzKFxyXG4gICAgcHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgYWxsS2V5cyA9IF8udW5pb24oXy5rZXlzKHByZXZpb3VzKSwgXy5rZXlzKGN1cnJlbnQpKTtcclxuICAgIHJldHVybiBhbGxLZXlzLmZpbHRlcigoa2V5KSA9PiAhXy5pc0VxdWFsKHByZXZpb3VzW2tleV0sIGN1cnJlbnRba2V5XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9uczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IF8uY2xvbmVEZWVwKGFnZ3JlZ2F0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0NvbmZpZ0NoYW5nZSh2YWx1ZTogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgY29uc3QgeyBhY3RpdmVRdWVyeSwgLi4uY29uZmlnIH0gPSB2YWx1ZTtcclxuICAgIGNvbnN0IHsgYWN0aXZlUXVlcnk6IGFxLCAuLi5jdXJyZW50Q29uZmlnIH0gPVxyXG4gICAgICB0aGlzLl9jb25maWdTdWJqZWN0LmdldFZhbHVlKCkgfHwge307XHJcblxyXG4gICAgdGhpcy5faXNDb25maWdDaGFuZ2VkID0gIV8uaXNFcXVhbChjdXJyZW50Q29uZmlnLCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZFJlcG9ydHNDb25maWcoa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcbiAgICAgIC5nZXRSZXBvcnRzQ29uZmlndXJhdGlvbihrZXkpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5faW5pdFJlcG9ydHNDb25maWcoY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJlcG9ydHNDb25maWcoY29uZmlnOiBOZGZSZXBvcnRzQ29uZmlnKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IF8uY2xvbmVEZWVwKGNvbmZpZyk7XHJcbiAgICB0aGlzLl9jaGVja0NvbmZpZ0NoYW5nZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9jb25maWdTdWJqZWN0Lm5leHQodmFsdWUpO1xyXG4gICAgaWYgKHZhbHVlPy5hY3RpdmVRdWVyeSAmJiAhIU9iamVjdC5rZXlzKHZhbHVlPy5hY3RpdmVRdWVyeSkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KHZhbHVlPy5hY3RpdmVRdWVyeSk7XHJcbiAgICAgIHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QubmV4dChcclxuICAgICAgICB0aGlzLl9wcmVwYXJlTWFwcGVkUXVlcnkodmFsdWU/LmFjdGl2ZVF1ZXJ5LCB0aGlzLmZpbHRlcnNDb25maWcubW9kZSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuYWN0aXZlUXVlcnkgfHwgT2JqZWN0LmtleXModGhpcy5hY3RpdmVRdWVyeSkubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5fcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gISFjb25maWc/LmZpbHRlcnMudmlzaWJsZTtcclxuICAgIHRoaXMuaXNEZXRhaWxzT3BlbmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRRdWVyeUFuZEZpbHRlcnNDcml0ZXJpYSgpIHtcclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZVF1ZXJ5KHt9KTtcclxuICAgIHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRhaW5lclwiXHJcbiAgW2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG4gIFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuICBuZGZGbHVpZEhlaWdodFxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBsb2FkaW5nLXJlc3VsdFwiXHJcbiAgICAqbmdJZj1cImlzTG9hZGluZ1Jlc3VsdCAmJiBjYWxsTG9hZENvbmRpdGlvbigpXCJcclxuICA+XHJcbiAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJtdC01IG14LWF1dG9cIiBbZGlhbWV0ZXJdPVwiNDhcIj48L21hdC1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX3BhbmVsIHByaW50OmhpZGRlblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJQYW5lbFRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAkaW1wbGljaXQ6IGFnZ3JlZ2F0aW9ucyxcclxuICAgICAgICBmaWx0ZXJDaGFuZ2VkOiBmaWx0ZXJDaGFuZ2VkLFxyXG4gICAgICAgIGFjdGl2ZVF1ZXJ5OiBhY3RpdmVRdWVyeSxcclxuICAgICAgICB0cmlnZ2VyVXBkYXRlOiB0cmlnZ2VyVXBkYXRlLFxyXG4gICAgICAgIHJlc2V0OiByZXNldEZpbHRlcnMsXHJcbiAgICAgICAgY29uZmlnOiBjb25maWdcclxuICAgICAgfVwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGFwcC1maWx0ZXJzLXBhbmVsXHJcbiAgICAgICpuZ0lmPVwiISFmaWx0ZXJzQ29uZmlnPy5maWVsZHM/Lmxlbmd0aCAmJiBjYWxsTG9hZENvbmRpdGlvbigpXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnPy5maWVsZHNcIlxyXG4gICAgICBbYWdncmVnYXRpb25zXT1cImFnZ3JlZ2F0aW9uc1wiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cImZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG4gICAgICBjbGFzcz1cIm5kZi1yZXBvcnRzX19maWx0ZXJzXCJcclxuICAgICAgW2N1c3RvbVRlbXBsYXRlUmVmXT1cImZpbHRlckN1c3RvbVRlbXBsYXRlXCJcclxuICAgID48L2FwcC1maWx0ZXJzLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsbExvYWRDb25kaXRpb24oKTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fY29udGVudFwiXHJcbiAgICAgIChzY3JvbGxlZCk9XCJvbkNvbnRlbnRTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwicmVwb3J0c0RhdGEkIHwgYXN5bmMgYXMgcmVwb3J0c1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19faGVhZGVyIGZsZXggcHQtNCBwcmludDpoaWRkZW5cIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YXBwLWVkaXRvci1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwianNvbkVkaXRvckVuYWJsZWQgJiYgcmVwb3J0c0tleVwiXHJcbiAgICAgICAgICBba2V5XT1cInJlcG9ydHNLZXlcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiZWRpdG9yVHlwZVwiXHJcbiAgICAgICAgPjwvYXBwLWVkaXRvci1idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8ub3B0aW9ucz8ucHJpbnRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwcmludC1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInByaW50QWxsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj4gcHJpbnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXBvcnRzLWdyaWRcIiAqbmdJZj1cIiFpc0xvYWRpbmdSZXN1bHRcIj5cclxuICAgICAgICA8YXBwLW5kZi1yZXBvcnRcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb25maWcgb2YgcmVwb3J0Q29uZmlnLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICAgICAgW2RhdGFdPVwicmVwb3J0cz8ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgW2NyaXRlcmlhXT1cImZpbHRlcnNQYXJhbXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS13aWR0aF09XCJjb25maWc/LmxheW91dD8ud2lkdGggfHwgNFwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWhlaWdodF09XCJjb25maWc/LmxheW91dD8uaGVpZ2h0IHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXN0YXJ0LWNvbHVtbl09XCJjb25maWc/LmxheW91dD8uY29sdW1uUG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtc3RhcnQtcm93XT1cImNvbmZpZz8ubGF5b3V0Py5yb3dQb3NpdGlvbiB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgW2NsYXNzLndpZGVdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoID49IDZcIlxyXG4gICAgICAgICAgW3N0eWxlXT1cImNvbmZpZz8ubGF5b3V0Py5zdHlsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cInJlcG9ydHMtZ3JpZF9faXRlbSB7eyBjb25maWc/LmxheW91dD8uc3R5bGVDbGFzcyB9fSBcIlxyXG4gICAgICAgICAgKG9uTmF2aWdhdGUpPVwib25OYXZpZ2F0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChvbk9wZW4pPVwib3BlblJlcG9ydERldGFpbHMoJGV2ZW50LCBjb25maWcpXCJcclxuICAgICAgICA+PC9hcHAtbmRmLXJlcG9ydD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIm5kZi1yZXBvcnRzX19kZXRhaWxzIHByaW50OmhpZGRlblwiXHJcbiAgICBbY2xhc3Mub3BlbmVkXT1cInNob3dEZXRhaWxzXCJcclxuICAgIFtAc2xpZGVJbk91dF09XCJzaG93RGV0YWlscyA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAgIChAc2xpZGVJbk91dC5kb25lKT1cIm9uRGV0YWlsc0FuaW1hdGlvbkVuZCgkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8YXBwLW5kZi10YWJsZVxyXG4gICAgICAqbmdJZj1cInJlcG9ydERldGFpbHMkIHwgYXN5bmMgYXMgcmVwb3J0XCJcclxuICAgICAgW2NvbmZpZ109XCJyZXBvcnQuY29uZmlnXCJcclxuICAgICAgW2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZUZpbHRlcnNRdWVyeSQgfCBhc3luY1wiXHJcbiAgICAgIFtjdXN0b21Dcml0ZXJpYV09XCJkZXRhaWxzRmlsdGVyc1BhcmFtcyQgfCBhc3luY1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBzZWFyY2hUYWJsZVRlbXBsYXRlIGxldC10b2dnbGU9XCJ0b2dnbGVQYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlsc19faGVhZGVyIGZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+IGZpbHRlcl9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURldGFpbHNQYW5lbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPiBjbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aDM+XHJcbiAgICAgICAgICB7eyByZXBvcnQubGFiZWwgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9hcHAtbmRmLXRhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZW1wdHlDb250ZW50PlxyXG4gIDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fY29udGVudCBmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0RW1wdHlDb250ZW50XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5Q29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibm8tZGF0YSBtdC0yNlwiPlxyXG4gICAge3sgJ25vRGF0YScgfCB0cmFuc2xhdGUgfX1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
25
25
  ],
26
26
  }]
27
27
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2RpcmVjdGl2ZXMvZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUNqQyxJQUFJLGNBQWMsQ0FDaEIsK0JBQStCLENBQ2hDLENBQUM7QUFXSixNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQzs7MkhBRHRDLDZCQUE2QjsrR0FBN0IsNkJBQTZCLGlEQVA3QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixXQUFXLEVBQUUsNkJBQTZCO1NBQzNDO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQVR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixXQUFXLCtCQUErQjt5QkFDM0M7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ09OVEVOVF9URU1QTEFURSA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZT4oXG4gICAgJ0VtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlJ1xuICApO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZW1wdHlDb250ZW50VGVtcGxhdGVdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRU1QVFlfQ09OVEVOVF9URU1QTEFURSxcbiAgICAgIHVzZUV4aXN0aW5nOiBFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2RpcmVjdGl2ZXMvZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUNqQyxJQUFJLGNBQWMsQ0FDaEIsK0JBQStCLENBQ2hDLENBQUM7QUFXSixNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQzs7MkhBRHRDLDZCQUE2QjsrR0FBN0IsNkJBQTZCLGlEQVA3QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixXQUFXLEVBQUUsNkJBQTZCO1NBQzNDO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQVR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixXQUFXLCtCQUErQjt5QkFDM0M7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVNUFRZX0NPTlRFTlRfVEVNUExBVEUgPVxyXG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZT4oXHJcbiAgICAnRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUnXHJcbiAgKTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2VtcHR5Q29udGVudFRlbXBsYXRlXScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEVNUFRZX0NPTlRFTlRfVEVNUExBVEUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XHJcbn1cclxuIl19
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
25
25
  ],
26
26
  }]
27
27
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXBhbmVsLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvZGlyZWN0aXZlcy9oZWFkZXItcGFuZWwtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUV2RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FDaEMsSUFBSSxjQUFjLENBQ2hCLDhCQUE4QixDQUMvQixDQUFDO0FBV0osTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7OzBIQUR0Qyw0QkFBNEI7OEdBQTVCLDRCQUE0QixnREFQNUI7UUFDVDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsV0FBVyxFQUFFLDRCQUE0QjtTQUMxQztLQUNGOzRGQUVVLDRCQUE0QjtrQkFUeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9QQU5FTF9URU1QTEFURSA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxIZWFkZXJQYW5lbFRlbXBsYXRlRGlyZWN0aXZlPihcbiAgICAnSGVhZGVyUGFuZWxUZW1wbGF0ZURpcmVjdGl2ZSdcbiAgKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2hlYWRlclBhbmVsVGVtcGxhdGVdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSEVBREVSX1BBTkVMX1RFTVBMQVRFLFxuICAgICAgdXNlRXhpc3Rpbmc6IEhlYWRlclBhbmVsVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyUGFuZWxUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXBhbmVsLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvZGlyZWN0aXZlcy9oZWFkZXItcGFuZWwtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUV2RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FDaEMsSUFBSSxjQUFjLENBQ2hCLDhCQUE4QixDQUMvQixDQUFDO0FBV0osTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7OzBIQUR0Qyw0QkFBNEI7OEdBQTVCLDRCQUE0QixnREFQNUI7UUFDVDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsV0FBVyxFQUFFLDRCQUE0QjtTQUMxQztLQUNGOzRGQUVVLDRCQUE0QjtrQkFUeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBIRUFERVJfUEFORUxfVEVNUExBVEUgPVxyXG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxIZWFkZXJQYW5lbFRlbXBsYXRlRGlyZWN0aXZlPihcclxuICAgICdIZWFkZXJQYW5lbFRlbXBsYXRlRGlyZWN0aXZlJ1xyXG4gICk7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1toZWFkZXJQYW5lbFRlbXBsYXRlXScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhFQURFUl9QQU5FTF9URU1QTEFURSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEhlYWRlclBhbmVsVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJQYW5lbFRlbXBsYXRlRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XHJcbn1cclxuIl19