ca-components 1.0.75 → 1.0.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +15 -14
  2. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +5 -3
  3. package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +8 -20
  4. package/esm2022/lib/components/ca-progress-range/ca-progress-range.component.mjs +3 -3
  5. package/esm2022/lib/components/ca-progress-range/utils/directives/progress-range-tooltip-arrow-position.directive.mjs +1 -1
  6. package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +1 -1
  7. package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +54 -43
  8. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +11 -7
  9. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +14 -7
  10. package/esm2022/lib/utils/helpers/file.helpers.mjs +14 -0
  11. package/fesm2022/ca-components.mjs +117 -91
  12. package/fesm2022/ca-components.mjs.map +1 -1
  13. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +2 -1
  14. package/lib/components/ca-logo-change/ca-logo-change.component.d.ts +0 -1
  15. package/lib/components/ca-progress-range/ca-progress-range.component.d.ts +1 -1
  16. package/lib/components/ca-progress-range/utils/directives/progress-range-tooltip-arrow-position.directive.d.ts +1 -1
  17. package/lib/components/ca-upload-files/ca-upload-files.component.d.ts +4 -3
  18. package/lib/utils/helpers/file.helpers.d.ts +3 -0
  19. package/package.json +1 -1
@@ -20,13 +20,15 @@ import * as i1 from "./services";
20
20
  import * as i2 from "@angular/common/http";
21
21
  import * as i3 from "@angular/common";
22
22
  export class CaUploadFilesComponent {
23
- //General
24
23
  set files(data) {
25
24
  this._files = [...data];
26
25
  if (this._config?.type == FileTypesEnum.DETAILS) {
27
26
  this.modalCarousel?.slideToFile(0);
28
27
  }
29
28
  }
29
+ get files() {
30
+ return this._files;
31
+ }
30
32
  constructor(uploadFileService, http) {
31
33
  this.uploadFileService = uploadFileService;
32
34
  this.http = http;
@@ -43,10 +45,11 @@ export class CaUploadFilesComponent {
43
45
  this.size = FilesSizeEnum.SMALL;
44
46
  this.slideWidth = 180;
45
47
  this.fileAdded = new EventEmitter();
46
- this._files = [];
47
48
  this.currentSlide = 0;
48
49
  this.isDropzoneShown = true;
49
50
  this.destroy$ = new Subject();
51
+ // Files data
52
+ this._files = [];
50
53
  }
51
54
  ngAfterViewInit() {
52
55
  this.subscribeToUploadedFiles();
@@ -74,33 +77,35 @@ export class CaUploadFilesComponent {
74
77
  switch (data.action) {
75
78
  case DocumentAction.TAG:
76
79
  this.onFileEvent.emit({
77
- files: !this.onlyOneTagFile ? this._files : data.file,
80
+ files: !this.onlyOneTagFile ? this.files : data.file,
78
81
  action: data.action,
79
82
  });
80
83
  break;
81
84
  case DocumentAction.DELETE:
82
85
  let isLastDeleted = false;
83
- this._files.forEach((item, index) => {
86
+ this.files.forEach((item, index) => {
84
87
  if (item.fileName === data.file.fileName &&
85
- (index === this._files.length - 1 ||
86
- index === this._files.length - 2)) {
88
+ (index === this.files.length - 1 ||
89
+ index === this.files.length - 2)) {
87
90
  isLastDeleted = true;
88
91
  }
89
92
  });
90
- this._files = this._files.filter((item) => item.fileName !== data.file.fileName);
93
+ this.files = this.files.filter((item) => item.fileName !== data.file.fileName);
91
94
  this.onFileEvent.emit({
92
- files: this._files,
95
+ files: this.files,
93
96
  action: data.action,
94
97
  deleteId: data.file['fileId'] || undefined,
95
98
  });
96
- this.currentSlide = this._files.length - 1;
97
- if ((this.size === FilesSizeEnum.MODAL_LARGE && this._files.length < 4) ||
98
- (this.size === FilesSizeEnum.MODAL_MEDIUM && this._files.length < 3)) {
99
+ this.currentSlide = this.files.length - 1;
100
+ if ((this.size === FilesSizeEnum.MODAL_LARGE &&
101
+ this.files.length < 4) ||
102
+ (this.size === FilesSizeEnum.MODAL_MEDIUM &&
103
+ this.files.length < 3)) {
99
104
  this.modalCarousel.currentSlide = 0;
100
105
  this.modalCarousel.translateXMultipleSlides = 0;
101
106
  this.modalCarousel.multipleCurrentSlide = 0;
102
107
  }
103
- if (!this._files.length) {
108
+ if (!this.files.length) {
104
109
  this.currentSlide = 0;
105
110
  }
106
111
  if (isLastDeleted && this.modalCarousel) {
@@ -111,36 +116,39 @@ export class CaUploadFilesComponent {
111
116
  : carouselSize === FilesSizeEnum.MEDIUM
112
117
  ? 2
113
118
  : 1;
114
- const allowSlide = (carouselSize === FilesSizeEnum.LARGE && this._files.length > 2) ||
115
- (carouselSize === FilesSizeEnum.MEDIUM && this._files.length > 1) ||
116
- (carouselSize === FilesSizeEnum.SMALL && this._files.length > 0);
119
+ const allowSlide = (carouselSize === FilesSizeEnum.LARGE &&
120
+ this.files.length > 2) ||
121
+ (carouselSize === FilesSizeEnum.MEDIUM &&
122
+ this.files.length > 1) ||
123
+ (carouselSize === FilesSizeEnum.SMALL &&
124
+ this.files.length > 0);
117
125
  if (allowSlide) {
118
- this.modalCarousel.slideToFile(this._files.length - slideTo);
126
+ this.modalCarousel.slideToFile(this.files.length - slideTo);
119
127
  }
120
128
  }
121
129
  break;
122
130
  case DocumentAction.MARK_INCORRECT:
123
131
  let incorrectIndx = 0;
124
- this._files.forEach((item, index) => {
132
+ this.files.forEach((item, index) => {
125
133
  if (item.fileName === data.file.fileName) {
126
134
  incorrectIndx = index;
127
135
  }
128
136
  });
129
137
  this.onFileEvent.emit({
130
- files: this._files,
138
+ files: this.files,
131
139
  action: data.action,
132
140
  index: incorrectIndx,
133
141
  });
134
142
  break;
135
143
  case DocumentAction.MARK_CORRECT:
136
144
  let correctIndx = 0;
137
- this._files.forEach((item, index) => {
145
+ this.files.forEach((item, index) => {
138
146
  if (item.fileName === data.file.fileName) {
139
147
  correctIndx = index;
140
148
  }
141
149
  });
142
150
  this.onFileEvent.emit({
143
- files: this._files,
151
+ files: this.files,
144
152
  action: data.action,
145
153
  index: correctIndx,
146
154
  });
@@ -150,14 +158,14 @@ export class CaUploadFilesComponent {
150
158
  }
151
159
  }
152
160
  onUploadFiles(data) {
153
- if (data.action === 'add' && this.hasCrop && this._files.length) {
161
+ if (data.action === 'add' && this.hasCrop && this.files.length) {
154
162
  const uploadedFiles = [...data.files];
155
163
  if (this.hasCrop)
156
164
  this.isDropzoneShown = true;
157
165
  uploadedFiles.forEach((newFile) => {
158
- const existingFileIndex = this._files.findIndex((existingFile) => existingFile.url);
166
+ const existingFileIndex = this.files.findIndex((existingFile) => existingFile.url);
159
167
  if (existingFileIndex !== -1) {
160
- this._files[existingFileIndex] = newFile;
168
+ this.files[existingFileIndex] = newFile;
161
169
  this.fileAdded.emit(newFile.url);
162
170
  }
163
171
  else {
@@ -168,15 +176,15 @@ export class CaUploadFilesComponent {
168
176
  }
169
177
  if (data.action === 'add') {
170
178
  const uploadedFiles = [...data.files];
171
- const uniqueFiles = uploadedFiles.filter((file) => !this._files.some((existingFile) => existingFile.fileName === file.fileName));
172
- this._files = [...new Set([...this._files, ...uniqueFiles])];
179
+ const uniqueFiles = uploadedFiles.filter((file) => !this.files.some((existingFile) => existingFile.fileName === file.fileName));
180
+ this.files = [...new Set([...this.files, ...uniqueFiles])];
173
181
  uniqueFiles.forEach((file) => {
174
182
  this.fileAdded.emit(file.realFile);
175
183
  });
176
184
  if (this.hasCrop)
177
185
  this.isDropzoneShown = false;
178
186
  else
179
- this.onFileEvent.emit({ files: this._files, action: 'add' });
187
+ this.onFileEvent.emit({ files: this.files, action: 'add' });
180
188
  // carousel
181
189
  if (this.modalCarousel) {
182
190
  const carouselSize = this.modalCarousel.carouselConfig
@@ -186,11 +194,14 @@ export class CaUploadFilesComponent {
186
194
  : carouselSize === FilesSizeEnum.MEDIUM
187
195
  ? 2
188
196
  : 1;
189
- const allowSlide = (carouselSize === FilesSizeEnum.LARGE && this._files.length > 2) ||
190
- (carouselSize === FilesSizeEnum.MEDIUM && this._files.length > 1) ||
191
- (carouselSize === FilesSizeEnum.SMALL && this._files.length > 0);
197
+ const allowSlide = (carouselSize === FilesSizeEnum.LARGE &&
198
+ this.files.length > 2) ||
199
+ (carouselSize === FilesSizeEnum.MEDIUM &&
200
+ this.files.length > 1) ||
201
+ (carouselSize === FilesSizeEnum.SMALL &&
202
+ this.files.length > 0);
192
203
  if (allowSlide) {
193
- this.modalCarousel.slideToFile(this._files.length - slideTo);
204
+ this.modalCarousel.slideToFile(this.files.length - slideTo);
194
205
  }
195
206
  }
196
207
  }
@@ -199,10 +210,10 @@ export class CaUploadFilesComponent {
199
210
  if (this.hasCrop)
200
211
  this.isDropzoneShown = true;
201
212
  uploadedFiles.forEach((newFile) => {
202
- const existingFileIndex = this._files.findIndex((existingFile) => existingFile.url);
213
+ const existingFileIndex = this.files.findIndex((existingFile) => existingFile.url);
203
214
  if (existingFileIndex !== -1) {
204
215
  // Replace the existing file at the found index
205
- this._files[existingFileIndex] = newFile;
216
+ this.files[existingFileIndex] = newFile;
206
217
  // Emit the new file that replaced the old one
207
218
  this.fileAdded.emit(newFile.url);
208
219
  }
@@ -210,12 +221,12 @@ export class CaUploadFilesComponent {
210
221
  console.warn(`File ${newFile.fileName} to replace not found`);
211
222
  }
212
223
  });
213
- this.onFileEvent.emit({ files: this._files, action: 'add' });
224
+ this.onFileEvent.emit({ files: this.files, action: 'add' });
214
225
  }
215
226
  else if (data.action === 'delete') {
216
227
  if (this.hasCrop)
217
228
  this.isDropzoneShown = true;
218
- this._files.splice(0, this._files.length);
229
+ this.files.splice(0, this.files.length);
219
230
  }
220
231
  }
221
232
  documentReviewInputEventMethod(data) {
@@ -246,7 +257,7 @@ export class CaUploadFilesComponent {
246
257
  fileHover(file) {
247
258
  if (this.configFile.customClassName === 'modals') {
248
259
  let checkById = file?.realFile ? false : true;
249
- this._files.forEach((item, index) => {
260
+ this.files.forEach((item, index) => {
250
261
  if ((checkById && file?.fileId === item.fileId) ||
251
262
  (!checkById && file.realFile?.name === item.realFile?.name)) {
252
263
  this.uploadedFiles['_results'][index].updateHover(true);
@@ -258,7 +269,7 @@ export class CaUploadFilesComponent {
258
269
  }
259
270
  }
260
271
  hoverArrow(mod) {
261
- this._files.forEach((item, index) => {
272
+ this.files.forEach((item, index) => {
262
273
  this.uploadedFiles['_results'][index].hoverArrow(mod);
263
274
  });
264
275
  }
@@ -270,11 +281,11 @@ export class CaUploadFilesComponent {
270
281
  this.destroy$.complete();
271
282
  }
272
283
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaUploadFilesComponent, deps: [{ token: i1.CaUploadFileService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
273
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaUploadFilesComponent, isStandalone: true, selector: "app-ca-upload-files", inputs: { files: "files", slider: "slider", carouselConfig: "carouselConfig", hasCrop: "hasCrop", isRoundCrop: "isRoundCrop", hasBlobUrl: "hasBlobUrl", onlyOneTagFile: "onlyOneTagFile", dropzoneConf: "dropzoneConf", dropzoneCustomWidth: "dropzoneCustomWidth", isVisibleCropAndDrop: "isVisibleCropAndDrop", initialCropperPosition: "initialCropperPosition", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", review: "review", configFile: "configFile", size: "size", slideWidth: "slideWidth" }, outputs: { documentReviewInputEvent: "documentReviewInputEvent", onFileEvent: "onFileEvent", closeDropzone: "closeDropzone", fileAdded: "fileAdded" }, providers: [
284
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaUploadFilesComponent, isStandalone: true, selector: "app-ca-upload-files", inputs: { slider: "slider", carouselConfig: "carouselConfig", hasCrop: "hasCrop", isRoundCrop: "isRoundCrop", hasBlobUrl: "hasBlobUrl", onlyOneTagFile: "onlyOneTagFile", dropzoneConf: "dropzoneConf", dropzoneCustomWidth: "dropzoneCustomWidth", isVisibleCropAndDrop: "isVisibleCropAndDrop", initialCropperPosition: "initialCropperPosition", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", review: "review", configFile: "configFile", size: "size", slideWidth: "slideWidth", files: "files" }, outputs: { documentReviewInputEvent: "documentReviewInputEvent", onFileEvent: "onFileEvent", closeDropzone: "closeDropzone", fileAdded: "fileAdded" }, providers: [
274
285
  provideLottieOptions({
275
286
  player: () => import('lottie-web'),
276
287
  }),
277
- ], viewQueries: [{ propertyName: "modalCarousel", first: true, predicate: CaUploadFilesCarouselComponent, descendants: true }, { propertyName: "uploadedFiles", predicate: CaUploadFileComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"ta-upload d-flex align-items-center {{ configFile.customClassName }}\"\n [ngClass]=\"\n _files?.length\n | uploadClass\n : carouselConfig.size\n : review.isReview\n : slider.dontUseSlider\n \"\n>\n <!-- Carousel Files -->\n <ng-container *ngIf=\"_files?.length && !slider.dontUseSlider && !hasCrop\">\n <app-ca-upload-files-carousel\n [config]=\"carouselFileConfig\"\n (activeSlide)=\"currentSlide = $event\"\n [slideWidth]=\"slideWidth\"\n (hoverArrowEmit)=\"hoverArrow($event)\"\n >\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n #uploadedFiles\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileHover)=\"fileHover($event)\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </app-ca-upload-files-carousel>\n </ng-container>\n\n <ng-container *ngIf=\"slider.dontUseSlider && !hasCrop\">\n <div class=\"documents_holder\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n (onFileEvent)=\"onUploadFiles($event)\"\n (closeDropzone)=\"dropZoneClose()\"\n ></app-ca-upload-dropzone>\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- Image Crop Template -->\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n <ng-container *ngIf=\"hasCrop && _files.length\">\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <app-ca-logo-change\n [hasBlobUrl]=\"hasBlobUrl\"\n [imageToCrop]=\"file?.url\"\n [isRoundCropper]=\"isRoundCrop\"\n [isDropzoneShown]=\"isDropzoneShown\"\n [initialCropperPosition]=\"initialCropperPosition\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n [customWidth]=\"dropzoneCustomWidth\"\n (sendImageData)=\"onUploadFiles($event)\"\n ></app-ca-logo-change>\n </ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"hasCrop && _files.length && isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n <ng-container *ngIf=\"isDropzoneShown\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n [customWidth]=\"dropzoneCustomWidth\"\n [isDropzoneShownInCrop]=\"hasCrop && !!_files.length && isDropzoneShown\"\n (onFileEvent)=\"onUploadFiles($event)\"\n ></app-ca-upload-dropzone>\n </ng-container>\n </div>\n</div>\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{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}.ta-card-body{overflow:visible!important}.split-crop-holder.split{width:50%}.split-crop-holder.hidden-drop{display:none}.ta-upload{gap:8px}.ta-upload .ta-upload-dropzone{height:186px;width:calc(100% - 10px);margin:0 6px}.ta-upload .documents_holder{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;transition:all .3s ease-in-out}.ta-upload .documents_holder .ta-upload-carousel-container{transition:all .3s ease-in-out}.ta-upload.documents{display:block!important}.ta-upload.documents .ta-upload-dropzone{height:332px;width:100%;margin:0}.ta-upload-small{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:8px;transition:all .3s ease-in-out}.ta-upload-medium-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-medium-files{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-twofiles{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-threefiles{grid-template-columns:524px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-review-mode{padding:8px 6px 6px 0;grid-template-columns:1fr;align-items:center;justify-content:center}.ta-upload.driver-details-pdf{grid-template-columns:1fr;grid-template-rows:312px}.ta-upload.company-documents{grid-template-columns:1fr;grid-template-rows:332px}.ta-upload.driver-card-pdf{grid-template-columns:1fr;grid-template-rows:416px}.ta-upload.company-details-pdf{grid-template-columns:1fr;grid-template-rows:378px}.ta-upload.landscape-details-view{grid-template-columns:1fr;grid-template-rows:200px}.ta-upload.todo-details,.ta-upload.table-details{grid-template-columns:100% 1fr;grid-template-rows:200px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "ngmodule", type: NgbPopoverModule }, { kind: "component", type:
288
+ ], viewQueries: [{ propertyName: "modalCarousel", first: true, predicate: CaUploadFilesCarouselComponent, descendants: true }, { propertyName: "uploadedFiles", predicate: CaUploadFileComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"ta-upload d-flex align-items-center {{ configFile.customClassName }}\"\n [ngClass]=\"\n files?.length\n | uploadClass\n : carouselConfig.size\n : review.isReview\n : slider.dontUseSlider\n \"\n>\n <!-- Carousel Files -->\n @if (files?.length && !slider.dontUseSlider && !hasCrop) {\n <app-ca-upload-files-carousel\n [config]=\"carouselFileConfig\"\n (activeSlide)=\"currentSlide = $event\"\n [slideWidth]=\"slideWidth\"\n (hoverArrowEmit)=\"hoverArrow($event)\"\n >\n <ng-container *ngFor=\"let file of files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n #uploadedFiles\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileHover)=\"fileHover($event)\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </app-ca-upload-files-carousel>\n }\n\n @if (slider.dontUseSlider && !hasCrop) {\n <div class=\"documents_holder\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n (onFileEvent)=\"onUploadFiles($event)\"\n (closeDropzone)=\"dropZoneClose()\"\n ></app-ca-upload-dropzone>\n @for (file of files; track identity) {\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Image Crop Template -->\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n @if (hasCrop && files.length) {\n @for (file of files; track identity) {\n <app-ca-logo-change\n [hasBlobUrl]=\"hasBlobUrl\"\n [imageToCrop]=\"file?.url\"\n [isRoundCropper]=\"isRoundCrop\"\n [isDropzoneShown]=\"isDropzoneShown\"\n [initialCropperPosition]=\"initialCropperPosition\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n [customWidth]=\"dropzoneCustomWidth\"\n (sendImageData)=\"onUploadFiles($event)\"\n ></app-ca-logo-change>\n }\n }\n </div>\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"hasCrop && files.length && isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n @if (isDropzoneShown) {\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n [customWidth]=\"dropzoneCustomWidth\"\n [isDropzoneShownInCrop]=\"\n hasCrop && !!files.length && isDropzoneShown\n \"\n (onFileEvent)=\"onUploadFiles($event)\"\n ></app-ca-upload-dropzone>\n }\n </div>\n</div>\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{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}.ta-card-body{overflow:visible!important}.split-crop-holder.split{width:50%}.split-crop-holder.hidden-drop{display:none}.ta-upload{gap:8px}.ta-upload .ta-upload-dropzone{height:186px;width:calc(100% - 10px);margin:0 6px}.ta-upload .documents_holder{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;transition:all .3s ease-in-out}.ta-upload .documents_holder .ta-upload-carousel-container{transition:all .3s ease-in-out}.ta-upload.documents{display:block!important}.ta-upload.documents .ta-upload-dropzone{height:332px;width:100%;margin:0}.ta-upload-small{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:8px;transition:all .3s ease-in-out}.ta-upload-medium-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-medium-files{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-twofiles{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-threefiles{grid-template-columns:524px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-review-mode{padding:8px 6px 6px 0;grid-template-columns:1fr;align-items:center;justify-content:center}.ta-upload.driver-details-pdf{grid-template-columns:1fr;grid-template-rows:312px}.ta-upload.company-documents{grid-template-columns:1fr;grid-template-rows:332px}.ta-upload.driver-card-pdf{grid-template-columns:1fr;grid-template-rows:416px}.ta-upload.company-details-pdf{grid-template-columns:1fr;grid-template-rows:378px}.ta-upload.landscape-details-view{grid-template-columns:1fr;grid-template-rows:200px}.ta-upload.todo-details,.ta-upload.table-details{grid-template-columns:100% 1fr;grid-template-rows:200px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "ngmodule", type: NgbPopoverModule }, { kind: "component", type:
278
289
  //Component
279
290
  CaUploadDropzoneComponent, selector: "app-ca-upload-dropzone", inputs: ["config", "isDropzoneShownInCrop", "customWidth"], outputs: ["onFileEvent", "onDropBackground", "closeDropzone"] }, { kind: "component", type: CaUploadFileComponent, selector: "app-ca-upload-file", inputs: ["config", "reviewFileConfig"], outputs: ["fileAction", "deleteAction", "documentReviewInputEvent", "landscapeCheck", "fileHover"] }, { kind: "component", type: CaUploadFilesCarouselComponent, selector: "app-ca-upload-files-carousel", inputs: ["slideWidth", "config"], outputs: ["activeSlide", "hoverArrowEmit"] }, { kind: "component", type: CaLogoChangeComponent, selector: "app-ca-logo-change", inputs: ["customClass", "imageToCrop", "isRoundCropper", "imageChangedEvent", "isDropzoneShown", "hasBlobUrl", "initialCropperPosition", "containWithinAspectRatio", "aspectRatio", "customWidth"], outputs: ["sendImageData"] }, { kind: "pipe", type:
280
291
  //Pipe
@@ -293,12 +304,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
293
304
  CaLogoChangeComponent,
294
305
  //Pipe
295
306
  UploadClassPipe,
296
- MapFilePipe
307
+ MapFilePipe,
297
308
  ], providers: [
298
309
  provideLottieOptions({
299
310
  player: () => import('lottie-web'),
300
311
  }),
301
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ta-upload d-flex align-items-center {{ configFile.customClassName }}\"\n [ngClass]=\"\n _files?.length\n | uploadClass\n : carouselConfig.size\n : review.isReview\n : slider.dontUseSlider\n \"\n>\n <!-- Carousel Files -->\n <ng-container *ngIf=\"_files?.length && !slider.dontUseSlider && !hasCrop\">\n <app-ca-upload-files-carousel\n [config]=\"carouselFileConfig\"\n (activeSlide)=\"currentSlide = $event\"\n [slideWidth]=\"slideWidth\"\n (hoverArrowEmit)=\"hoverArrow($event)\"\n >\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n #uploadedFiles\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileHover)=\"fileHover($event)\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </app-ca-upload-files-carousel>\n </ng-container>\n\n <ng-container *ngIf=\"slider.dontUseSlider && !hasCrop\">\n <div class=\"documents_holder\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n (onFileEvent)=\"onUploadFiles($event)\"\n (closeDropzone)=\"dropZoneClose()\"\n ></app-ca-upload-dropzone>\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- Image Crop Template -->\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n <ng-container *ngIf=\"hasCrop && _files.length\">\n <ng-container *ngFor=\"let file of _files; trackBy: identity\">\n <app-ca-logo-change\n [hasBlobUrl]=\"hasBlobUrl\"\n [imageToCrop]=\"file?.url\"\n [isRoundCropper]=\"isRoundCrop\"\n [isDropzoneShown]=\"isDropzoneShown\"\n [initialCropperPosition]=\"initialCropperPosition\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n [customWidth]=\"dropzoneCustomWidth\"\n (sendImageData)=\"onUploadFiles($event)\"\n ></app-ca-logo-change>\n </ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"hasCrop && _files.length && isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n <ng-container *ngIf=\"isDropzoneShown\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n [customWidth]=\"dropzoneCustomWidth\"\n [isDropzoneShownInCrop]=\"hasCrop && !!_files.length && isDropzoneShown\"\n (onFileEvent)=\"onUploadFiles($event)\"\n ></app-ca-upload-dropzone>\n </ng-container>\n </div>\n</div>\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{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}.ta-card-body{overflow:visible!important}.split-crop-holder.split{width:50%}.split-crop-holder.hidden-drop{display:none}.ta-upload{gap:8px}.ta-upload .ta-upload-dropzone{height:186px;width:calc(100% - 10px);margin:0 6px}.ta-upload .documents_holder{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;transition:all .3s ease-in-out}.ta-upload .documents_holder .ta-upload-carousel-container{transition:all .3s ease-in-out}.ta-upload.documents{display:block!important}.ta-upload.documents .ta-upload-dropzone{height:332px;width:100%;margin:0}.ta-upload-small{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:8px;transition:all .3s ease-in-out}.ta-upload-medium-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-medium-files{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-twofiles{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-threefiles{grid-template-columns:524px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-review-mode{padding:8px 6px 6px 0;grid-template-columns:1fr;align-items:center;justify-content:center}.ta-upload.driver-details-pdf{grid-template-columns:1fr;grid-template-rows:312px}.ta-upload.company-documents{grid-template-columns:1fr;grid-template-rows:332px}.ta-upload.driver-card-pdf{grid-template-columns:1fr;grid-template-rows:416px}.ta-upload.company-details-pdf{grid-template-columns:1fr;grid-template-rows:378px}.ta-upload.landscape-details-view{grid-template-columns:1fr;grid-template-rows:200px}.ta-upload.todo-details,.ta-upload.table-details{grid-template-columns:100% 1fr;grid-template-rows:200px}\n"] }]
312
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ta-upload d-flex align-items-center {{ configFile.customClassName }}\"\n [ngClass]=\"\n files?.length\n | uploadClass\n : carouselConfig.size\n : review.isReview\n : slider.dontUseSlider\n \"\n>\n <!-- Carousel Files -->\n @if (files?.length && !slider.dontUseSlider && !hasCrop) {\n <app-ca-upload-files-carousel\n [config]=\"carouselFileConfig\"\n (activeSlide)=\"currentSlide = $event\"\n [slideWidth]=\"slideWidth\"\n (hoverArrowEmit)=\"hoverArrow($event)\"\n >\n <ng-container *ngFor=\"let file of files; trackBy: identity\">\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n #uploadedFiles\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileHover)=\"fileHover($event)\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n </ng-container>\n </app-ca-upload-files-carousel>\n }\n\n @if (slider.dontUseSlider && !hasCrop) {\n <div class=\"documents_holder\">\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n (onFileEvent)=\"onUploadFiles($event)\"\n (closeDropzone)=\"dropZoneClose()\"\n ></app-ca-upload-dropzone>\n @for (file of files; track identity) {\n <div class=\"ta-upload-carousel-container\">\n <div>\n <app-ca-upload-file\n [config]=\"configFile | mapFile: file\"\n [reviewFileConfig]=\"reviewFileConfig\"\n (fileAction)=\"onFileAction($event)\"\n (landscapeCheck)=\"onLandscapeCheck($event)\"\n (documentReviewInputEvent)=\"\n documentReviewInputEventMethod($event)\n \"\n ></app-ca-upload-file>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Image Crop Template -->\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n @if (hasCrop && files.length) {\n @for (file of files; track identity) {\n <app-ca-logo-change\n [hasBlobUrl]=\"hasBlobUrl\"\n [imageToCrop]=\"file?.url\"\n [isRoundCropper]=\"isRoundCrop\"\n [isDropzoneShown]=\"isDropzoneShown\"\n [initialCropperPosition]=\"initialCropperPosition\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n [customWidth]=\"dropzoneCustomWidth\"\n (sendImageData)=\"onUploadFiles($event)\"\n ></app-ca-logo-change>\n }\n }\n </div>\n\n <div\n class=\"split-crop-holder\"\n [class.split]=\"hasCrop && files.length && isDropzoneShown\"\n [ngClass]=\"{ 'hidden-drop': !isVisibleCropAndDrop }\"\n >\n @if (isDropzoneShown) {\n <app-ca-upload-dropzone\n [config]=\"dropzoneConf\"\n [customWidth]=\"dropzoneCustomWidth\"\n [isDropzoneShownInCrop]=\"\n hasCrop && !!files.length && isDropzoneShown\n \"\n (onFileEvent)=\"onUploadFiles($event)\"\n ></app-ca-upload-dropzone>\n }\n </div>\n</div>\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{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}.ta-card-body{overflow:visible!important}.split-crop-holder.split{width:50%}.split-crop-holder.hidden-drop{display:none}.ta-upload{gap:8px}.ta-upload .ta-upload-dropzone{height:186px;width:calc(100% - 10px);margin:0 6px}.ta-upload .documents_holder{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;transition:all .3s ease-in-out}.ta-upload .documents_holder .ta-upload-carousel-container{transition:all .3s ease-in-out}.ta-upload.documents{display:block!important}.ta-upload.documents .ta-upload-dropzone{height:332px;width:100%;margin:0}.ta-upload-small{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:8px;transition:all .3s ease-in-out}.ta-upload-medium-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-medium-files{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-file{grid-template-columns:164px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-twofiles{grid-template-columns:344px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-large-threefiles{grid-template-columns:524px 1fr;grid-template-rows:194px;-moz-column-gap:6px;column-gap:6px;transition:all .3s ease-in-out}.ta-upload-review-mode{padding:8px 6px 6px 0;grid-template-columns:1fr;align-items:center;justify-content:center}.ta-upload.driver-details-pdf{grid-template-columns:1fr;grid-template-rows:312px}.ta-upload.company-documents{grid-template-columns:1fr;grid-template-rows:332px}.ta-upload.driver-card-pdf{grid-template-columns:1fr;grid-template-rows:416px}.ta-upload.company-details-pdf{grid-template-columns:1fr;grid-template-rows:378px}.ta-upload.landscape-details-view{grid-template-columns:1fr;grid-template-rows:200px}.ta-upload.todo-details,.ta-upload.table-details{grid-template-columns:100% 1fr;grid-template-rows:200px}\n"] }]
302
313
  }], ctorParameters: () => [{ type: i1.CaUploadFileService }, { type: i2.HttpClient }], propDecorators: { modalCarousel: [{
303
314
  type: ViewChild,
304
315
  args: [CaUploadFilesCarouselComponent]
@@ -311,8 +322,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
311
322
  type: Output
312
323
  }], closeDropzone: [{
313
324
  type: Output
314
- }], files: [{
315
- type: Input
316
325
  }], slider: [{
317
326
  type: Input
318
327
  }], carouselConfig: [{
@@ -347,5 +356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
347
356
  type: Input
348
357
  }], fileAdded: [{
349
358
  type: Output
359
+ }], files: [{
360
+ type: Input
350
361
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWZpbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jYS11cGxvYWQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NhLXVwbG9hZC1maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsWUFBWTtBQUNaLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBWTFILE9BQU87QUFDUCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFRbkUsTUFBTTtBQUNOLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXZELFdBQVc7QUFDWCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7QUEyQm5GLE1BQU0sT0FBTyxzQkFBc0I7SUFhakMsU0FBUztJQUNULElBQWEsS0FBSyxDQUFDLElBQWtCO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBcUNELFlBQ1UsaUJBQXNDLEVBQ3RDLElBQWdCO1FBRGhCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFDdEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQW5EaEIsNkJBQXdCLEdBQ2hDLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQ3JDLGdCQUFXLEdBQ25CLElBQUksWUFBWSxFQUFhLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTSxDQUFDO1FBYXhDLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVyQyxNQUFNO1FBQ0csbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFTaEMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBQzFDLGdCQUFXLEdBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFNL0IsU0FBSSxHQUFXLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDbkMsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUV4QixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4QyxXQUFNLEdBQWlCLEVBQUUsQ0FBQztRQUUxQixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUtwQyxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWM7YUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsSUFBNkMsRUFBRSxFQUFFO1lBQzNELElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUVJLFlBQVksQ0FBQyxJQUEwQztRQUM1RCxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLGNBQWMsQ0FBQyxHQUFHO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDcEIsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN4QixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNsQyxJQUNFLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO3dCQUNwQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDOzRCQUMvQixLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ25DLENBQUM7d0JBQ0QsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDdkIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUM5QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDL0MsQ0FBQztnQkFFRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7aUJBQzNDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFM0MsSUFDRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ25FLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNwRSxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztnQkFFRCxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYzt5QkFDbkQsV0FBNEIsQ0FBQztvQkFDaEMsTUFBTSxPQUFPLEdBQ1gsWUFBWSxLQUFLLGFBQWEsQ0FBQyxLQUFLO3dCQUNsQyxDQUFDLENBQUMsQ0FBQzt3QkFDSCxDQUFDLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxNQUFNOzRCQUNyQyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVWLE1BQU0sVUFBVSxHQUNkLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO3dCQUNoRSxDQUFDLFlBQVksS0FBSyxhQUFhLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDakUsQ0FBQyxZQUFZLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFbkUsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztvQkFDL0QsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxjQUFjO2dCQUNoQyxJQUFJLGFBQWEsR0FBVyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDekMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLEtBQUssRUFBRSxhQUFhO2lCQUNyQixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUVSLEtBQUssY0FBYyxDQUFDLFlBQVk7Z0JBQzlCLElBQUksV0FBVyxHQUFXLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUN6QyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN0QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsS0FBSyxFQUFFLFdBQVc7aUJBQ25CLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBRVI7Z0JBQ0UsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQTZDO1FBQ2hFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hFLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUU5QyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQzdDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQyxDQUFDO2dCQUVGLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLHVCQUF1QixDQUFDLENBQUM7Z0JBQ2hFLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2YsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDMUQsQ0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxPQUFPO2dCQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDOztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVsRSxZQUFZO1lBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYztxQkFDbkQsV0FBNEIsQ0FBQztnQkFFaEMsTUFBTSxPQUFPLEdBQ1gsWUFBWSxLQUFLLGFBQWEsQ0FBQyxLQUFLO29CQUNsQyxDQUFDLENBQUMsQ0FBQztvQkFDSCxDQUFDLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxNQUFNO3dCQUNyQyxDQUFDLENBQUMsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVWLE1BQU0sVUFBVSxHQUNkLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNoRSxDQUFDLFlBQVksS0FBSyxhQUFhLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxZQUFZLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFbkUsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUU5QyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQzdDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQyxDQUFDO2dCQUVGLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsK0NBQStDO29CQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUV6Qyw4Q0FBOEM7b0JBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxPQUFPLENBQUMsUUFBUSx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUNNLDhCQUE4QixDQUFDLElBR3JDO1FBQ0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUN4RCxDQUFDLFFBQWMsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxhQUFhLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUMvQixhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUNsQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFdEIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxDQUFDLEVBQ0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUFDLFNBQWtCO1FBQ3hDLElBQUksU0FBUztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLHdCQUF3QixDQUFDO0lBQzVFLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pELElBQUksU0FBUyxHQUFHLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNsQyxJQUNFLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDM0MsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUMzRCxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQVk7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXJWVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxdUJBVHRCO1lBQ1Qsb0JBQW9CLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQ25DLENBQUM7U0FDSCx5RUFNVSw4QkFBOEIsbUVBRzNCLHFCQUFxQixnREMvRXJDLG1rSEFzR0EsMGpsQkRoREksWUFBWSw2VkFDWixvQkFBb0IsOEJBQ3BCLGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCx5QkFBeUIsOExBQ3pCLHFCQUFxQiwyTUFDckIsOEJBQThCLHVKQUM5QixxQkFBcUI7Z0JBQ3JCLE1BQU07Z0JBQ04sZUFBZSwrQ0FDZixXQUFXOzs0RkFXRixzQkFBc0I7a0JBekJsQyxTQUFTO2lDQUNJLElBQUksWUFDTixxQkFBcUIsV0FDdEI7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCx5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsOEJBQThCO3dCQUM5QixxQkFBcUI7d0JBQ3JCLE1BQU07d0JBQ04sZUFBZTt3QkFDZixXQUFXO3FCQUNkLGFBQ1k7d0JBQ1Qsb0JBQW9CLENBQUM7NEJBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO3lCQUNuQyxDQUFDO3FCQUNILG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO2lIQUl4QyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLDhCQUE4QjtnQkFJekMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQjtnQkFHekIsd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFHTSxLQUFLO3NCQUFqQixLQUFLO2dCQVFHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBwcm92aWRlTG90dGllT3B0aW9ucyB9IGZyb20gJ25neC1sb3R0aWUnO1xuaW1wb3J0IHsgTmdiUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcblxuLy9Db21wb25lbnRzXG5pbXBvcnQgeyBDYVVwbG9hZERyb3B6b25lQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50JztcbmltcG9ydCB7IENhVXBsb2FkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS11cGxvYWQtZmlsZS9jYS11cGxvYWQtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FVcGxvYWRGaWxlc0Nhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy1jYXJvdXNlbC9jYS11cGxvYWQtZmlsZXMtY2Fyb3VzZWwuY29tcG9uZW50JztcblxuLy9Nb2RlbHNcbmltcG9ydCB7XG4gIERvY3VtZW50UmV2aWV3SW5wdXRFdmVudCxcbiAgRmlsZU9wdGlvbkNvbmZpZyxcbiAgUmV2aWV3RmlsZUNvbmZpZyxcbiAgU2xpZGVyLFxufSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBGaWxlQ29uZmlnLCBGaWxlRXZlbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtdXBsb2FkLWRyb3B6b25lL21vZGVscyc7XG5pbXBvcnQgeyBGaWxlc0Nhcm91c2VsQ29uZmlnIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy1jYXJvdXNlbC9tb2RlbHMnO1xuXG4vL0VudW1zXG5pbXBvcnQgeyBGaWxlc1NpemVFbnVtLCBGaWxlVHlwZXNFbnVtIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgeyBEb2N1bWVudEFjdGlvbiB9IGZyb20gJy4vY29tcG9uZW50cy9jYS11cGxvYWQtZmlsZS9lbnVtcyc7XG5cbi8vU2VydmljZXNcbmltcG9ydCB7IENhVXBsb2FkRmlsZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuLy9Db25maWdcbmltcG9ydCB7IERyb3B6b25lQ29uZiB9IGZyb20gJy4vY29tcG9uZW50cy9jYS11cGxvYWQtZHJvcHpvbmUvY29uZmlnJztcblxuLy9QaXBlXG5pbXBvcnQgeyBNYXBGaWxlUGlwZSwgVXBsb2FkQ2xhc3NQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5cbi8vQ29tcG9uZW50XG5pbXBvcnQgeyBDYUxvZ29DaGFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYS1sb2dvLWNoYW5nZS9jYS1sb2dvLWNoYW5nZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdhcHAtY2EtdXBsb2FkLWZpbGVzJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIC8vQ29tcG9uZW50XG4gICAgQ2FVcGxvYWREcm9wem9uZUNvbXBvbmVudCxcbiAgICBDYVVwbG9hZEZpbGVDb21wb25lbnQsXG4gICAgQ2FVcGxvYWRGaWxlc0Nhcm91c2VsQ29tcG9uZW50LFxuICAgIENhTG9nb0NoYW5nZUNvbXBvbmVudCxcbiAgICAvL1BpcGVcbiAgICBVcGxvYWRDbGFzc1BpcGUsXG4gICAgTWFwRmlsZVBpcGVcbl0sXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVMb3R0aWVPcHRpb25zKHtcbiAgICAgIHBsYXllcjogKCkgPT4gaW1wb3J0KCdsb3R0aWUtd2ViJyksXG4gICAgfSksXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS11cGxvYWQtZmlsZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS11cGxvYWQtZmlsZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhVXBsb2FkRmlsZXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChDYVVwbG9hZEZpbGVzQ2Fyb3VzZWxDb21wb25lbnQpXG4gIHB1YmxpYyBtb2RhbENhcm91c2VsITogQ2FVcGxvYWRGaWxlc0Nhcm91c2VsQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FVcGxvYWRGaWxlQ29tcG9uZW50KVxuICB1cGxvYWRlZEZpbGVzITogUXVlcnlMaXN0PENhVXBsb2FkRmlsZUNvbXBvbmVudD47XG5cbiAgQE91dHB1dCgpIGRvY3VtZW50UmV2aWV3SW5wdXRFdmVudCA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudFJldmlld0lucHV0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkZpbGVFdmVudDogRXZlbnRFbWl0dGVyPEZpbGVFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RmlsZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2xvc2VEcm9wem9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgLy9HZW5lcmFsXG4gIEBJbnB1dCgpIHNldCBmaWxlcyhkYXRhOiBGaWxlQ29uZmlnW10pIHtcbiAgICB0aGlzLl9maWxlcyA9IFsuLi5kYXRhXTtcbiAgICBpZiAodGhpcy5fY29uZmlnPy50eXBlID09IEZpbGVUeXBlc0VudW0uREVUQUlMUykge1xuICAgICAgdGhpcy5tb2RhbENhcm91c2VsPy5zbGlkZVRvRmlsZSgwKTtcbiAgICB9XG4gIH1cblxuICAvL0Nhcm91c2VsXG4gIEBJbnB1dCgpIHNsaWRlciE6IFNsaWRlcjtcbiAgQElucHV0KCkgY2Fyb3VzZWxDb25maWchOiBGaWxlc0Nhcm91c2VsQ29uZmlnO1xuICBASW5wdXQoKSBoYXNDcm9wOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNSb3VuZENyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQmxvYlVybDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVGFnc1xuICBASW5wdXQoKSBvbmx5T25lVGFnRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vRHJvcHpvbmVcbiAgQElucHV0KCkgZHJvcHpvbmVDb25mITogRHJvcHpvbmVDb25mW107XG4gIEBJbnB1dCgpIGRyb3B6b25lQ3VzdG9tV2lkdGghOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgaXNWaXNpYmxlQ3JvcEFuZERyb3AhOiBib29sZWFuO1xuICAvL0Nyb3BwZXJcbiAgQElucHV0KCkgaW5pdGlhbENyb3BwZXJQb3NpdGlvbiE6IENyb3BwZXJQb3NpdGlvbjtcbiAgQElucHV0KCkgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFzcGVjdFJhdGlvOiBudW1iZXJbXSA9IFsxLCAxXTtcblxuICAvL1Jldmlld1xuICBASW5wdXQoKSByZXZpZXchOiBSZXZpZXdGaWxlQ29uZmlnO1xuXG4gIEBJbnB1dCgpIGNvbmZpZ0ZpbGUhOiBGaWxlT3B0aW9uQ29uZmlnO1xuICBASW5wdXQoKSBzaXplOiBzdHJpbmcgPSBGaWxlc1NpemVFbnVtLlNNQUxMO1xuICBASW5wdXQoKSBzbGlkZVdpZHRoOiBudW1iZXIgPSAxODA7XG5cbiAgQE91dHB1dCgpIGZpbGVBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcblxuICBwdWJsaWMgX2ZpbGVzOiBGaWxlQ29uZmlnW10gPSBbXTtcbiAgcHVibGljIF9jb25maWchOiBGaWxlT3B0aW9uQ29uZmlnO1xuICBwdWJsaWMgY3VycmVudFNsaWRlOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgaXNEcm9wem9uZVNob3duOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1cGxvYWRGaWxlU2VydmljZTogQ2FVcGxvYWRGaWxlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvVXBsb2FkZWRGaWxlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1VwbG9hZGVkRmlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRGaWxlU2VydmljZS51cGxvYWRlZEZpbGVzJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBmaWxlczogRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5vblVwbG9hZEZpbGVzKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2Fyb3VzZWxGaWxlQ29uZmlnKCk6IEZpbGVzQ2Fyb3VzZWxDb25maWcge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY2Fyb3VzZWxDb25maWcgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV2aWV3RmlsZUNvbmZpZygpOiBSZXZpZXdGaWxlQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5yZXZpZXc7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSByZXR1cm5lZCBkYXRhIGZyb20gZmlsZSBhY3Rpb24gKG9uZSBvciBtdWx0aXBsZSlcbiAgICovXG5cbiAgcHVibGljIG9uRmlsZUFjdGlvbihkYXRhOiB7IGZpbGU6IEZpbGVDb25maWc7IGFjdGlvbjogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRhdGEuYWN0aW9uKSB7XG4gICAgICBjYXNlIERvY3VtZW50QWN0aW9uLlRBRzpcbiAgICAgICAgdGhpcy5vbkZpbGVFdmVudC5lbWl0KHtcbiAgICAgICAgICBmaWxlczogIXRoaXMub25seU9uZVRhZ0ZpbGUgPyB0aGlzLl9maWxlcyA6IGRhdGEuZmlsZSxcbiAgICAgICAgICBhY3Rpb246IGRhdGEuYWN0aW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRG9jdW1lbnRBY3Rpb24uREVMRVRFOlxuICAgICAgICBsZXQgaXNMYXN0RGVsZXRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9maWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0uZmlsZU5hbWUgPT09IGRhdGEuZmlsZS5maWxlTmFtZSAmJlxuICAgICAgICAgICAgKGluZGV4ID09PSB0aGlzLl9maWxlcy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICAgIGluZGV4ID09PSB0aGlzLl9maWxlcy5sZW5ndGggLSAyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNMYXN0RGVsZXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9maWxlcyA9IHRoaXMuX2ZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5maWxlTmFtZSAhPT0gZGF0YS5maWxlLmZpbGVOYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vbkZpbGVFdmVudC5lbWl0KHtcbiAgICAgICAgICBmaWxlczogdGhpcy5fZmlsZXMsXG4gICAgICAgICAgYWN0aW9uOiBkYXRhLmFjdGlvbixcbiAgICAgICAgICBkZWxldGVJZDogZGF0YS5maWxlWydmaWxlSWQnXSB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gdGhpcy5fZmlsZXMubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuc2l6ZSA9PT0gRmlsZXNTaXplRW51bS5NT0RBTF9MQVJHRSAmJiB0aGlzLl9maWxlcy5sZW5ndGggPCA0KSB8fFxuICAgICAgICAgICh0aGlzLnNpemUgPT09IEZpbGVzU2l6ZUVudW0uTU9EQUxfTUVESVVNICYmIHRoaXMuX2ZpbGVzLmxlbmd0aCA8IDMpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC5jdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC50cmFuc2xhdGVYTXVsdGlwbGVTbGlkZXMgPSAwO1xuICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC5tdWx0aXBsZUN1cnJlbnRTbGlkZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3REZWxldGVkICYmIHRoaXMubW9kYWxDYXJvdXNlbCkge1xuICAgICAgICAgIGNvbnN0IGNhcm91c2VsU2l6ZSA9IHRoaXMubW9kYWxDYXJvdXNlbC5jYXJvdXNlbENvbmZpZ1xuICAgICAgICAgICAgLmN1c3RvbUNsYXNzIGFzIEZpbGVzU2l6ZUVudW07XG4gICAgICAgICAgY29uc3Qgc2xpZGVUbyA9XG4gICAgICAgICAgICBjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uTEFSR0VcbiAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgIDogY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLk1FRElVTVxuICAgICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICAgIDogMTtcblxuICAgICAgICAgIGNvbnN0IGFsbG93U2xpZGUgPVxuICAgICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5MQVJHRSAmJiB0aGlzLl9maWxlcy5sZW5ndGggPiAyKSB8fFxuICAgICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5NRURJVU0gJiYgdGhpcy5fZmlsZXMubGVuZ3RoID4gMSkgfHxcbiAgICAgICAgICAgIChjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uU01BTEwgJiYgdGhpcy5fZmlsZXMubGVuZ3RoID4gMCk7XG5cbiAgICAgICAgICBpZiAoYWxsb3dTbGlkZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RhbENhcm91c2VsLnNsaWRlVG9GaWxlKHRoaXMuX2ZpbGVzLmxlbmd0aCAtIHNsaWRlVG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5NQVJLX0lOQ09SUkVDVDpcbiAgICAgICAgbGV0IGluY29ycmVjdEluZHg6IG51bWJlciA9IDA7XG4gICAgICAgIHRoaXMuX2ZpbGVzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uZmlsZU5hbWUgPT09IGRhdGEuZmlsZS5maWxlTmFtZSkge1xuICAgICAgICAgICAgaW5jb3JyZWN0SW5keCA9IGluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vbkZpbGVFdmVudC5lbWl0KHtcbiAgICAgICAgICBmaWxlczogdGhpcy5fZmlsZXMsXG4gICAgICAgICAgYWN0aW9uOiBkYXRhLmFjdGlvbixcbiAgICAgICAgICBpbmRleDogaW5jb3JyZWN0SW5keCxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIERvY3VtZW50QWN0aW9uLk1BUktfQ09SUkVDVDpcbiAgICAgICAgbGV0IGNvcnJlY3RJbmR4OiBudW1iZXIgPSAwO1xuICAgICAgICB0aGlzLl9maWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLmZpbGVOYW1lID09PSBkYXRhLmZpbGUuZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvcnJlY3RJbmR4ID0gaW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgIGZpbGVzOiB0aGlzLl9maWxlcyxcbiAgICAgICAgICBhY3Rpb246IGRhdGEuYWN0aW9uLFxuICAgICAgICAgIGluZGV4OiBjb3JyZWN0SW5keCxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRGaWxlcyhkYXRhOiB7IGZpbGVzOiBGaWxlQ29uZmlnW107IGFjdGlvbjogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBpZiAoZGF0YS5hY3Rpb24gPT09ICdhZGQnICYmIHRoaXMuaGFzQ3JvcCAmJiB0aGlzLl9maWxlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBbLi4uZGF0YS5maWxlc107XG4gICAgICBpZiAodGhpcy5oYXNDcm9wKSB0aGlzLmlzRHJvcHpvbmVTaG93biA9IHRydWU7XG5cbiAgICAgIHVwbG9hZGVkRmlsZXMuZm9yRWFjaCgobmV3RmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZ0ZpbGVJbmRleCA9IHRoaXMuX2ZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZXhpc3RpbmdGaWxlKSA9PiBleGlzdGluZ0ZpbGUudXJsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGV4aXN0aW5nRmlsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuX2ZpbGVzW2V4aXN0aW5nRmlsZUluZGV4XSA9IG5ld0ZpbGU7XG4gICAgICAgICAgdGhpcy5maWxlQWRkZWQuZW1pdChuZXdGaWxlLnVybCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBGaWxlICR7bmV3RmlsZS5maWxlTmFtZX0gdG8gcmVwbGFjZSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMub25GaWxlRXZlbnQuZW1pdCh7IGZpbGVzOiBbXSwgYWN0aW9uOiAnYWRkJyB9KTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5hY3Rpb24gPT09ICdhZGQnKSB7XG4gICAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gWy4uLmRhdGEuZmlsZXNdO1xuXG4gICAgICBjb25zdCB1bmlxdWVGaWxlcyA9IHVwbG9hZGVkRmlsZXMuZmlsdGVyKFxuICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAhdGhpcy5fZmlsZXMuc29tZShcbiAgICAgICAgICAgIChleGlzdGluZ0ZpbGUpID0+IGV4aXN0aW5nRmlsZS5maWxlTmFtZSA9PT0gZmlsZS5maWxlTmFtZVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLl9maWxlcyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLl9maWxlcywgLi4udW5pcXVlRmlsZXNdKV07XG5cbiAgICAgIHVuaXF1ZUZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgdGhpcy5maWxlQWRkZWQuZW1pdChmaWxlLnJlYWxGaWxlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5oYXNDcm9wKSB0aGlzLmlzRHJvcHpvbmVTaG93biA9IGZhbHNlO1xuICAgICAgZWxzZSB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoeyBmaWxlczogdGhpcy5fZmlsZXMsIGFjdGlvbjogJ2FkZCcgfSk7XG5cbiAgICAgIC8vICBjYXJvdXNlbFxuICAgICAgaWYgKHRoaXMubW9kYWxDYXJvdXNlbCkge1xuICAgICAgICBjb25zdCBjYXJvdXNlbFNpemUgPSB0aGlzLm1vZGFsQ2Fyb3VzZWwuY2Fyb3VzZWxDb25maWdcbiAgICAgICAgICAuY3VzdG9tQ2xhc3MgYXMgRmlsZXNTaXplRW51bTtcblxuICAgICAgICBjb25zdCBzbGlkZVRvID1cbiAgICAgICAgICBjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uTEFSR0VcbiAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgOiBjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uTUVESVVNXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgY29uc3QgYWxsb3dTbGlkZSA9XG4gICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5MQVJHRSAmJiB0aGlzLl9maWxlcy5sZW5ndGggPiAyKSB8fFxuICAgICAgICAgIChjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uTUVESVVNICYmIHRoaXMuX2ZpbGVzLmxlbmd0aCA+IDEpIHx8XG4gICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5TTUFMTCAmJiB0aGlzLl9maWxlcy5sZW5ndGggPiAwKTtcblxuICAgICAgICBpZiAoYWxsb3dTbGlkZSkge1xuICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC5zbGlkZVRvRmlsZSh0aGlzLl9maWxlcy5sZW5ndGggLSBzbGlkZVRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGF0YS5hY3Rpb24gPT09ICdyZXBsYWNlJykge1xuICAgICAgY29uc3QgdXBsb2FkZWRGaWxlcyA9IFsuLi5kYXRhLmZpbGVzXTtcblxuICAgICAgaWYgKHRoaXMuaGFzQ3JvcCkgdGhpcy5pc0Ryb3B6b25lU2hvd24gPSB0cnVlO1xuXG4gICAgICB1cGxvYWRlZEZpbGVzLmZvckVhY2goKG5ld0ZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdGaWxlSW5kZXggPSB0aGlzLl9maWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGV4aXN0aW5nRmlsZSkgPT4gZXhpc3RpbmdGaWxlLnVybFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChleGlzdGluZ0ZpbGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyBmaWxlIGF0IHRoZSBmb3VuZCBpbmRleFxuICAgICAgICAgIHRoaXMuX2ZpbGVzW2V4aXN0aW5nRmlsZUluZGV4XSA9IG5ld0ZpbGU7XG5cbiAgICAgICAgICAvLyBFbWl0IHRoZSBuZXcgZmlsZSB0aGF0IHJlcGxhY2VkIHRoZSBvbGQgb25lXG4gICAgICAgICAgdGhpcy5maWxlQWRkZWQuZW1pdChuZXdGaWxlLnVybCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBGaWxlICR7bmV3RmlsZS5maWxlTmFtZX0gdG8gcmVwbGFjZSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMub25GaWxlRXZlbnQuZW1pdCh7IGZpbGVzOiB0aGlzLl9maWxlcywgYWN0aW9uOiAnYWRkJyB9KTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgaWYgKHRoaXMuaGFzQ3JvcCkgdGhpcy5pc0Ryb3B6b25lU2hvd24gPSB0cnVlO1xuICAgICAgdGhpcy5fZmlsZXMuc3BsaWNlKDAsIHRoaXMuX2ZpbGVzLmxlbmd0aCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBkb2N1bWVudFJldmlld0lucHV0RXZlbnRNZXRob2QoZGF0YToge1xuICAgIGZpbGU6IEZpbGVDb25maWc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0RXZlbnQuZW1pdCh7XG4gICAgICBmaWxlOiBkYXRhLmZpbGUsXG4gICAgICBtZXNzYWdlOiBkYXRhLm1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKGZpbGVVcmw6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQoZmlsZVVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoXG4gICAgICAoZmlsZUJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG4gICAgICAgIGFuY2hvckVsZW1lbnQuaHJlZiA9IG9iamVjdFVybDtcbiAgICAgICAgYW5jaG9yRWxlbWVudC5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgICAgICBhbmNob3JFbGVtZW50LmNsaWNrKCk7XG5cbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgICAgfSxcbiAgICAgIChkb3dubG9hZEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRvd25sb2FkaW5nIGZpbGU6JywgZG93bmxvYWRFcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxhbmRzY2FwZUNoZWNrKGxhbmRzY2FwZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChsYW5kc2NhcGUpIHRoaXMuY29uZmlnRmlsZS5jdXN0b21DbGFzc05hbWUgPSAnbGFuZHNjYXBlLWRldGFpbHMtdmlldyc7XG4gIH1cblxuICBwdWJsaWMgZHJvcFpvbmVDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRHJvcHpvbmUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGZpbGVIb3ZlcihmaWxlOiBGaWxlQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnRmlsZS5jdXN0b21DbGFzc05hbWUgPT09ICdtb2RhbHMnKSB7XG4gICAgICBsZXQgY2hlY2tCeUlkID0gZmlsZT8ucmVhbEZpbGUgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLl9maWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGNoZWNrQnlJZCAmJiBmaWxlPy5maWxlSWQgPT09IGl0ZW0uZmlsZUlkKSB8fFxuICAgICAgICAgICghY2hlY2tCeUlkICYmIGZpbGUucmVhbEZpbGU/Lm5hbWUgPT09IGl0ZW0ucmVhbEZpbGU/Lm5hbWUpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlc1snX3Jlc3VsdHMnXVtpbmRleF0udXBkYXRlSG92ZXIodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzWydfcmVzdWx0cyddW2luZGV4XS51cGRhdGVIb3ZlcihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3ZlckFycm93KG1vZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2ZpbGVzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXNbJ19yZXN1bHRzJ11baW5kZXhdLmhvdmVyQXJyb3cobW9kKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInRhLXVwbG9hZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7IGNvbmZpZ0ZpbGUuY3VzdG9tQ2xhc3NOYW1lIH19XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgX2ZpbGVzPy5sZW5ndGhcbiAgICAgIHwgdXBsb2FkQ2xhc3NcbiAgICAgICAgOiBjYXJvdXNlbENvbmZpZy5zaXplXG4gICAgICAgIDogcmV2aWV3LmlzUmV2aWV3XG4gICAgICAgIDogc2xpZGVyLmRvbnRVc2VTbGlkZXJcbiAgXCJcbj5cbiAgPCEtLSBDYXJvdXNlbCBGaWxlcyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9maWxlcz8ubGVuZ3RoICYmICFzbGlkZXIuZG9udFVzZVNsaWRlciAmJiAhaGFzQ3JvcFwiPlxuICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVzLWNhcm91c2VsXG4gICAgICBbY29uZmlnXT1cImNhcm91c2VsRmlsZUNvbmZpZ1wiXG4gICAgICAoYWN0aXZlU2xpZGUpPVwiY3VycmVudFNsaWRlID0gJGV2ZW50XCJcbiAgICAgIFtzbGlkZVdpZHRoXT1cInNsaWRlV2lkdGhcIlxuICAgICAgKGhvdmVyQXJyb3dFbWl0KT1cImhvdmVyQXJyb3coJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBfZmlsZXM7IHRyYWNrQnk6IGlkZW50aXR5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YS11cGxvYWQtY2Fyb3VzZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVcbiAgICAgICAgICAgICAgI3VwbG9hZGVkRmlsZXNcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdGaWxlIHwgbWFwRmlsZTogZmlsZVwiXG4gICAgICAgICAgICAgIFtyZXZpZXdGaWxlQ29uZmlnXT1cInJldmlld0ZpbGVDb25maWdcIlxuICAgICAgICAgICAgICAoZmlsZUhvdmVyKT1cImZpbGVIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGZpbGVBY3Rpb24pPVwib25GaWxlQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAobGFuZHNjYXBlQ2hlY2spPVwib25MYW5kc2NhcGVDaGVjaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGRvY3VtZW50UmV2aWV3SW5wdXRFdmVudCk9XCJcbiAgICAgICAgICAgICAgICBkb2N1bWVudFJldmlld0lucHV0RXZlbnRNZXRob2QoJGV2ZW50KVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvYXBwLWNhLXVwbG9hZC1maWxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYXBwLWNhLXVwbG9hZC1maWxlcy1jYXJvdXNlbD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNsaWRlci5kb250VXNlU2xpZGVyICYmICFoYXNDcm9wXCI+XG4gICAgPGRpdiBjbGFzcz1cImRvY3VtZW50c19ob2xkZXJcIj5cbiAgICAgIDxhcHAtY2EtdXBsb2FkLWRyb3B6b25lXG4gICAgICAgIFtjb25maWddPVwiZHJvcHpvbmVDb25mXCJcbiAgICAgICAgKG9uRmlsZUV2ZW50KT1cIm9uVXBsb2FkRmlsZXMoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZURyb3B6b25lKT1cImRyb3Bab25lQ2xvc2UoKVwiXG4gICAgICA+PC9hcHAtY2EtdXBsb2FkLWRyb3B6b25lPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBfZmlsZXM7IHRyYWNrQnk6IGlkZW50aXR5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YS11cGxvYWQtY2Fyb3VzZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdGaWxlIHwgbWFwRmlsZTogZmlsZVwiXG4gICAgICAgICAgICAgIFtyZXZpZXdGaWxlQ29uZmlnXT1cInJldmlld0ZpbGVDb25maWdcIlxuICAgICAgICAgICAgICAoZmlsZUFjdGlvbik9XCJvbkZpbGVBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChsYW5kc2NhcGVDaGVjayk9XCJvbkxhbmRzY2FwZUNoZWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAoZG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50KT1cIlxuICAgICAgICAgICAgICAgIGRvY3VtZW50UmV2aWV3SW5wdXRFdmVudE1ldGhvZCgkZXZlbnQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9hcHAtY2EtdXBsb2FkLWZpbGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW1hZ2UgQ3JvcCBUZW1wbGF0ZSAtLT5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJzcGxpdC1jcm9wLWhvbGRlclwiXG4gICAgW2NsYXNzLnNwbGl0XT1cImlzRHJvcHpvbmVTaG93blwiXG4gICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLWRyb3AnOiAhaXNWaXNpYmxlQ3JvcEFuZERyb3AgfVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ3JvcCAmJiBfZmlsZXMubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlIG9mIF9maWxlczsgdHJhY2tCeTogaWRlbnRpdHlcIj5cbiAgICAgICAgPGFwcC1jYS1sb2dvLWNoYW5nZVxuICAgICAgICAgIFtoYXNCbG9iVXJsXT1cImhhc0Jsb2JVcmxcIlxuICAgICAgICAgIFtpbWFnZVRvQ3JvcF09XCJmaWxlPy51cmxcIlxuICAgICAgICAgIFtpc1JvdW5kQ3JvcHBlcl09XCJpc1JvdW5kQ3JvcFwiXG4gICAgICAgICAgW2lzRHJvcHpvbmVTaG93bl09XCJpc0Ryb3B6b25lU2hvd25cIlxuICAgICAgICAgIFtpbml0aWFsQ3JvcHBlclBvc2l0aW9uXT1cImluaXRpYWxDcm9wcGVyUG9zaXRpb25cIlxuICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXCJcbiAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgIFtjdXN0b21XaWR0aF09XCJkcm9wem9uZUN1c3RvbVdpZHRoXCJcbiAgICAgICAgICAoc2VuZEltYWdlRGF0YSk9XCJvblVwbG9hZEZpbGVzKCRldmVudClcIlxuICAgICAgICA+PC9hcHAtY2EtbG9nby1jaGFuZ2U+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3BsaXQtY3JvcC1ob2xkZXJcIlxuICAgIFtjbGFzcy5zcGxpdF09XCJoYXNDcm9wICYmIF9maWxlcy5sZW5ndGggJiYgaXNEcm9wem9uZVNob3duXCJcbiAgICBbbmdDbGFzc109XCJ7ICdoaWRkZW4tZHJvcCc6ICFpc1Zpc2libGVDcm9wQW5kRHJvcCB9XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Ryb3B6b25lU2hvd25cIj5cbiAgICAgIDxhcHAtY2EtdXBsb2FkLWRyb3B6b25lXG4gICAgICAgIFtjb25maWddPVwiZHJvcHpvbmVDb25mXCJcbiAgICAgICAgW2N1c3RvbVdpZHRoXT1cImRyb3B6b25lQ3VzdG9tV2lkdGhcIlxuICAgICAgICBbaXNEcm9wem9uZVNob3duSW5Dcm9wXT1cImhhc0Nyb3AgJiYgISFfZmlsZXMubGVuZ3RoICYmIGlzRHJvcHpvbmVTaG93blwiXG4gICAgICAgIChvbkZpbGVFdmVudCk9XCJvblVwbG9hZEZpbGVzKCRldmVudClcIlxuICAgICAgPjwvYXBwLWNhLXVwbG9hZC1kcm9wem9uZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWZpbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jYS11cGxvYWQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NhLXVwbG9hZC1maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsWUFBWTtBQUNaLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBWTFILE9BQU87QUFDUCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFR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QUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO3lCQUNyQyxDQUFDO3FCQUNMLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO2lIQUl4QyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLDhCQUE4QjtnQkFJekMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQjtnQkFHekIsd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFHRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQVNNLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBwcm92aWRlTG90dGllT3B0aW9ucyB9IGZyb20gJ25neC1sb3R0aWUnO1xuaW1wb3J0IHsgTmdiUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcblxuLy9Db21wb25lbnRzXG5pbXBvcnQgeyBDYVVwbG9hZERyb3B6b25lQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50JztcbmltcG9ydCB7IENhVXBsb2FkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS11cGxvYWQtZmlsZS9jYS11cGxvYWQtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FVcGxvYWRGaWxlc0Nhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy1jYXJvdXNlbC9jYS11cGxvYWQtZmlsZXMtY2Fyb3VzZWwuY29tcG9uZW50JztcblxuLy9Nb2RlbHNcbmltcG9ydCB7XG4gICAgRG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50LFxuICAgIEZpbGVPcHRpb25Db25maWcsXG4gICAgUmV2aWV3RmlsZUNvbmZpZyxcbiAgICBTbGlkZXIsXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEZpbGVDb25maWcsIEZpbGVFdmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS11cGxvYWQtZHJvcHpvbmUvbW9kZWxzJztcbmltcG9ydCB7IEZpbGVzQ2Fyb3VzZWxDb25maWcgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzLWNhcm91c2VsL21vZGVscyc7XG5cbi8vRW51bXNcbmltcG9ydCB7IEZpbGVzU2l6ZUVudW0sIEZpbGVUeXBlc0VudW0gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IERvY3VtZW50QWN0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlL2VudW1zJztcblxuLy9TZXJ2aWNlc1xuaW1wb3J0IHsgQ2FVcGxvYWRGaWxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG4vL0NvbmZpZ1xuaW1wb3J0IHsgRHJvcHpvbmVDb25mIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jb25maWcnO1xuXG4vL1BpcGVcbmltcG9ydCB7IE1hcEZpbGVQaXBlLCBVcGxvYWRDbGFzc1BpcGUgfSBmcm9tICcuL3BpcGVzJztcblxuLy9Db21wb25lbnRcbmltcG9ydCB7IENhTG9nb0NoYW5nZUNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvZ28tY2hhbmdlL2NhLWxvZ28tY2hhbmdlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtdXBsb2FkLWZpbGVzJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgICAgIC8vQ29tcG9uZW50XG4gICAgICAgIENhVXBsb2FkRHJvcHpvbmVDb21wb25lbnQsXG4gICAgICAgIENhVXBsb2FkRmlsZUNvbXBvbmVudCxcbiAgICAgICAgQ2FVcGxvYWRGaWxlc0Nhcm91c2VsQ29tcG9uZW50LFxuICAgICAgICBDYUxvZ29DaGFuZ2VDb21wb25lbnQsXG4gICAgICAgIC8vUGlwZVxuICAgICAgICBVcGxvYWRDbGFzc1BpcGUsXG4gICAgICAgIE1hcEZpbGVQaXBlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVMb3R0aWVPcHRpb25zKHtcbiAgICAgICAgICAgIHBsYXllcjogKCkgPT4gaW1wb3J0KCdsb3R0aWUtd2ViJyksXG4gICAgICAgIH0pLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLXVwbG9hZC1maWxlcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtdXBsb2FkLWZpbGVzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhVXBsb2FkRmlsZXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKENhVXBsb2FkRmlsZXNDYXJvdXNlbENvbXBvbmVudClcbiAgICBwdWJsaWMgbW9kYWxDYXJvdXNlbCE6IENhVXBsb2FkRmlsZXNDYXJvdXNlbENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGRyZW4oQ2FVcGxvYWRGaWxlQ29tcG9uZW50KVxuICAgIHVwbG9hZGVkRmlsZXMhOiBRdWVyeUxpc3Q8Q2FVcGxvYWRGaWxlQ29tcG9uZW50PjtcblxuICAgIEBPdXRwdXQoKSBkb2N1bWVudFJldmlld0lucHV0RXZlbnQgPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50UmV2aWV3SW5wdXRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25GaWxlRXZlbnQ6IEV2ZW50RW1pdHRlcjxGaWxlRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxGaWxlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcHpvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xuXG4gICAgLy9DYXJvdXNlbFxuICAgIEBJbnB1dCgpIHNsaWRlciE6IFNsaWRlcjtcbiAgICBASW5wdXQoKSBjYXJvdXNlbENvbmZpZyE6IEZpbGVzQ2Fyb3VzZWxDb25maWc7XG4gICAgQElucHV0KCkgaGFzQ3JvcDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgaXNSb3VuZENyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBoYXNCbG9iVXJsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvL1RhZ3NcbiAgICBASW5wdXQoKSBvbmx5T25lVGFnRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy9Ecm9wem9uZVxuICAgIEBJbnB1dCgpIGRyb3B6b25lQ29uZiE6IERyb3B6b25lQ29uZltdO1xuICAgIEBJbnB1dCgpIGRyb3B6b25lQ3VzdG9tV2lkdGghOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpc1Zpc2libGVDcm9wQW5kRHJvcCE6IGJvb2xlYW47XG4gICAgLy9Dcm9wcGVyXG4gICAgQElucHV0KCkgaW5pdGlhbENyb3BwZXJQb3NpdGlvbiE6IENyb3BwZXJQb3NpdGlvbjtcbiAgICBASW5wdXQoKSBjb250YWluV2l0aGluQXNwZWN0UmF0aW86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBhc3BlY3RSYXRpbzogbnVtYmVyW10gPSBbMSwgMV07XG5cbiAgICAvL1Jldmlld1xuICAgIEBJbnB1dCgpIHJldmlldyE6IFJldmlld0ZpbGVDb25maWc7XG5cbiAgICBASW5wdXQoKSBjb25maWdGaWxlITogRmlsZU9wdGlvbkNvbmZpZztcbiAgICBASW5wdXQoKSBzaXplOiBzdHJpbmcgPSBGaWxlc1NpemVFbnVtLlNNQUxMO1xuICAgIEBJbnB1dCgpIHNsaWRlV2lkdGg6IG51bWJlciA9IDE4MDtcblxuICAgIEBPdXRwdXQoKSBmaWxlQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgICBwdWJsaWMgX2NvbmZpZyE6IEZpbGVPcHRpb25Db25maWc7XG4gICAgcHVibGljIGN1cnJlbnRTbGlkZTogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgaXNEcm9wem9uZVNob3duOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIEZpbGVzIGRhdGFcbiAgICBwdWJsaWMgX2ZpbGVzOiBGaWxlQ29uZmlnW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgZmlsZXMoZGF0YTogRmlsZUNvbmZpZ1tdKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gWy4uLmRhdGFdO1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnPy50eXBlID09IEZpbGVUeXBlc0VudW0uREVUQUlMUykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbENhcm91c2VsPy5zbGlkZVRvRmlsZSgwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB1cGxvYWRGaWxlU2VydmljZTogQ2FVcGxvYWRGaWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvVXBsb2FkZWRGaWxlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9VcGxvYWRlZEZpbGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGVTZXJ2aWNlLnVwbG9hZGVkRmlsZXMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IGZpbGVzOiBGaWxlQ29uZmlnW107IGFjdGlvbjogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkRmlsZXMoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYXJvdXNlbEZpbGVDb25maWcoKTogRmlsZXNDYXJvdXNlbENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuY2Fyb3VzZWxDb25maWcgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJldmlld0ZpbGVDb25maWcoKTogUmV2aWV3RmlsZUNvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmlldztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhIC0gcmV0dXJuZWQgZGF0YSBmcm9tIGZpbGUgYWN0aW9uIChvbmUgb3IgbXVsdGlwbGUpXG4gICAgICovXG5cbiAgICBwdWJsaWMgb25GaWxlQWN0aW9uKGRhdGE6IHsgZmlsZTogRmlsZUNvbmZpZzsgYWN0aW9uOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGRhdGEuYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLlRBRzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogIXRoaXMub25seU9uZVRhZ0ZpbGUgPyB0aGlzLmZpbGVzIDogZGF0YS5maWxlLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGRhdGEuYWN0aW9uLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLkRFTEVURTpcbiAgICAgICAgICAgICAgICBsZXQgaXNMYXN0RGVsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5maWxlTmFtZSA9PT0gZGF0YS5maWxlLmZpbGVOYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXggPT09IHRoaXMuZmlsZXMubGVuZ3RoIC0gMSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID09PSB0aGlzLmZpbGVzLmxlbmd0aCAtIDIpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMYXN0RGVsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uZmlsZU5hbWUgIT09IGRhdGEuZmlsZS5maWxlTmFtZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogdGhpcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBkYXRhLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSWQ6IGRhdGEuZmlsZVsnZmlsZUlkJ10gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnNpemUgPT09IEZpbGVzU2l6ZUVudW0uTU9EQUxfTEFSR0UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoIDwgNCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc2l6ZSA9PT0gRmlsZXNTaXplRW51bS5NT0RBTF9NRURJVU0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoIDwgMylcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbENhcm91c2VsLmN1cnJlbnRTbGlkZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC50cmFuc2xhdGVYTXVsdGlwbGVTbGlkZXMgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsQ2Fyb3VzZWwubXVsdGlwbGVDdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0xhc3REZWxldGVkICYmIHRoaXMubW9kYWxDYXJvdXNlbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXJvdXNlbFNpemUgPSB0aGlzLm1vZGFsQ2Fyb3VzZWwuY2Fyb3VzZWxDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jdXN0b21DbGFzcyBhcyBGaWxlc1NpemVFbnVtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzbGlkZVRvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5MQVJHRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLk1FRElVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsb3dTbGlkZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLkxBUkdFICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5sZW5ndGggPiAyKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5NRURJVU0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmxlbmd0aCA+IDEpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLlNNQUxMICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5sZW5ndGggPiAwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dTbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbENhcm91c2VsLnNsaWRlVG9GaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoIC0gc2xpZGVUb1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5NQVJLX0lOQ09SUkVDVDpcbiAgICAgICAgICAgICAgICBsZXQgaW5jb3JyZWN0SW5keDogbnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmZpbGVOYW1lID09PSBkYXRhLmZpbGUuZmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY29ycmVjdEluZHggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbkZpbGVFdmVudC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogZGF0YS5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmNvcnJlY3RJbmR4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLk1BUktfQ09SUkVDVDpcbiAgICAgICAgICAgICAgICBsZXQgY29ycmVjdEluZHg6IG51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5maWxlTmFtZSA9PT0gZGF0YS5maWxlLmZpbGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0SW5keCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogdGhpcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBkYXRhLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNvcnJlY3RJbmR4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVXBsb2FkRmlsZXMoZGF0YTogeyBmaWxlczogRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRhLmFjdGlvbiA9PT0gJ2FkZCcgJiYgdGhpcy5oYXNDcm9wICYmIHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gWy4uLmRhdGEuZmlsZXNdO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ3JvcCkgdGhpcy5pc0Ryb3B6b25lU2hvd24gPSB0cnVlO1xuXG4gICAgICAgICAgICB1cGxvYWRlZEZpbGVzLmZvckVhY2goKG5ld0ZpbGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0ZpbGVJbmRleCA9IHRoaXMuZmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICAgICAoZXhpc3RpbmdGaWxlKSA9PiBleGlzdGluZ0ZpbGUudXJsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0ZpbGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1tleGlzdGluZ0ZpbGVJbmRleF0gPSBuZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVBZGRlZC5lbWl0KG5ld0ZpbGUudXJsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICBgRmlsZSAke25ld0ZpbGUuZmlsZU5hbWV9IHRvIHJlcGxhY2Ugbm90IGZvdW5kYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoeyBmaWxlczogW10sIGFjdGlvbjogJ2FkZCcgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS5hY3Rpb24gPT09ICdhZGQnKSB7XG4gICAgICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gWy4uLmRhdGEuZmlsZXNdO1xuXG4gICAgICAgICAgICBjb25zdCB1bmlxdWVGaWxlcyA9IHVwbG9hZGVkRmlsZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5maWxlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXN0aW5nRmlsZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0ZpbGUuZmlsZU5hbWUgPT09IGZpbGUuZmlsZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbLi4ubmV3IFNldChbLi4udGhpcy5maWxlcywgLi4udW5pcXVlRmlsZXNdKV07XG5cbiAgICAgICAgICAgIHVuaXF1ZUZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVBZGRlZC5lbWl0KGZpbGUucmVhbEZpbGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Nyb3ApIHRoaXMuaXNEcm9wem9uZVNob3duID0gZmFsc2U7XG4gICAgICAgICAgICBlbHNlIHRoaXMub25GaWxlRXZlbnQuZW1pdCh7IGZpbGVzOiB0aGlzLmZpbGVzLCBhY3Rpb246ICdhZGQnIH0pO1xuXG4gICAgICAgICAgICAvLyAgY2Fyb3VzZWxcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGFsQ2Fyb3VzZWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXJvdXNlbFNpemUgPSB0aGlzLm1vZGFsQ2Fyb3VzZWwuY2Fyb3VzZWxDb25maWdcbiAgICAgICAgICAgICAgICAgICAgLmN1c3RvbUNsYXNzIGFzIEZpbGVzU2l6ZUVudW07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzbGlkZVRvID1cbiAgICAgICAgICAgICAgICAgICAgY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLkxBUkdFXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY2Fyb3VzZWxTaXplID09PSBGaWxlc1NpemVFbnVtLk1FRElVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb3dTbGlkZSA9XG4gICAgICAgICAgICAgICAgICAgIChjYXJvdXNlbFNpemUgPT09IEZpbGVzU2l6ZUVudW0uTEFSR0UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoID4gMikgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5NRURJVU0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoID4gMSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNhcm91c2VsU2l6ZSA9PT0gRmlsZXNTaXplRW51bS5TTUFMTCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5sZW5ndGggPiAwKTtcblxuICAgICAgICAgICAgICAgIGlmIChhbGxvd1NsaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDYXJvdXNlbC5zbGlkZVRvRmlsZSh0aGlzLmZpbGVzLmxlbmd0aCAtIHNsaWRlVG8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbiA9PT0gJ3JlcGxhY2UnKSB7XG4gICAgICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gWy4uLmRhdGEuZmlsZXNdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNDcm9wKSB0aGlzLmlzRHJvcHpvbmVTaG93biA9IHRydWU7XG5cbiAgICAgICAgICAgIHVwbG9hZGVkRmlsZXMuZm9yRWFjaCgobmV3RmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nRmlsZUluZGV4ID0gdGhpcy5maWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChleGlzdGluZ0ZpbGUpID0+IGV4aXN0aW5nRmlsZS51cmxcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nRmlsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyBmaWxlIGF0IHRoZSBmb3VuZCBpbmRleFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW2V4aXN0aW5nRmlsZUluZGV4XSA9IG5ld0ZpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRW1pdCB0aGUgbmV3IGZpbGUgdGhhdCByZXBsYWNlZCB0aGUgb2xkIG9uZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVBZGRlZC5lbWl0KG5ld0ZpbGUudXJsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICBgRmlsZSAke25ld0ZpbGUuZmlsZU5hbWV9IHRvIHJlcGxhY2Ugbm90IGZvdW5kYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoeyBmaWxlczogdGhpcy5maWxlcywgYWN0aW9uOiAnYWRkJyB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Nyb3ApIHRoaXMuaXNEcm9wem9uZVNob3duID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKDAsIHRoaXMuZmlsZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgZG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50TWV0aG9kKGRhdGE6IHtcbiAgICAgICAgZmlsZTogRmlsZUNvbmZpZztcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0RXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBmaWxlOiBkYXRhLmZpbGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBkYXRhLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGUoZmlsZVVybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaHR0cC5nZXQoZmlsZVVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoZmlsZUJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZUJsb2IpO1xuICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQuaHJlZiA9IG9iamVjdFVybDtcbiAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC5jbGljaygpO1xuXG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChkb3dubG9hZEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgZmlsZTonLCBkb3dubG9hZEVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYW5kc2NhcGVDaGVjayhsYW5kc2NhcGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGxhbmRzY2FwZSlcbiAgICAgICAgICAgIHRoaXMuY29uZmlnRmlsZS5jdXN0b21DbGFzc05hbWUgPSAnbGFuZHNjYXBlLWRldGFpbHMtdmlldyc7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3Bab25lQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wem9uZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbGVIb3ZlcihmaWxlOiBGaWxlQ29uZmlnKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ0ZpbGUuY3VzdG9tQ2xhc3NOYW1lID09PSAnbW9kYWxzJykge1xuICAgICAgICAgICAgbGV0IGNoZWNrQnlJZCA9IGZpbGU/LnJlYWxGaWxlID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGNoZWNrQnlJZCAmJiBmaWxlPy5maWxlSWQgPT09IGl0ZW0uZmlsZUlkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoIWNoZWNrQnlJZCAmJiBmaWxlLnJlYWxGaWxlPy5uYW1lID09PSBpdGVtLnJlYWxGaWxlPy5uYW1lKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXNbJ19yZXN1bHRzJ11baW5kZXhdLnVwZGF0ZUhvdmVyKHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlc1snX3Jlc3VsdHMnXVtpbmRleF0udXBkYXRlSG92ZXIoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhvdmVyQXJyb3cobW9kOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlc1snX3Jlc3VsdHMnXVtpbmRleF0uaG92ZXJBcnJvdyhtb2QpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGl0eShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cInRhLXVwbG9hZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7IGNvbmZpZ0ZpbGUuY3VzdG9tQ2xhc3NOYW1lIH19XCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgICAgZmlsZXM/Lmxlbmd0aFxuICAgICAgICAgICAgfCB1cGxvYWRDbGFzc1xuICAgICAgICAgICAgICAgIDogY2Fyb3VzZWxDb25maWcuc2l6ZVxuICAgICAgICAgICAgICAgIDogcmV2aWV3LmlzUmV2aWV3XG4gICAgICAgICAgICAgICAgOiBzbGlkZXIuZG9udFVzZVNsaWRlclxuICAgIFwiXG4+XG4gICAgPCEtLSBDYXJvdXNlbCBGaWxlcyAtLT5cbiAgICBAaWYgKGZpbGVzPy5sZW5ndGggJiYgIXNsaWRlci5kb250VXNlU2xpZGVyICYmICFoYXNDcm9wKSB7XG4gICAgICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVzLWNhcm91c2VsXG4gICAgICAgICAgICBbY29uZmlnXT1cImNhcm91c2VsRmlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAoYWN0aXZlU2xpZGUpPVwiY3VycmVudFNsaWRlID0gJGV2ZW50XCJcbiAgICAgICAgICAgIFtzbGlkZVdpZHRoXT1cInNsaWRlV2lkdGhcIlxuICAgICAgICAgICAgKGhvdmVyQXJyb3dFbWl0KT1cImhvdmVyQXJyb3coJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IHRyYWNrQnk6IGlkZW50aXR5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhLXVwbG9hZC1jYXJvdXNlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdXBsb2FkZWRGaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiY29uZmlnRmlsZSB8IG1hcEZpbGU6IGZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXZpZXdGaWxlQ29uZmlnXT1cInJldmlld0ZpbGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlSG92ZXIpPVwiZmlsZUhvdmVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlQWN0aW9uKT1cIm9uRmlsZUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFuZHNjYXBlQ2hlY2spPVwib25MYW5kc2NhcGVDaGVjaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFJldmlld0lucHV0RXZlbnRNZXRob2QoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtdXBsb2FkLWZpbGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYXBwLWNhLXVwbG9hZC1maWxlcy1jYXJvdXNlbD5cbiAgICB9XG5cbiAgICBAaWYgKHNsaWRlci5kb250VXNlU2xpZGVyICYmICFoYXNDcm9wKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudHNfaG9sZGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNhLXVwbG9hZC1kcm9wem9uZVxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZHJvcHpvbmVDb25mXCJcbiAgICAgICAgICAgICAgICAob25GaWxlRXZlbnQpPVwib25VcGxvYWRGaWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xvc2VEcm9wem9uZSk9XCJkcm9wWm9uZUNsb3NlKClcIlxuICAgICAgICAgICAgPjwvYXBwLWNhLXVwbG9hZC1kcm9wem9uZT5cbiAgICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZmlsZXM7IHRyYWNrIGlkZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhLXVwbG9hZC1jYXJvdXNlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtdXBsb2FkLWZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ0ZpbGUgfCBtYXBGaWxlOiBmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmV2aWV3RmlsZUNvbmZpZ109XCJyZXZpZXdGaWxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZUFjdGlvbik9XCJvbkZpbGVBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbmRzY2FwZUNoZWNrKT1cIm9uTGFuZHNjYXBlQ2hlY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50UmV2aWV3SW5wdXRFdmVudCk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50TWV0aG9kKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLXVwbG9hZC1maWxlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBJbWFnZSBDcm9wIFRlbXBsYXRlIC0tPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNwbGl0LWNyb3AtaG9sZGVyXCJcbiAgICAgICAgW2NsYXNzLnNwbGl0XT1cImlzRHJvcHpvbmVTaG93blwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hpZGRlbi1kcm9wJzogIWlzVmlzaWJsZUNyb3BBbmREcm9wIH1cIlxuICAgID5cbiAgICAgICAgQGlmIChoYXNDcm9wICYmIGZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgaWRlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICA8YXBwLWNhLWxvZ28tY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIFtoYXNCbG9iVXJsXT1cImhhc0Jsb2JVcmxcIlxuICAgICAgICAgICAgICAgICAgICBbaW1hZ2VUb0Nyb3BdPVwiZmlsZT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUm91bmRDcm9wcGVyXT1cImlzUm91bmRDcm9wXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRHJvcHpvbmVTaG93bl09XCJpc0Ryb3B6b25lU2hvd25cIlxuICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbENyb3BwZXJQb3NpdGlvbl09XCJpbml0aWFsQ3JvcHBlclBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpb109XCJjb250YWluV2l0aGluQXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tV2lkdGhdPVwiZHJvcHpvbmVDdXN0b21XaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgIChzZW5kSW1hZ2VEYXRhKT1cIm9uVXBsb2FkRmlsZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWNhLWxvZ28tY2hhbmdlPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3BsaXQtY3JvcC1ob2xkZXJcIlxuICAgICAgICBbY2xhc3Muc3BsaXRdPVwiaGFzQ3JvcCAmJiBmaWxlcy5sZW5ndGggJiYgaXNEcm9wem9uZVNob3duXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLWRyb3AnOiAhaXNWaXNpYmxlQ3JvcEFuZERyb3AgfVwiXG4gICAgPlxuICAgICAgICBAaWYgKGlzRHJvcHpvbmVTaG93bikge1xuICAgICAgICAgICAgPGFwcC1jYS11cGxvYWQtZHJvcHpvbmVcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRyb3B6b25lQ29uZlwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbVdpZHRoXT1cImRyb3B6b25lQ3VzdG9tV2lkdGhcIlxuICAgICAgICAgICAgICAgIFtpc0Ryb3B6b25lU2hvd25JbkNyb3BdPVwiXG4gICAgICAgICAgICAgICAgICAgIGhhc0Nyb3AgJiYgISFmaWxlcy5sZW5ndGggJiYgaXNEcm9wem9uZVNob3duXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAob25GaWxlRXZlbnQpPVwib25VcGxvYWRGaWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2FwcC1jYS11cGxvYWQtZHJvcHpvbmU+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19