ca-components 1.6.41 → 1.6.42

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.
@@ -269,7 +269,7 @@ export class CaUploadDropzoneComponent {
269
269
  ?.dropZoneType] || 'FILE IMPORT FAILED';
270
270
  }
271
271
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaUploadDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
272
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaUploadDropzoneComponent, isStandalone: true, selector: "app-ca-upload-dropzone", inputs: { dropZoneConfig: "dropZoneConfig", isDropzoneShownInCrop: "isDropzoneShownInCrop", customWidth: "customWidth", files: "files" }, outputs: { onFileEvent: "onFileEvent", onDropBackground: "onDropBackground", closeDropzone: "closeDropzone" }, host: { listeners: { "window:paste": "handlePaste($event)", "body:dragleave": "onDragLeaveWindows($event)", "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "window:dragenter": "onWindowDragEnter($event)", "window:drop": "onWindowDrop($event)", "click": "triggerFileInput($event)" } }, providers: [
272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaUploadDropzoneComponent, isStandalone: true, selector: "app-ca-upload-dropzone", inputs: { dropZoneConfig: "dropZoneConfig", isDropzoneShownInCrop: "isDropzoneShownInCrop", customWidth: "customWidth", files: "files" }, outputs: { onFileEvent: "onFileEvent", onDropBackground: "onDropBackground", closeDropzone: "closeDropzone" }, host: { listeners: { "body:dragleave": "onDragLeaveWindows($event)", "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "window:dragenter": "onWindowDragEnter($event)", "window:drop": "onWindowDrop($event)", "click": "triggerFileInput($event)" } }, providers: [
273
273
  provideLottieOptions({
274
274
  player: () => import('lottie-web'),
275
275
  }),
@@ -289,9 +289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
289
289
  provideLottieOptions({
290
290
  player: () => import('lottie-web'),
291
291
  }),
292
- ], encapsulation: ViewEncapsulation.None, host: {
293
- '(window:paste)': 'handlePaste($event)',
294
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n <!-- @for (item of _dropZoneConfigArray; track $index) { -->\n @if (_dropZoneConfig) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(_dropZoneConfig.template);\n context: { $implicit: _dropZoneConfig?.config }\n \"\n ></ng-container>\n </div>\n }\n <!-- } -->\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n @if (isMaxCountReached()) {\n MAX COUNT REACHED\n } @else {\n <ng-container *ngTemplateOutlet=\"normalText\"> </ng-container>\n }\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n @if (_dropZoneConfig?.template === 'mediaTemplate') {\n <p class=\"media-sizes\">max file size 50mb</p>\n }\n </p>\n @if (!isDropzoneExpanded) {\n <span class=\"upload-dropzone-text-small\">\n @if (isMaxCountReached()) {\n {{ files.length }} FILES IMPORTED\n } @else {\n <ng-container *ngTemplateOutlet=\"formatText\">\n </ng-container>\n }\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n }\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n @if (!isSupportedType && !isFileDrop) {\n <svg-icon\n [src]=\"iconSrc\"\n [ngClass]=\"files.length < 2 ? 'svgIcon-document' : 'svg-small'\"\n >\n </svg-icon>\n } @else {\n <svg-icon\n [src]=\"dropzoneSvgRoute\"\n class=\"cancel-unsupported-zone\"\n (click)=\"resetDropzoneView($event)\"\n >\n </svg-icon>\n }\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n @for (extension of dropZoneAvailableFiles; track $index) {\n <span\n class=\"extension extension-{{\n extension | mimeTypeToExtension\n }} \n d-flex justify-content-center align-items-center\"\n >\n {{ extension | mimeTypeToExtension }}\n </span>\n }\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.dropzone-container{width:100%;height:178px;border:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"] }]
292
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n <!-- @for (item of _dropZoneConfigArray; track $index) { -->\n @if (_dropZoneConfig) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(_dropZoneConfig.template);\n context: { $implicit: _dropZoneConfig?.config }\n \"\n ></ng-container>\n </div>\n }\n <!-- } -->\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n @if (isMaxCountReached()) {\n MAX COUNT REACHED\n } @else {\n <ng-container *ngTemplateOutlet=\"normalText\"> </ng-container>\n }\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n @if (_dropZoneConfig?.template === 'mediaTemplate') {\n <p class=\"media-sizes\">max file size 50mb</p>\n }\n </p>\n @if (!isDropzoneExpanded) {\n <span class=\"upload-dropzone-text-small\">\n @if (isMaxCountReached()) {\n {{ files.length }} FILES IMPORTED\n } @else {\n <ng-container *ngTemplateOutlet=\"formatText\">\n </ng-container>\n }\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n }\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n @if (!isSupportedType && !isFileDrop) {\n <svg-icon\n [src]=\"iconSrc\"\n [ngClass]=\"files.length < 2 ? 'svgIcon-document' : 'svg-small'\"\n >\n </svg-icon>\n } @else {\n <svg-icon\n [src]=\"dropzoneSvgRoute\"\n class=\"cancel-unsupported-zone\"\n (click)=\"resetDropzoneView($event)\"\n >\n </svg-icon>\n }\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n @for (extension of dropZoneAvailableFiles; track $index) {\n <span\n class=\"extension extension-{{\n extension | mimeTypeToExtension\n }} \n d-flex justify-content-center align-items-center\"\n >\n {{ extension | mimeTypeToExtension }}\n </span>\n }\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.dropzone-container{width:100%;height:178px;border:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"] }]
295
293
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { templateRef: [{
296
294
  type: ViewChildren,
297
295
  args: [TemplateContainerDirective]
@@ -334,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
334
332
  type: HostListener,
335
333
  args: ['click', ['$event']]
336
334
  }] } });
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWRyb3B6b25lL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVNuRSxXQUFXO0FBQ1gsT0FBTyxFQUNILHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFN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QkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNO2dCQUdHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQWtCQSxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY25DLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0J6QixVQUFVO3NCQURoQixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQjdCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9COUIsaUJBQWlCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVCckMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWWhDLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvdHRpZUNvbXBvbmVudCwgcHJvdmlkZUxvdHRpZU9wdGlvbnMgfSBmcm9tICduZ3gtbG90dGllJztcblxuLy9JbnRlcmZhY2VzXG5pbXBvcnQge1xuICAgIElEcm9wQmFja2dyb3VuZEV2ZW50LFxuICAgIElEcm9wWm9uZUNvbmZpZyxcbiAgICBJRmlsZUNvbmZpZyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuLy9Db25zdGFudHNcbmltcG9ydCB7XG4gICAgRmlsZUFuaW1hdGlvbkNvbnN0YW50cyxcbiAgICBGaWxlSWNvbnNDb25zdGFudHMsXG4gICAgRmlsZUxpbWl0Q29uc3RhbnRzLFxuICAgIEZpbGVNaW1lVHlwZUNvbnN0YW50cyxcbiAgICBMb3R0aWVBbmltYXRpb25Db25zdGFudHMsXG59IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJztcblxuLy9FbnVtXG5pbXBvcnQge1xuICAgIGVGaWxlRHJvcFpvbmVBY3Rpb24sXG4gICAgZURyb3Bab25lRmlsZVR5cGUsXG4gICAgZUZpbGVVcGxvYWRQYWdlLFxuICAgIGVUZW1wbGF0ZVR5cGUsXG59IGZyb20gJy4vZW51bXMnO1xuXG4vL0RpcmVjdGl2ZVxuaW1wb3J0IHsgVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuLy9IZWxwZXJcbmltcG9ydCB7IEZpbGVIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vL1JvdXRlclxuaW1wb3J0IHsgRHJvcHpvbmVTdmdSb3V0ZSB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcy9kcm9wem9uZS1zdmcucm91dGVzJztcblxuLy9QaXBlc1xuaW1wb3J0IHsgTWltZVR5cGVUb0V4dGVuc2lvblBpcGUgfSBmcm9tICcuLi9jYS11cGxvYWQtZmlsZS9waXBlcyc7XG5cbi8vSW50ZXJmYWNlc1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnYXBwLWNhLXVwbG9hZC1kcm9wem9uZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUsXG4gICAgICAgIExvdHRpZUNvbXBvbmVudCxcbiAgICAgICAgTWltZVR5cGVUb0V4dGVuc2lvblBpcGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUxvdHRpZU9wdGlvbnMoe1xuICAgICAgICAgICAgcGxheWVyOiAoKSA9PiBpbXBvcnQoJ2xvdHRpZS13ZWInKSxcbiAgICAgICAgfSksXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyh3aW5kb3c6cGFzdGUpJzogJ2hhbmRsZVBhc3RlKCRldmVudCknLFxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhVXBsb2FkRHJvcHpvbmVDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGRyZW4oVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUpXG4gICAgdGVtcGxhdGVSZWYhOiBRdWVyeUxpc3Q8VGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bab25lJykgZHJvcFpvbmUhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgc2V0IGRyb3Bab25lQ29uZmlnKGRhdGE6IElEcm9wWm9uZUNvbmZpZykge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnID0gZGF0YTtcblxuICAgICAgICAgICAgLy9JY29uc1xuICAgICAgICAgICAgdGhpcy5nZXRJY29ucygpO1xuXG4gICAgICAgICAgICAvL1N1cHBvcnRlZCBmaWxlc1xuICAgICAgICAgICAgdGhpcy5zdXBwb3J0ZWRGaWxlcygpO1xuXG4gICAgICAgICAgICAvL0Ryb3B6b25lIHRleHRcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcFpvbmVUZXh0KCk7XG5cbiAgICAgICAgICAgIC8vTG90dGllXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvdHRpZU9wdGlvbnMoKTtcblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbiAgICBASW5wdXQoKSBpc0Ryb3B6b25lU2hvd25JbkNyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjdXN0b21XaWR0aCE6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZpbGVzOiBJRmlsZUNvbmZpZ1tdID0gW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkZpbGVFdmVudDogRXZlbnRFbWl0dGVyPHsgZmlsZXM6IElGaWxlQ29uZmlnW107IGFjdGlvbjogc3RyaW5nIH0+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBJRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBvbkRyb3BCYWNrZ3JvdW5kOiBFdmVudEVtaXR0ZXI8SURyb3BCYWNrZ3JvdW5kRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJRHJvcEJhY2tncm91bmRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VEcm9wem9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgICBwdWJsaWMgX2Ryb3Bab25lQ29uZmlnITogSURyb3Bab25lQ29uZmlnO1xuICAgIHB1YmxpYyBpc1Nob3duRHJvcHpvbmVGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0ZpbGVEcm9wOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzU3VwcG9ydGVkVHlwZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBkcm9wWm9uZVRleHQ6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBpc0Ryb3B6b25lRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaWNvblNyYzogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGRyb3Bab25lQXZhaWxhYmxlRmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGxpbWl0OiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGxvdHRpZU9wdGlvbnMgPSBMb3R0aWVBbmltYXRpb25Db25zdGFudHMuREVGQVVMVF9MT1RUSUU7XG4gICAgcHVibGljIGRyb3B6b25lU3ZnUm91dGUgPSBEcm9wem9uZVN2Z1JvdXRlLmNsb3NlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignYm9keTpkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZVdpbmRvd3MoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkRSQUdMRUFWRSxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkRST1AsXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uRmlsZVVwbG9hZChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJBR09WRVIsXG4gICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubG90dGllT3B0aW9ucyAmJiAhdGhpcy5sb3R0aWVPcHRpb25zLmF1dG9wbGF5KSB7XG4gICAgICAgICAgICB0aGlzLmxvdHRpZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5sb3R0aWVPcHRpb25zLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5EUkFHTEVBVkUsXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpkcmFnZW50ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbldpbmRvd0RyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBlRmlsZVR5cGUgPSB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGU7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvblBhdGggPSBGaWxlQW5pbWF0aW9uQ29uc3RhbnRzLkFOSU1BVElPTlNbZUZpbGVUeXBlXTtcblxuICAgICAgICBpZiAoYW5pbWF0aW9uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAnc3ZnJyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMsXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF0aDogYW5pbWF0aW9uUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6ZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uV2luZG93RHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJPUCxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0cmlnZ2VyRmlsZUlucHV0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTWF4Q291bnRSZWFjaGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bab25lLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbnMoKSB7XG4gICAgICAgIHRoaXMuaWNvblNyYyA9XG4gICAgICAgICAgICBGaWxlSWNvbnNDb25zdGFudHMuSUNPTlNbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGVcbiAgICAgICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIHN1cHBvcnRlZEZpbGVzKCkge1xuICAgICAgICB0aGlzLmRyb3Bab25lQXZhaWxhYmxlRmlsZXMgPVxuICAgICAgICAgICAgRmlsZU1pbWVUeXBlQ29uc3RhbnRzLlNVUE9SVEVEX01JTUVfVFlQRV9NQVBbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGVcbiAgICAgICAgICAgIF07XG4gICAgfVxuXG4gICAgLy9saW1pdCBmaWxlc1xuICAgIHB1YmxpYyBtYXhGaWxlc0FsbG93ZWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEZpbGVMaW1pdENvbnN0YW50cy5MSU1JVFtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICAgICAgPy5kcm9wWm9uZVBhZ2VzIGFzIGVGaWxlVXBsb2FkUGFnZVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEJvZ2RhbiAtIG1vdmUgdG8gZ2V0dGVyIHRvIHVzZSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIG1ldGhvZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjaGFuZ2UgZGV0ZWN0aW9uIHRyaWdnZXJzXG4gICAgcHVibGljIGlzTWF4Q291bnRSZWFjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLmxpbWl0ID1cbiAgICAgICAgICAgIEZpbGVMaW1pdENvbnN0YW50cy5MSU1JVFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgICAgICAgICA/LmRyb3Bab25lUGFnZXMgYXMgZUZpbGVVcGxvYWRQYWdlXG4gICAgICAgICAgICBdIHx8IDA7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCA+PSB0aGlzLmxpbWl0O1xuICAgIH1cblxuICAgIC8vRmlsZXNcbiAgICBwdWJsaWMgaGFuZGxlRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKGlucHV0LmZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uRmlsZVVwbG9hZChpbnB1dC5maWxlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlVXBsb2FkKGZpbGVzOiBGaWxlTGlzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVzKTtcblxuICAgICAgICBjb25zdCB1cGxvYWRPYnNlcnZhYmxlcyA9IGZpbGVBcnJheS5tYXAoKGZpbGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlKGZpbGUsIGluZGV4ID09PSBmaWxlQXJyYXkubGVuZ3RoIC0gMSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZnJvbSh1cGxvYWRPYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBsb2FkaW5nIGZpbGVzOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FsbCBmaWxlcyB1cGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0RHJvcHpvbmVWaWV3KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IGZhbHNlO1xuXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvL1RlbXBsYXRlXG4gICAgcHVibGljIGdldFRlbXBsYXRlKHRlbXBsYXRlOiBlVGVtcGxhdGVUeXBlKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZUNvbnRhaW5lckRpcmVjdGl2ZSB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlUmVmPy5maW5kKCh0ZW1wKSA9PiB0ZW1wLmlkID09PSB0ZW1wbGF0ZSk7XG5cbiAgICAgICAgaWYgKCF0ZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmF2YWlsYWJsZSB0ZW1wbGF0ZSEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVJlZj8udGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRGaWxlKGZpbGU6IEZpbGUsIGVtaXRFdmVudD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBmaWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy9UT0RPOiBCb2dkYW4gLSBnZXQgZmlsZSBleHRlbnNpb24gZnJvbSBtZXRhZGF0YSwgbm90IGZpbGUgbmFtZSBleHRlbnNpb25cbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBGaWxlSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHlwZSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIUZpbGVIZWxwZXIuaXNTdXBwb3J0ZWRFeHRlbnNpb24oXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wWm9uZUF2YWlsYWJsZUZpbGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgID8uZGlzYWJsZVVuc3VwcG9ydGVkUHJldmlld1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBGaWxlSGVscGVyLmdldEJsb2IoZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoYmxvYkNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYkNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYmxvYlVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb246IGZpbGVFeHRlbnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEZpbGU6IGJsb2JDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzOiB0aGlzLmZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5BREQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWFkaW5nIGZpbGU6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbnQgdXBsb2FkIGZpbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTG90dGllXG4gICAgcHJpdmF0ZSB1cGRhdGVMb3R0aWVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlRmlsZVR5cGUgPSB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGU7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvblBhdGggPSBGaWxlQW5pbWF0aW9uQ29uc3RhbnRzLkFOSU1BVElPTlNbZUZpbGVUeXBlXTtcblxuICAgICAgICBpZiAoYW5pbWF0aW9uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAnc3ZnJyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMsXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF0aDogYW5pbWF0aW9uUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0Ryb3B6b25lIHRleHRcbiAgICBwcml2YXRlIHVwZGF0ZURyb3Bab25lVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZHJvcFpvbmVUZXh0TWFwOiB7IFtrZXkgaW4gZURyb3Bab25lRmlsZVR5cGVdPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBbZURyb3Bab25lRmlsZVR5cGUuRklMRVNdOiAnRklMRVMnLFxuICAgICAgICAgICAgW2VEcm9wWm9uZUZpbGVUeXBlLk1FRElBXTogJ01FRElBJyxcbiAgICAgICAgICAgIFtlRHJvcFpvbmVGaWxlVHlwZS5JTUFHRV06ICdJTUFHRScsXG4gICAgICAgICAgICBbZURyb3Bab25lRmlsZVR5cGUuTE9HT106ICdJTUFHRScsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kcm9wWm9uZVRleHQgPVxuICAgICAgICAgICAgZHJvcFpvbmVUZXh0TWFwW1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICAgICAgICAgID8uZHJvcFpvbmVUeXBlIGFzIGVEcm9wWm9uZUZpbGVUeXBlXG4gICAgICAgICAgICBdIHx8ICdGSUxFIElNUE9SVCBGQUlMRUQnO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImRyb3B6b25lLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NwbGl0LWRyb3B6b25lJzogaXNEcm9wem9uZVNob3duSW5Dcm9wLFxuICAgICAgICB1blN1cHBvcnRlZDogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICBleHBhbmRlZDogaXNEcm9wem9uZUV4cGFuZGVkICYmICFpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgICdkaXNhYmxlZC1kcm9wem9uZSc6IGZpbGVzLmxlbmd0aCA+PSB0aGlzLmxpbWl0ICYmIHRoaXMubGltaXQgPiAwLFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICBmaWxlcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/IGN1c3RvbVdpZHRoIHx8ICc0NDhweCdcbiAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgPyAnMjk2cHgnXG4gICAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgOiBmaWxlcy5sZW5ndGggPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICcxNDhweCcsXG4gICAgfVwiXG4+XG4gICAgPCEtLSBAZm9yIChpdGVtIG9mIF9kcm9wWm9uZUNvbmZpZ0FycmF5OyB0cmFjayAkaW5kZXgpIHsgLS0+XG4gICAgQGlmIChfZHJvcFpvbmVDb25maWcpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wem9uZS1jb250ZW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3VwbG9hZC1kcm9wem9uZS11bnN1cHBvcnRlZCc6IGlzU3VwcG9ydGVkVHlwZSxcbiAgICAgICAgICAgICAgICBleHBhbmRlZENvbnRlbnQ6IGlzRHJvcHpvbmVFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICAnY29sdW1uLWxheW91dCc6IGZpbGVzLmxlbmd0aCA+PSAyLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBnZXRUZW1wbGF0ZShfZHJvcFpvbmVDb25maWcudGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogX2Ryb3Bab25lQ29uZmlnPy5jb25maWcgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8IS0tIH0gLS0+XG48L2Rpdj5cblxuPCEtLS0tLS0tLS0tLS0tRG9jdW1lbnQgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImRvY3VtZW50c1RlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICBAaWYgKCFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgQGlmICgoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICBAaWYgKGlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1NZWRpYSB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwibWVkaWFUZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgQGlmICghaXNTaG93bkRyb3B6b25lRm9jdXMgJiYgIWlzRHJvcHpvbmVFeHBhbmRlZCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIEBpZiAoKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Db250ZW50IGZvciBzdXBwb3J0ZWQgYW5kIHVuc3VwcG9ydGVkIHR5cGVzLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lVGV4dFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLVN1cHBvcnRlZCBleHRlbnNpb25zIGZvciB1bnN1cHBvcnRlZCB0eXBlLS0+XG4gICAgQGlmIChpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tSW1hZ2UgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImltYWdlVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLUltYWdlIENyb3AgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImltYWdlQ3JvcFRlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICBAaWYgKCFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgQGlmICgoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICBAaWYgKGlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1Mb2dvIHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJsb2dvVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLS1DT01NT04tVEVNUExBVEUtLS0tLS0tLS0tLS0tLT5cblxuPCEtLS0tLS1JTlBVVC0tLS0tLS0+XG48bmctdGVtcGxhdGUgI2ZpbGVJbnB1dFRlbXBsYXRlIGxldC1jb25maWc+XG4gICAgPGlucHV0XG4gICAgICAgICNkcm9wWm9uZVxuICAgICAgICBbaWRdPVwiJ2Ryb3Bab25lJyArIChjb25maWcuZHJvcHpvbmVPcHRpb24/LmRyb3B6b25lSW5kZXggfHwgMClcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiY29uZmlnLmRyb3B6b25lPy5kcm9wWm9uZUF2YWlsYWJsZUZpbGVzXCJcbiAgICAgICAgW211bHRpcGxlXT1cImNvbmZpZy5kcm9wem9uZT8ubXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS1EUk9QWk9ORV9URVhULS0+XG48bmctdGVtcGxhdGUgI2Ryb3B6b25lVGV4dFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wem9uZS10ZXh0IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtZHJvcHpvbmUtdGV4dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3Vuc3VwcG9ydGVkLXRleHQtYmlnJzogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICAgICAgICAgICdtYXgtY291bnQnOiBpc01heENvdW50UmVhY2hlZCgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXNNYXhDb3VudFJlYWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIE1BWCBDT1VOVCBSRUFDSEVEXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9ybWFsVGV4dFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGV4dD5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ0lOVkFMSUQgRklMRSBUWVBFJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnRFJBRyAnICsgZHJvcFpvbmVUZXh0XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAhKGlzU3VwcG9ydGVkVHlwZSB8fCAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSkgPyAnIEhFUkUnIDogJydcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBpZiAoX2Ryb3Bab25lQ29uZmlnPy50ZW1wbGF0ZSA9PT0gJ21lZGlhVGVtcGxhdGUnKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtZWRpYS1zaXplc1wiPm1heCBmaWxlIHNpemUgNTBtYjwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuICAgICAgICBAaWYgKCFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLWRyb3B6b25lLXRleHQtc21hbGxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGlzTWF4Q291bnRSZWFjaGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsZXMubGVuZ3RoIH19IEZJTEVTIElNUE9SVEVEXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtYXRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm1hdFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdTVVBQT1JURUQgRk9STUFUUydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdPUiBDTElDSyBUTyBBREQnXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS1JQ09OLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgI2Ryb3B6b25lSWNvblRlbXBsYXRlPlxuICAgIEBpZiAoIWlzU3VwcG9ydGVkVHlwZSAmJiAhaXNGaWxlRHJvcCkge1xuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtzcmNdPVwiaWNvblNyY1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJmaWxlcy5sZW5ndGggPCAyID8gJ3N2Z0ljb24tZG9jdW1lbnQnIDogJ3N2Zy1zbWFsbCdcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3ZnLWljb24+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgW3NyY109XCJkcm9wem9uZVN2Z1JvdXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLXVuc3VwcG9ydGVkLXpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0RHJvcHpvbmVWaWV3KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3ZnLWljb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gTE9UVElFX0FOSU1BVElPTiAtLT5cbjxuZy10ZW1wbGF0ZSAjbG90dGllQW5pbWF0aW9uVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFuaW1hdGlvbi1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBleHBhbmRlZDogaXNEcm9wem9uZUV4cGFuZGVkIH1cIlxuICAgID5cbiAgICAgICAgPG5nLWxvdHRpZVxuICAgICAgICAgICAgY2xhc3M9XCJzdGF0aWMtbG90dGllLWFuaW1hdGlvblwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJsb3R0aWVPcHRpb25zXCJcbiAgICAgICAgPjwvbmctbG90dGllPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTVVBQT1JURURfRVhURU5TSU9OUyAtLT5cbjxuZy10ZW1wbGF0ZSAjc3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJzdXBwb3J0ZWQtZXh0ZW5zaW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICBAZm9yIChleHRlbnNpb24gb2YgZHJvcFpvbmVBdmFpbGFibGVGaWxlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXh0ZW5zaW9uIGV4dGVuc2lvbi17e1xuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24gfCBtaW1lVHlwZVRvRXh0ZW5zaW9uXG4gICAgICAgICAgICAgICAgfX0gXG4gICAgICAgICAgICAgICAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBleHRlbnNpb24gfCBtaW1lVHlwZVRvRXh0ZW5zaW9uIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWRyb3B6b25lL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVNuRSxXQUFXO0FBQ1gsT0FBTyxFQUNILHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFN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LFdBQVc7c0JBRFYsTUFBTTtnQkFHRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFrQkEsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWNuQyxNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9CekIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0I3QixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQjlCLGlCQUFpQjtzQkFEdkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1QnJDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVloQyxnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb3R0aWVDb21wb25lbnQsIHByb3ZpZGVMb3R0aWVPcHRpb25zIH0gZnJvbSAnbmd4LWxvdHRpZSc7XG5cbi8vSW50ZXJmYWNlc1xuaW1wb3J0IHtcbiAgICBJRHJvcEJhY2tncm91bmRFdmVudCxcbiAgICBJRHJvcFpvbmVDb25maWcsXG4gICAgSUZpbGVDb25maWcsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8vQ29uc3RhbnRzXG5pbXBvcnQge1xuICAgIEZpbGVBbmltYXRpb25Db25zdGFudHMsXG4gICAgRmlsZUljb25zQ29uc3RhbnRzLFxuICAgIEZpbGVMaW1pdENvbnN0YW50cyxcbiAgICBGaWxlTWltZVR5cGVDb25zdGFudHMsXG4gICAgTG90dGllQW5pbWF0aW9uQ29uc3RhbnRzLFxufSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cyc7XG5cbi8vRW51bVxuaW1wb3J0IHtcbiAgICBlRmlsZURyb3Bab25lQWN0aW9uLFxuICAgIGVEcm9wWm9uZUZpbGVUeXBlLFxuICAgIGVGaWxlVXBsb2FkUGFnZSxcbiAgICBlVGVtcGxhdGVUeXBlLFxufSBmcm9tICcuL2VudW1zJztcblxuLy9EaXJlY3RpdmVcbmltcG9ydCB7IFRlbXBsYXRlQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbi8vSGVscGVyXG5pbXBvcnQgeyBGaWxlSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLy9Sb3V0ZXJcbmltcG9ydCB7IERyb3B6b25lU3ZnUm91dGUgfSBmcm9tICcuL3V0aWxzL3N2Zy1yb3V0ZXMvZHJvcHpvbmUtc3ZnLnJvdXRlcyc7XG5cbi8vUGlwZXNcbmltcG9ydCB7IE1pbWVUeXBlVG9FeHRlbnNpb25QaXBlIH0gZnJvbSAnLi4vY2EtdXBsb2FkLWZpbGUvcGlwZXMnO1xuXG4vL0ludGVyZmFjZXNcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS11cGxvYWQtZHJvcHpvbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFRlbXBsYXRlQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgICAgICBMb3R0aWVDb21wb25lbnQsXG4gICAgICAgIE1pbWVUeXBlVG9FeHRlbnNpb25QaXBlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVMb3R0aWVPcHRpb25zKHtcbiAgICAgICAgICAgIHBsYXllcjogKCkgPT4gaW1wb3J0KCdsb3R0aWUtd2ViJyksXG4gICAgICAgIH0pLFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FVcGxvYWREcm9wem9uZUNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZHJlbihUZW1wbGF0ZUNvbnRhaW5lckRpcmVjdGl2ZSlcbiAgICB0ZW1wbGF0ZVJlZiE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUNvbnRhaW5lckRpcmVjdGl2ZT47XG4gICAgQFZpZXdDaGlsZCgnZHJvcFpvbmUnKSBkcm9wWm9uZSE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBASW5wdXQoKSBzZXQgZHJvcFpvbmVDb25maWcoZGF0YTogSURyb3Bab25lQ29uZmlnKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWcgPSBkYXRhO1xuXG4gICAgICAgICAgICAvL0ljb25zXG4gICAgICAgICAgICB0aGlzLmdldEljb25zKCk7XG5cbiAgICAgICAgICAgIC8vU3VwcG9ydGVkIGZpbGVzXG4gICAgICAgICAgICB0aGlzLnN1cHBvcnRlZEZpbGVzKCk7XG5cbiAgICAgICAgICAgIC8vRHJvcHpvbmUgdGV4dFxuICAgICAgICAgICAgdGhpcy51cGRhdGVEcm9wWm9uZVRleHQoKTtcblxuICAgICAgICAgICAgLy9Mb3R0aWVcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG90dGllT3B0aW9ucygpO1xuXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGlzRHJvcHpvbmVTaG93bkluQ3JvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGN1c3RvbVdpZHRoITogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsZXM6IElGaWxlQ29uZmlnW10gPSBbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uRmlsZUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBmaWxlczogSUZpbGVDb25maWdbXTsgYWN0aW9uOiBzdHJpbmcgfT4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsZXM6IElGaWxlQ29uZmlnW107IGFjdGlvbjogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIG9uRHJvcEJhY2tncm91bmQ6IEV2ZW50RW1pdHRlcjxJRHJvcEJhY2tncm91bmRFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElEcm9wQmFja2dyb3VuZEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZURyb3B6b25lID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcblxuICAgIHB1YmxpYyBfZHJvcFpvbmVDb25maWchOiBJRHJvcFpvbmVDb25maWc7XG4gICAgcHVibGljIGlzU2hvd25Ecm9wem9uZUZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRmlsZURyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNTdXBwb3J0ZWRUeXBlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGRyb3Bab25lVGV4dDogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGlzRHJvcHpvbmVFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpY29uU3JjOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgZHJvcFpvbmVBdmFpbGFibGVGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICBwdWJsaWMgbGltaXQ6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgbG90dGllT3B0aW9ucyA9IExvdHRpZUFuaW1hdGlvbkNvbnN0YW50cy5ERUZBVUxUX0xPVFRJRTtcbiAgICBwdWJsaWMgZHJvcHpvbmVTdmdSb3V0ZSA9IERyb3B6b25lU3ZnUm91dGUuY2xvc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdib2R5OmRyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlV2luZG93cyhldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJBR0xFQVZFLFxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJPUCxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25GaWxlVXBsb2FkKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5EUkFHT1ZFUixcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5sb3R0aWVPcHRpb25zICYmICF0aGlzLmxvdHRpZU9wdGlvbnMuYXV0b3BsYXkpIHtcbiAgICAgICAgICAgIHRoaXMubG90dGllT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmxvdHRpZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkRSQUdMRUFWRSxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyYWdlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uV2luZG93RHJhZ0VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGVGaWxlVHlwZSA9IHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICA/LmRyb3Bab25lVHlwZSBhcyBlRHJvcFpvbmVGaWxlVHlwZTtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uUGF0aCA9IEZpbGVBbmltYXRpb25Db25zdGFudHMuQU5JTUFUSU9OU1tlRmlsZVR5cGVdO1xuXG4gICAgICAgIGlmIChhbmltYXRpb25QYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmxvdHRpZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgcmVuZGVyZXI6ICdzdmcnLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyxcbiAgICAgICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBhbmltYXRpb25QYXRoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpkcm9wJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25XaW5kb3dEcm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5EUk9QLFxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRyaWdnZXJGaWxlSW5wdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNYXhDb3VudFJlYWNoZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJvcFpvbmUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJY29ucygpIHtcbiAgICAgICAgdGhpcy5pY29uU3JjID1cbiAgICAgICAgICAgIEZpbGVJY29uc0NvbnN0YW50cy5JQ09OU1tcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgICAgICAgICA/LmRyb3Bab25lVHlwZSBhcyBlRHJvcFpvbmVGaWxlVHlwZVxuICAgICAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VwcG9ydGVkRmlsZXMoKSB7XG4gICAgICAgIHRoaXMuZHJvcFpvbmVBdmFpbGFibGVGaWxlcyA9XG4gICAgICAgICAgICBGaWxlTWltZVR5cGVDb25zdGFudHMuU1VQT1JURURfTUlNRV9UWVBFX01BUFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgICAgICAgICA/LmRyb3Bab25lVHlwZSBhcyBlRHJvcFpvbmVGaWxlVHlwZVxuICAgICAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvL2xpbWl0IGZpbGVzXG4gICAgcHVibGljIG1heEZpbGVzQWxsb3dlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gRmlsZUxpbWl0Q29uc3RhbnRzLkxJTUlUW1xuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICA/LmRyb3Bab25lUGFnZXMgYXMgZUZpbGVVcGxvYWRQYWdlXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQm9nZGFuIC0gbW92ZSB0byBnZXR0ZXIgdG8gdXNlIHByb3BlcnR5IGluc3RlYWQgb2YgbWV0aG9kIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNoYW5nZSBkZXRlY3Rpb24gdHJpZ2dlcnNcbiAgICBwdWJsaWMgaXNNYXhDb3VudFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHRoaXMubGltaXQgPVxuICAgICAgICAgICAgRmlsZUxpbWl0Q29uc3RhbnRzLkxJTUlUW1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICAgICAgICAgID8uZHJvcFpvbmVQYWdlcyBhcyBlRmlsZVVwbG9hZFBhZ2VcbiAgICAgICAgICAgIF0gfHwgMDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoID49IHRoaXMubGltaXQ7XG4gICAgfVxuXG4gICAgLy9GaWxlc1xuICAgIHB1YmxpYyBoYW5kbGVGaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQuZmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25GaWxlVXBsb2FkKGlucHV0LmZpbGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVVcGxvYWQoZmlsZXM6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVBcnJheSA9IEFycmF5LmZyb20oZmlsZXMpO1xuXG4gICAgICAgIGNvbnN0IHVwbG9hZE9ic2VydmFibGVzID0gZmlsZUFycmF5Lm1hcCgoZmlsZSwgaW5kZXgpID0+XG4gICAgICAgICAgICB0aGlzLmFkZEZpbGUoZmlsZSwgaW5kZXggPT09IGZpbGVBcnJheS5sZW5ndGggLSAxKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmcm9tKHVwbG9hZE9ic2VydmFibGVzKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZXM6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXREcm9wem9uZVZpZXcoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdXBwb3J0ZWRUeXBlID0gZmFsc2U7XG5cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8vVGVtcGxhdGVcbiAgICBwdWJsaWMgZ2V0VGVtcGxhdGUodGVtcGxhdGU6IGVUZW1wbGF0ZVR5cGUpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVSZWY6IFRlbXBsYXRlQ29udGFpbmVyRGlyZWN0aXZlIHwgdW5kZWZpbmVkID1cbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVSZWY/LmZpbmQoKHRlbXApID0+IHRlbXAuaWQgPT09IHRlbXBsYXRlKTtcblxuICAgICAgICBpZiAoIXRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYXZhaWxhYmxlIHRlbXBsYXRlIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlUmVmPy50ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEZpbGUoZmlsZTogRmlsZSwgZW1pdEV2ZW50PzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIWZpbGUpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGZpbGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvL1RPRE86IEJvZ2RhbiAtIGdldCBmaWxlIGV4dGVuc2lvbiBmcm9tIG1ldGFkYXRhLCBub3QgZmlsZSBuYW1lIGV4dGVuc2lvblxuICAgICAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IEZpbGVIZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0eXBlKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhRmlsZUhlbHBlci5pc1N1cHBvcnRlZEV4dGVuc2lvbihcbiAgICAgICAgICAgICAgICAgICAgZmlsZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lQXZhaWxhYmxlRmlsZXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgPy5kaXNhYmxlVW5zdXBwb3J0ZWRQcmV2aWV3XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBwb3J0ZWRUeXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNTdXBwb3J0ZWRUeXBlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIEZpbGVIZWxwZXIuZ2V0QmxvYihmaWxlKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChibG9iQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iQ29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBibG9iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogZmlsZUV4dGVuc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlkOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsRmlsZTogYmxvYkNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25GaWxlRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkFERCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgZmlsZTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FudCB1cGxvYWQgZmlsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9Mb3R0aWVcbiAgICBwcml2YXRlIHVwZGF0ZUxvdHRpZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVGaWxlVHlwZSA9IHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICA/LmRyb3Bab25lVHlwZSBhcyBlRHJvcFpvbmVGaWxlVHlwZTtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uUGF0aCA9IEZpbGVBbmltYXRpb25Db25zdGFudHMuQU5JTUFUSU9OU1tlRmlsZVR5cGVdO1xuXG4gICAgICAgIGlmIChhbmltYXRpb25QYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmxvdHRpZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgcmVuZGVyZXI6ICdzdmcnLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyxcbiAgICAgICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBhbmltYXRpb25QYXRoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vRHJvcHpvbmUgdGV4dFxuICAgIHByaXZhdGUgdXBkYXRlRHJvcFpvbmVUZXh0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkcm9wWm9uZVRleHRNYXA6IHsgW2tleSBpbiBlRHJvcFpvbmVGaWxlVHlwZV0/OiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgIFtlRHJvcFpvbmVGaWxlVHlwZS5GSUxFU106ICdGSUxFUycsXG4gICAgICAgICAgICBbZURyb3Bab25lRmlsZVR5cGUuTUVESUFdOiAnTUVESUEnLFxuICAgICAgICAgICAgW2VEcm9wWm9uZUZpbGVUeXBlLklNQUdFXTogJ0lNQUdFJyxcbiAgICAgICAgICAgIFtlRHJvcFpvbmVGaWxlVHlwZS5MT0dPXTogJ0lNQUdFJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRyb3Bab25lVGV4dCA9XG4gICAgICAgICAgICBkcm9wWm9uZVRleHRNYXBbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGVcbiAgICAgICAgICAgIF0gfHwgJ0ZJTEUgSU1QT1JUIEZBSUxFRCc7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZHJvcHpvbmUtY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc3BsaXQtZHJvcHpvbmUnOiBpc0Ryb3B6b25lU2hvd25JbkNyb3AsXG4gICAgICAgIHVuU3VwcG9ydGVkOiBpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgIGV4cGFuZGVkOiBpc0Ryb3B6b25lRXhwYW5kZWQgJiYgIWlzU3VwcG9ydGVkVHlwZSxcbiAgICAgICAgJ2Rpc2FibGVkLWRyb3B6b25lJzogZmlsZXMubGVuZ3RoID49IHRoaXMubGltaXQgJiYgdGhpcy5saW1pdCA+IDAsXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgICB3aWR0aDpcbiAgICAgICAgICAgIGZpbGVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgID8gY3VzdG9tV2lkdGggfHwgJzQ0OHB4J1xuICAgICAgICAgICAgICAgIDogZmlsZXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgICA/ICcyOTZweCdcbiAgICAgICAgICAgICAgICAgIDogZmlsZXMubGVuZ3RoID09PSAyXG4gICAgICAgICAgICAgICAgICAgID8gJzE0OHB4J1xuICAgICAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgID8gJzE0OHB4J1xuICAgICAgICAgICAgICAgICAgICAgIDogJzE0OHB4JyxcbiAgICB9XCJcbj5cbiAgICA8IS0tIEBmb3IgKGl0ZW0gb2YgX2Ryb3Bab25lQ29uZmlnQXJyYXk7IHRyYWNrICRpbmRleCkgeyAtLT5cbiAgICBAaWYgKF9kcm9wWm9uZUNvbmZpZykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRyb3B6b25lLWNvbnRlbnQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAndXBsb2FkLWRyb3B6b25lLXVuc3VwcG9ydGVkJzogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICAgICAgICAgIGV4cGFuZGVkQ29udGVudDogaXNEcm9wem9uZUV4cGFuZGVkLFxuICAgICAgICAgICAgICAgICdjb2x1bW4tbGF5b3V0JzogZmlsZXMubGVuZ3RoID49IDIsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGdldFRlbXBsYXRlKF9kcm9wWm9uZUNvbmZpZy50ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBfZHJvcFpvbmVDb25maWc/LmNvbmZpZyB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDwhLS0gfSAtLT5cbjwvZGl2PlxuXG48IS0tLS0tLS0tLS0tLS1Eb2N1bWVudCB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwiZG9jdW1lbnRzVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLU1lZGlhIHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJtZWRpYVRlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICBAaWYgKCFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgQGlmICgoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICBAaWYgKGlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1JbWFnZSB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwiaW1hZ2VUZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgQGlmICghaXNTaG93bkRyb3B6b25lRm9jdXMgJiYgIWlzRHJvcHpvbmVFeHBhbmRlZCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIEBpZiAoKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Db250ZW50IGZvciBzdXBwb3J0ZWQgYW5kIHVuc3VwcG9ydGVkIHR5cGVzLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lVGV4dFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLVN1cHBvcnRlZCBleHRlbnNpb25zIGZvciB1bnN1cHBvcnRlZCB0eXBlLS0+XG4gICAgQGlmIChpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tSW1hZ2UgQ3JvcCB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwiaW1hZ2VDcm9wVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLUxvZ28gdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImxvZ29UZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgQGlmICghaXNTaG93bkRyb3B6b25lRm9jdXMgJiYgIWlzRHJvcHpvbmVFeHBhbmRlZCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIEBpZiAoKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Db250ZW50IGZvciBzdXBwb3J0ZWQgYW5kIHVuc3VwcG9ydGVkIHR5cGVzLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lVGV4dFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLVN1cHBvcnRlZCBleHRlbnNpb25zIGZvciB1bnN1cHBvcnRlZCB0eXBlLS0+XG4gICAgQGlmIChpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tLUNPTU1PTi1URU1QTEFURS0tLS0tLS0tLS0tLS0tPlxuXG48IS0tLS0tLUlOUFVULS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSAjZmlsZUlucHV0VGVtcGxhdGUgbGV0LWNvbmZpZz5cbiAgICA8aW5wdXRcbiAgICAgICAgI2Ryb3Bab25lXG4gICAgICAgIFtpZF09XCInZHJvcFpvbmUnICsgKGNvbmZpZy5kcm9wem9uZU9wdGlvbj8uZHJvcHpvbmVJbmRleCB8fCAwKVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgW2FjY2VwdF09XCJjb25maWcuZHJvcHpvbmU/LmRyb3Bab25lQXZhaWxhYmxlRmlsZXNcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiY29uZmlnLmRyb3B6b25lPy5tdWx0aXBsZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLURST1BaT05FX1RFWFQtLT5cbjxuZy10ZW1wbGF0ZSAjZHJvcHpvbmVUZXh0VGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3B6b25lLXRleHQgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICA+XG4gICAgICAgIDxwXG4gICAgICAgICAgICBjbGFzcz1cInVwbG9hZC1kcm9wem9uZS10ZXh0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAndW5zdXBwb3J0ZWQtdGV4dC1iaWcnOiBpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgICAgICAgICAgJ21heC1jb3VudCc6IGlzTWF4Q291bnRSZWFjaGVkKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc01heENvdW50UmVhY2hlZCgpKSB7XG4gICAgICAgICAgICAgICAgTUFYIENPVU5UIFJFQUNIRURcbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3JtYWxUZXh0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxUZXh0PlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGlzU3VwcG9ydGVkVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnSU5WQUxJRCBGSUxFIFRZUEUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdEUkFHICcgKyBkcm9wWm9uZVRleHRcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICEoaXNTdXBwb3J0ZWRUeXBlIHx8IChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpKSA/ICcgSEVSRScgOiAnJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgQGlmIChfZHJvcFpvbmVDb25maWc/LnRlbXBsYXRlID09PSAnbWVkaWFUZW1wbGF0ZScpIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1lZGlhLXNpemVzXCI+bWF4IGZpbGUgc2l6ZSA1MG1iPC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICAgIEBpZiAoIWlzRHJvcHpvbmVFeHBhbmRlZCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtZHJvcHpvbmUtdGV4dC1zbWFsbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNNYXhDb3VudFJlYWNoZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICB7eyBmaWxlcy5sZW5ndGggfX0gRklMRVMgSU1QT1JURURcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1hdFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybWF0VGV4dD5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VwcG9ydGVkVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1NVUFBPUlRFRCBGT1JNQVRTJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ09SIENMSUNLIFRPIEFERCdcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLUlDT04tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSAjZHJvcHpvbmVJY29uVGVtcGxhdGU+XG4gICAgQGlmICghaXNTdXBwb3J0ZWRUeXBlICYmICFpc0ZpbGVEcm9wKSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgW3NyY109XCJpY29uU3JjXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZpbGVzLmxlbmd0aCA8IDIgPyAnc3ZnSWNvbi1kb2N1bWVudCcgOiAnc3ZnLXNtYWxsJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9zdmctaWNvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBbc3JjXT1cImRyb3B6b25lU3ZnUm91dGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjYW5jZWwtdW5zdXBwb3J0ZWQtem9uZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVzZXREcm9wem9uZVZpZXcoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9zdmctaWNvbj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPCEtLSBMT1RUSUVfQU5JTUFUSU9OIC0tPlxuPG5nLXRlbXBsYXRlICNsb3R0aWVBbmltYXRpb25UZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYW5pbWF0aW9uLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGV4cGFuZGVkOiBpc0Ryb3B6b25lRXhwYW5kZWQgfVwiXG4gICAgPlxuICAgICAgICA8bmctbG90dGllXG4gICAgICAgICAgICBjbGFzcz1cInN0YXRpYy1sb3R0aWUtYW5pbWF0aW9uXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImxvdHRpZU9wdGlvbnNcIlxuICAgICAgICA+PC9uZy1sb3R0aWU+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNVUFBPUlRFRF9FWFRFTlNJT05TIC0tPlxuPG5nLXRlbXBsYXRlICNzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInN1cHBvcnRlZC1leHRlbnNpb25zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgIEBmb3IgKGV4dGVuc2lvbiBvZiBkcm9wWm9uZUF2YWlsYWJsZUZpbGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleHRlbnNpb24gZXh0ZW5zaW9uLXt7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiB8IG1pbWVUeXBlVG9FeHRlbnNpb25cbiAgICAgICAgICAgICAgICB9fSBcbiAgICAgICAgICAgICAgICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGV4dGVuc2lvbiB8IG1pbWVUeXBlVG9FeHRlbnNpb24gfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==