ca-components 1.3.2 → 1.3.31

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 (166) hide show
  1. package/esm2022/lib/components/ca-input/ca-input.component.mjs +3 -3
  2. package/esm2022/lib/components/ca-input/config/ca-input.config.mjs +1 -1
  3. package/esm2022/lib/components/ca-input/pipes/input-error.pipe.mjs +7 -1
  4. package/esm2022/lib/components/ca-input/pipes/label-class.pipe.mjs +5 -3
  5. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +4 -2
  6. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +14 -5
  7. package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +1 -1
  8. package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +1 -1
  9. package/esm2022/lib/components/ca-todo/models/todo-config.model.mjs +1 -1
  10. package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +66 -53
  11. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +68 -51
  12. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/file-dropzone-action.enum.mjs +8 -0
  13. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/file-dropzone-type.enum.mjs +8 -0
  14. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/file-upload-page.enum.mjs +28 -0
  15. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/index.mjs +5 -4
  16. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/template-type.enum.mjs +9 -0
  17. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/helpers/file.helper.mjs +8 -9
  18. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/drop-background-event.interface.mjs +2 -0
  19. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/dropzone-config.interface.mjs +2 -0
  20. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/dropzone-option-config.interface.mjs +2 -0
  21. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/dropzone-settings.interface.mjs +2 -0
  22. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/file-config.interface.mjs +2 -0
  23. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/file-event.interface.mjs +2 -0
  24. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/index.mjs +7 -0
  25. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-icons.constants.mjs +19 -0
  26. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-limit.constants.mjs +41 -0
  27. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/index.mjs +5 -5
  28. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/lottie-animation.constants.mjs +9 -0
  29. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/mime-type.constants.mjs +29 -0
  30. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +167 -132
  31. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/enums/document-action.enum.mjs +10 -10
  32. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/enums/index.mjs +1 -1
  33. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/interfaces/delete-action.interface.mjs +2 -0
  34. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/interfaces/file-action-event.interface.mjs +2 -0
  35. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/interfaces/index.mjs +3 -0
  36. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/pipes/index.mjs +2 -1
  37. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/pipes/mime-type-to-extension.pipe.mjs +19 -0
  38. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/pipes/ng-class.pipe.mjs +4 -3
  39. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/utils/config/index.mjs +2 -0
  40. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/utils/config/upload-file-input.config.mjs +10 -0
  41. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/utils/svg-routes/upload-file.routes.mjs +2 -2
  42. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.mjs +15 -15
  43. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/carousel-action.enum.mjs +6 -6
  44. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/file-carousel-size.enum.mjs +10 -0
  45. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/index.mjs +2 -2
  46. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/interfaces/files-carousel.interface.mjs +2 -0
  47. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/interfaces/index.mjs +2 -0
  48. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/utils/constants/files-by-size.constant.mjs +9 -9
  49. package/esm2022/lib/components/ca-upload-files/enums/file-action.enum.mjs +7 -0
  50. package/esm2022/lib/components/ca-upload-files/enums/file-size.enum.mjs +9 -9
  51. package/esm2022/lib/components/ca-upload-files/enums/file-type.enum.mjs +8 -0
  52. package/esm2022/lib/components/ca-upload-files/enums/index.mjs +4 -2
  53. package/esm2022/lib/components/ca-upload-files/enums/review-state.enum.mjs +6 -0
  54. package/esm2022/lib/components/ca-upload-files/interfaces/document-review-input-event.interface.mjs +2 -0
  55. package/esm2022/lib/components/ca-upload-files/interfaces/file-option-config.interface.mjs +2 -0
  56. package/esm2022/lib/components/ca-upload-files/interfaces/index.mjs +6 -0
  57. package/esm2022/lib/components/ca-upload-files/interfaces/review-file-config.interface.mjs +2 -0
  58. package/esm2022/lib/components/ca-upload-files/interfaces/slider.interface.mjs +2 -0
  59. package/esm2022/lib/components/ca-upload-files/interfaces/upload-files-config.interface.mjs +2 -0
  60. package/esm2022/lib/components/ca-upload-files/pipes/index.mjs +1 -1
  61. package/esm2022/lib/components/ca-upload-files/pipes/map-file.pipe.mjs +3 -3
  62. package/esm2022/lib/components/ca-upload-files/pipes/upload-class.pipe.mjs +1 -1
  63. package/esm2022/lib/components/ca-upload-files/services/upload-file.service.mjs +1 -1
  64. package/esm2022/public-api.mjs +4 -2
  65. package/fesm2022/ca-components.mjs +644 -489
  66. package/fesm2022/ca-components.mjs.map +1 -1
  67. package/lib/components/ca-input/config/ca-input.config.d.ts +1 -0
  68. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +3 -1
  69. package/lib/components/ca-logo-change/ca-logo-change.component.d.ts +2 -2
  70. package/lib/components/ca-todo/components/ca-todo-card.component.d.ts +5 -5
  71. package/lib/components/ca-todo/models/todo-config.model.d.ts +1 -1
  72. package/lib/components/ca-upload-files/ca-upload-files.component.d.ts +12 -12
  73. package/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.d.ts +10 -11
  74. package/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/{file-action.enum.d.ts → file-dropzone-action.enum.d.ts} +1 -1
  75. package/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/{file-type.enum.d.ts → file-dropzone-type.enum.d.ts} +1 -1
  76. package/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/{pages.enum.d.ts → file-upload-page.enum.d.ts} +4 -2
  77. package/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/index.d.ts +4 -3
  78. package/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/template-type.enum.d.ts +7 -0
  79. package/lib/components/ca-upload-files/components/ca-upload-dropzone/helpers/file.helper.d.ts +4 -4
  80. package/lib/components/ca-upload-files/components/ca-upload-dropzone/{models/drop-background-event.model.d.ts → interfaces/drop-background-event.interface.d.ts} +1 -1
  81. package/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/dropzone-config.interface.d.ts +10 -0
  82. package/lib/components/ca-upload-files/components/ca-upload-dropzone/{models/dropzone-option-config.model.d.ts → interfaces/dropzone-option-config.interface.d.ts} +1 -1
  83. package/lib/components/ca-upload-files/components/ca-upload-dropzone/{models/dropzone-config.model.d.ts → interfaces/dropzone-settings.interface.d.ts} +3 -3
  84. package/lib/components/ca-upload-files/components/ca-upload-dropzone/{models/file-config.model.d.ts → interfaces/file-config.interface.d.ts} +1 -1
  85. package/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/file-event.interface.d.ts +8 -0
  86. package/lib/components/ca-upload-files/components/ca-upload-dropzone/interfaces/index.d.ts +6 -0
  87. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-icons.constants.d.ts +7 -0
  88. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/{file-limit.constant.d.ts → file-limit.constants.d.ts} +1 -1
  89. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/index.d.ts +4 -4
  90. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/{lottie-constant.d.ts → lottie-animation.constants.d.ts} +1 -1
  91. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/mime-type.constants.d.ts +5 -0
  92. package/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.d.ts +33 -27
  93. package/lib/components/ca-upload-files/components/ca-upload-file/enums/document-action.enum.d.ts +1 -1
  94. package/lib/components/ca-upload-files/components/ca-upload-file/{models/delete-action.model.d.ts → interfaces/delete-action.interface.d.ts} +1 -1
  95. package/lib/components/ca-upload-files/components/ca-upload-file/interfaces/file-action-event.interface.d.ts +5 -0
  96. package/lib/components/ca-upload-files/components/ca-upload-file/interfaces/index.d.ts +2 -0
  97. package/lib/components/ca-upload-files/components/ca-upload-file/pipes/index.d.ts +1 -0
  98. package/lib/components/ca-upload-files/components/ca-upload-file/pipes/mime-type-to-extension.pipe.d.ts +7 -0
  99. package/lib/components/ca-upload-files/components/ca-upload-file/utils/config/index.d.ts +1 -0
  100. package/lib/components/ca-upload-files/components/ca-upload-file/utils/config/upload-file-input.config.d.ts +4 -0
  101. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.d.ts +6 -6
  102. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/carousel-action.enum.d.ts +1 -1
  103. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/{carousel-size.enum.d.ts → file-carousel-size.enum.d.ts} +1 -1
  104. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/index.d.ts +1 -1
  105. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/{models/carousel-config.model.d.ts → interfaces/files-carousel.interface.d.ts} +1 -1
  106. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/interfaces/index.d.ts +1 -0
  107. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/utils/constants/files-by-size.constant.d.ts +1 -1
  108. package/lib/components/ca-upload-files/enums/file-action.enum.d.ts +5 -0
  109. package/lib/components/ca-upload-files/enums/file-size.enum.d.ts +1 -1
  110. package/lib/components/ca-upload-files/enums/{file-types.enum.d.ts → file-type.enum.d.ts} +1 -1
  111. package/lib/components/ca-upload-files/enums/index.d.ts +3 -1
  112. package/lib/components/ca-upload-files/enums/review-state.enum.d.ts +4 -0
  113. package/lib/components/ca-upload-files/interfaces/document-review-input-event.interface.d.ts +5 -0
  114. package/lib/components/ca-upload-files/{models/file-option-config.model.d.ts → interfaces/file-option-config.interface.d.ts} +3 -3
  115. package/lib/components/ca-upload-files/interfaces/index.d.ts +5 -0
  116. package/lib/components/ca-upload-files/{models/review-file-config.model.d.ts → interfaces/review-file-config.interface.d.ts} +3 -2
  117. package/lib/components/ca-upload-files/{models/slider.model.d.ts → interfaces/slider.interface.d.ts} +1 -1
  118. package/lib/components/ca-upload-files/interfaces/upload-files-config.interface.d.ts +26 -0
  119. package/lib/components/ca-upload-files/pipes/map-file.pipe.d.ts +3 -3
  120. package/lib/components/ca-upload-files/services/upload-file.service.d.ts +3 -3
  121. package/package.json +1 -1
  122. package/public-api.d.ts +3 -1
  123. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/config/dropzone-config.type.mjs +0 -2
  124. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/config/index.mjs +0 -2
  125. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/file-action.enum.mjs +0 -8
  126. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/file-type.enum.mjs +0 -8
  127. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/enums/pages.enum.mjs +0 -26
  128. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/drop-background-event.model.mjs +0 -2
  129. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/dropzone-config.model.mjs +0 -2
  130. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/dropzone-option-config.model.mjs +0 -2
  131. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/file-config.model.mjs +0 -2
  132. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/file-event.model.mjs +0 -2
  133. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/index.mjs +0 -7
  134. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/models/upload-file-templates.model.mjs +0 -2
  135. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-icons.constant.mjs +0 -19
  136. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-limit.constant.mjs +0 -28
  137. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/lottie-constant.mjs +0 -9
  138. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/supported-extension.constant.mjs +0 -11
  139. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/index.mjs +0 -2
  140. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/models/delete-action.model.mjs +0 -2
  141. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/models/file-action.model.mjs +0 -2
  142. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/models/index.mjs +0 -3
  143. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/enums/carousel-size.enum.mjs +0 -10
  144. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/models/carousel-config.model.mjs +0 -2
  145. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/models/index.mjs +0 -2
  146. package/esm2022/lib/components/ca-upload-files/enums/file-types.enum.mjs +0 -8
  147. package/esm2022/lib/components/ca-upload-files/models/document-review.model.mjs +0 -2
  148. package/esm2022/lib/components/ca-upload-files/models/file-option-config.model.mjs +0 -2
  149. package/esm2022/lib/components/ca-upload-files/models/index.mjs +0 -6
  150. package/esm2022/lib/components/ca-upload-files/models/review-file-config.model.mjs +0 -2
  151. package/esm2022/lib/components/ca-upload-files/models/slider.model.mjs +0 -2
  152. package/esm2022/lib/components/ca-upload-files/models/upload-files-config.model.mjs +0 -2
  153. package/lib/components/ca-upload-files/components/ca-upload-dropzone/config/dropzone-config.type.d.ts +0 -8
  154. package/lib/components/ca-upload-files/components/ca-upload-dropzone/config/index.d.ts +0 -1
  155. package/lib/components/ca-upload-files/components/ca-upload-dropzone/models/file-event.model.d.ts +0 -8
  156. package/lib/components/ca-upload-files/components/ca-upload-dropzone/models/index.d.ts +0 -6
  157. package/lib/components/ca-upload-files/components/ca-upload-dropzone/models/upload-file-templates.model.d.ts +0 -1
  158. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/file-icons.constant.d.ts +0 -7
  159. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/constants/supported-extension.constant.d.ts +0 -4
  160. package/lib/components/ca-upload-files/components/ca-upload-dropzone/utils/index.d.ts +0 -1
  161. package/lib/components/ca-upload-files/components/ca-upload-file/models/file-action.model.d.ts +0 -5
  162. package/lib/components/ca-upload-files/components/ca-upload-file/models/index.d.ts +0 -2
  163. package/lib/components/ca-upload-files/components/ca-upload-files-carousel/models/index.d.ts +0 -1
  164. package/lib/components/ca-upload-files/models/document-review.model.d.ts +0 -5
  165. package/lib/components/ca-upload-files/models/index.d.ts +0 -5
  166. package/lib/components/ca-upload-files/models/upload-files-config.model.d.ts +0 -27
@@ -4,26 +4,26 @@ import { AngularSvgIconModule } from 'angular-svg-icon';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { catchError, from, map } from 'rxjs';
6
6
  import { LottieComponent, provideLottieOptions } from 'ngx-lottie';
7
- //Utils
8
- import { FileAnimation, FileIcons, FILE_EXTENSIONS, LottieConstants, FileLimit, } from './utils';
7
+ //Constants
8
+ import { FileAnimationConstants, FileIconsConstants, FileLimitConstants, FileMimeTypeConstants, LottieAnimationConstants, } from './utils/constants';
9
9
  //Enum
10
- import { FileAction, FileType } from './enums';
10
+ import { eFileDropZoneAction, eDropZoneFileType, } from './enums';
11
11
  //Directive
12
12
  import { TemplateContainerDirective } from './directives/template.directive';
13
13
  //Helper
14
- import { FileUtils } from './helpers';
14
+ import { FileHelper } from './helpers';
15
15
  //Router
16
16
  import { DropzoneSvgRoute } from './utils/svg-routes/dropzone-svg.routes';
17
+ //Pipes
18
+ import { MimeTypeToExtensionPipe } from '../ca-upload-file/pipes';
17
19
  import * as i0 from "@angular/core";
18
20
  import * as i1 from "@angular/common";
19
21
  import * as i2 from "angular-svg-icon";
22
+ //Interfaces
20
23
  export class CaUploadDropzoneComponent {
21
- set config(data) {
24
+ set dropZoneConfig(data) {
22
25
  setTimeout(() => {
23
- this._dropZoneConfigArray = data;
24
- if (this._dropZoneConfigArray.length > 0) {
25
- this._dropZoneConfig = this._dropZoneConfigArray[0];
26
- }
26
+ this._dropZoneConfig = data;
27
27
  //Icons
28
28
  this.getIcons();
29
29
  //Supported files
@@ -38,11 +38,10 @@ export class CaUploadDropzoneComponent {
38
38
  constructor(cdr) {
39
39
  this.cdr = cdr;
40
40
  this.isDropzoneShownInCrop = false;
41
+ this.files = [];
41
42
  this.onFileEvent = new EventEmitter();
42
43
  this.onDropBackground = new EventEmitter();
43
44
  this.closeDropzone = new EventEmitter();
44
- this._dropZoneConfigArray = [];
45
- this.files = [];
46
45
  this.isShownDropzoneFocus = false;
47
46
  this.isFileDrop = false;
48
47
  this.isSupportedType = false;
@@ -51,7 +50,7 @@ export class CaUploadDropzoneComponent {
51
50
  this.iconSrc = '';
52
51
  this.dropZoneAvailableFiles = [];
53
52
  this.limit = 0;
54
- this.lottieOptions = LottieConstants.DEFAULT_LOTTIE;
53
+ this.lottieOptions = LottieAnimationConstants.DEFAULT_LOTTIE;
55
54
  this.dropzoneSvgRoute = DropzoneSvgRoute.close;
56
55
  }
57
56
  onDragLeaveWindows(event) {
@@ -61,7 +60,7 @@ export class CaUploadDropzoneComponent {
61
60
  this.isDropzoneExpanded = false;
62
61
  this.isFileDrop = false;
63
62
  this.onDropBackground.emit({
64
- action: FileAction.DRAGLEAVE,
63
+ action: eFileDropZoneAction.DRAGLEAVE,
65
64
  value: false,
66
65
  });
67
66
  }
@@ -71,7 +70,10 @@ export class CaUploadDropzoneComponent {
71
70
  this.isDropzoneExpanded = false;
72
71
  this.isShownDropzoneFocus = false;
73
72
  this.isFileDrop = true;
74
- this.onDropBackground.emit({ action: FileAction.DROP, value: false });
73
+ this.onDropBackground.emit({
74
+ action: eFileDropZoneAction.DROP,
75
+ value: false,
76
+ });
75
77
  if (event.dataTransfer?.files) {
76
78
  this.onFileUpload(event.dataTransfer.files);
77
79
  this.isFileDrop = false;
@@ -83,7 +85,7 @@ export class CaUploadDropzoneComponent {
83
85
  this.isDropzoneExpanded = true;
84
86
  this.isFileDrop = true;
85
87
  this.onDropBackground.emit({
86
- action: FileAction.DRAGOVER,
88
+ action: eFileDropZoneAction.DRAGOVER,
87
89
  value: true,
88
90
  });
89
91
  if (this.lottieOptions && !this.lottieOptions.autoplay) {
@@ -106,7 +108,7 @@ export class CaUploadDropzoneComponent {
106
108
  }
107
109
  }, 100);
108
110
  this.onDropBackground.emit({
109
- action: FileAction.DRAGLEAVE,
111
+ action: eFileDropZoneAction.DRAGLEAVE,
110
112
  value: false,
111
113
  });
112
114
  }
@@ -116,9 +118,9 @@ export class CaUploadDropzoneComponent {
116
118
  this.isFileDrop = false;
117
119
  this.isShownDropzoneFocus = true;
118
120
  this.isDropzoneExpanded = true;
119
- const fileType = this._dropZoneConfig.config.dropzone
121
+ const eFileType = this._dropZoneConfig?.config?.dropzone
120
122
  ?.dropZoneType;
121
- const animationPath = FileAnimation.ANIMATIONS[fileType];
123
+ const animationPath = FileAnimationConstants.ANIMATIONS[eFileType];
122
124
  if (animationPath) {
123
125
  this.lottieOptions = {
124
126
  renderer: 'svg',
@@ -132,7 +134,10 @@ export class CaUploadDropzoneComponent {
132
134
  this.isDropzoneExpanded = false;
133
135
  event.preventDefault();
134
136
  event.stopPropagation();
135
- this.onDropBackground.emit({ action: FileAction.DROP, value: false });
137
+ this.onDropBackground.emit({
138
+ action: eFileDropZoneAction.DROP,
139
+ value: false,
140
+ });
136
141
  }
137
142
  triggerFileInput(event) {
138
143
  event.stopPropagation();
@@ -143,19 +148,24 @@ export class CaUploadDropzoneComponent {
143
148
  }
144
149
  getIcons() {
145
150
  this.iconSrc =
146
- FileIcons.ICONS[this._dropZoneConfig.config.dropzone?.dropZoneType];
151
+ FileIconsConstants.ICONS[this._dropZoneConfig?.config?.dropzone
152
+ ?.dropZoneType];
147
153
  }
148
154
  supportedFiles() {
149
155
  this.dropZoneAvailableFiles =
150
- FILE_EXTENSIONS.EXTENSIONS[this._dropZoneConfig.config.dropzone?.dropZoneType];
156
+ FileMimeTypeConstants.SUPORTED_MIME_TYPE_MAP[this._dropZoneConfig?.config?.dropzone
157
+ ?.dropZoneType];
151
158
  }
152
159
  //limit files
153
160
  maxFilesAllowed() {
154
- return FileLimit.LIMIT[this._dropZoneConfig.config.dropzone?.dropZonePages];
161
+ return FileLimitConstants.LIMIT[this._dropZoneConfig?.config?.dropzone
162
+ ?.dropZonePages];
155
163
  }
164
+ // TODO: Bogdan - move to getter to use property instead of method to avoid unnecessary change detection triggers
156
165
  isMaxCountReached() {
157
166
  this.limit =
158
- FileLimit.LIMIT[this._dropZoneConfig.config.dropzone?.dropZonePages] || 0;
167
+ FileLimitConstants.LIMIT[this._dropZoneConfig?.config?.dropzone
168
+ ?.dropZonePages] || 0;
159
169
  return this.files.length >= this.limit;
160
170
  }
161
171
  //Files
@@ -175,20 +185,34 @@ export class CaUploadDropzoneComponent {
175
185
  console.log('All files uploaded successfully');
176
186
  }));
177
187
  }
188
+ resetDropzoneView(event) {
189
+ this.isSupportedType = false;
190
+ event?.stopPropagation();
191
+ }
192
+ //Template
193
+ getTemplate(template) {
194
+ const templateRef = this.templateRef?.find((temp) => temp.id === template);
195
+ if (!templateRef) {
196
+ throw new Error('Unavailable template!');
197
+ }
198
+ return templateRef?.template;
199
+ }
178
200
  addFile(file, emitEvent) {
179
201
  if (!file)
180
202
  return;
203
+ const { type } = file;
181
204
  try {
182
- const fileExtension = FileUtils.getFileExtension(file.name);
183
- if (!FileUtils.isSupportedExtension(fileExtension, this.dropZoneAvailableFiles)) {
184
- if (!this._dropZoneConfig.config.dropzoneOption
205
+ //TODO: Bogdan - get file extension from metadata, not file name extension
206
+ const fileExtension = FileHelper.getFileExtension(type);
207
+ if (!FileHelper.isSupportedExtension(file.type, this.dropZoneAvailableFiles)) {
208
+ if (!this._dropZoneConfig?.config?.dropzoneOption
185
209
  ?.disableUnsupportedPreview) {
186
210
  this.isSupportedType = true;
187
211
  }
188
212
  return;
189
213
  }
190
214
  this.isSupportedType = false;
191
- FileUtils.getBlob(file).subscribe({
215
+ FileHelper.getBlob(file).subscribe({
192
216
  next: (blobContent) => {
193
217
  const blobUrl = URL.createObjectURL(blobContent);
194
218
  this.files = [
@@ -205,7 +229,7 @@ export class CaUploadDropzoneComponent {
205
229
  if (emitEvent) {
206
230
  this.onFileEvent.emit({
207
231
  files: this.files,
208
- action: FileAction.ADD,
232
+ action: eFileDropZoneAction.ADD,
209
233
  });
210
234
  }
211
235
  },
@@ -220,9 +244,9 @@ export class CaUploadDropzoneComponent {
220
244
  }
221
245
  //Lottie
222
246
  updateLottieOptions() {
223
- const fileType = this._dropZoneConfig.config.dropzone
247
+ const eFileType = this._dropZoneConfig?.config?.dropzone
224
248
  ?.dropZoneType;
225
- const animationPath = FileAnimation.ANIMATIONS[fileType];
249
+ const animationPath = FileAnimationConstants.ANIMATIONS[eFileType];
226
250
  if (animationPath) {
227
251
  this.lottieOptions = {
228
252
  renderer: 'svg',
@@ -235,31 +259,21 @@ export class CaUploadDropzoneComponent {
235
259
  //Dropzone text
236
260
  updateDropZoneText() {
237
261
  const dropZoneTextMap = {
238
- [FileType.FILES]: 'FILES',
239
- [FileType.MEDIA]: 'MEDIA',
240
- [FileType.IMAGE]: 'IMAGE',
241
- [FileType.LOGO]: 'IMAGE',
262
+ [eDropZoneFileType.FILES]: 'FILES',
263
+ [eDropZoneFileType.MEDIA]: 'MEDIA',
264
+ [eDropZoneFileType.IMAGE]: 'IMAGE',
265
+ [eDropZoneFileType.LOGO]: 'IMAGE',
242
266
  };
243
267
  this.dropZoneText =
244
- dropZoneTextMap[this._dropZoneConfig.config.dropzone?.dropZoneType] || 'FILE IMPORT FAILED';
245
- }
246
- //Template
247
- getTemplate(template) {
248
- const templateRef = this.templateRef?.find((temp) => temp.id === template);
249
- if (!templateRef) {
250
- throw new Error('Unavailable template!');
251
- }
252
- return templateRef?.template;
253
- }
254
- identify(index) {
255
- return index;
268
+ dropZoneTextMap[this._dropZoneConfig?.config?.dropzone
269
+ ?.dropZoneType] || 'FILE IMPORT FAILED';
256
270
  }
257
271
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaUploadDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaUploadDropzoneComponent, isStandalone: true, selector: "app-ca-upload-dropzone", inputs: { config: "config", isDropzoneShownInCrop: "isDropzoneShownInCrop", customWidth: "customWidth" }, outputs: { onFileEvent: "onFileEvent", onDropBackground: "onDropBackground", closeDropzone: "closeDropzone" }, host: { listeners: { "window:paste": "handlePaste($event)", "body:dragleave": "onDragLeaveWindows($event)", "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "window:dragenter": "onWindowDragEnter($event)", "window:drop": "onWindowDrop($event)", "click": "triggerFileInput($event)" } }, providers: [
272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaUploadDropzoneComponent, isStandalone: true, selector: "app-ca-upload-dropzone", inputs: { dropZoneConfig: "dropZoneConfig", isDropzoneShownInCrop: "isDropzoneShownInCrop", customWidth: "customWidth", files: "files" }, outputs: { onFileEvent: "onFileEvent", onDropBackground: "onDropBackground", closeDropzone: "closeDropzone" }, host: { listeners: { "window:paste": "handlePaste($event)", "body:dragleave": "onDragLeaveWindows($event)", "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "window:dragenter": "onWindowDragEnter($event)", "window:drop": "onWindowDrop($event)", "click": "triggerFileInput($event)" } }, providers: [
259
273
  provideLottieOptions({
260
274
  player: () => import('lottie-web'),
261
275
  }),
262
- ], viewQueries: [{ propertyName: "dropZone", first: true, predicate: ["dropZone"], descendants: true }, { propertyName: "templateRef", predicate: TemplateContainerDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n @for (item of _dropZoneConfigArray; track $index) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(item.template);\n context: { $implicit: item.config }\n \"\n ></ng-container>\n </div>\n }\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n <ng-container *ngIf=\"isMaxCountReached(); else normalText\">\n MAX COUNT REACHED\n </ng-container>\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n <ng-container\n *ngIf=\"_dropZoneConfigArray?.[0]?.template === 'mediaTemplate'\"\n >\n <p class=\"media-sizes\">max file size 50mb</p>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!isDropzoneExpanded\">\n <span class=\"upload-dropzone-text-small\">\n <ng-container *ngIf=\"isMaxCountReached(); else formatText\">\n {{ files.length }} FILES IMPORTED\n </ng-container>\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n </ng-container>\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n <svg-icon\n [src]=\"!isSupportedType && !isFileDrop ? iconSrc : dropzoneSvgRoute\"\n [ngClass]=\"{\n 'cancel-unsupported-zone': isSupportedType,\n 'svgIcon-document': files.length < 2,\n 'svg-small': files.length >= 2,\n }\"\n ></svg-icon>\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n <span\n class=\"extension extension-{{\n extension\n }} d-flex justify-content-center align-items-center\"\n *ngFor=\"let extension of dropZoneAvailableFiles; trackBy: identify\"\n >{{ extension }}</span\n >\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#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-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!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-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!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-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!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-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::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-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!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-22 svg{width:22px;height:22px}.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}.cursor-pointer{cursor:pointer}.dropzone-container{width:100%;height:178px;outline:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i2.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: TemplateContainerDirective, selector: "[templateContainer]", inputs: ["id"] }, { kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
276
+ ], viewQueries: [{ propertyName: "dropZone", first: true, predicate: ["dropZone"], descendants: true }, { propertyName: "templateRef", predicate: TemplateContainerDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n <!-- @for (item of _dropZoneConfigArray; track $index) { -->\n @if (_dropZoneConfig) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(_dropZoneConfig.template);\n context: { $implicit: _dropZoneConfig?.config }\n \"\n ></ng-container>\n </div>\n }\n <!-- } -->\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n @if (isMaxCountReached()) {\n MAX COUNT REACHED\n } @else {\n <ng-container *ngTemplateOutlet=\"normalText\"> </ng-container>\n }\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n @if (_dropZoneConfig?.template === 'mediaTemplate') {\n <p class=\"media-sizes\">max file size 50mb</p>\n }\n </p>\n @if (!isDropzoneExpanded) {\n <span class=\"upload-dropzone-text-small\">\n @if (isMaxCountReached()) {\n {{ files.length }} FILES IMPORTED\n } @else {\n <ng-container *ngTemplateOutlet=\"formatText\">\n </ng-container>\n }\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n }\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n @if (!isSupportedType && !isFileDrop) {\n <svg-icon\n [src]=\"iconSrc\"\n [ngClass]=\"files.length < 2 ? 'svgIcon-document' : 'svg-small'\"\n >\n </svg-icon>\n } @else {\n <svg-icon\n [src]=\"dropzoneSvgRoute\"\n class=\"cancel-unsupported-zone\"\n (click)=\"resetDropzoneView($event)\"\n >\n </svg-icon>\n }\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n @for (extension of dropZoneAvailableFiles; track $index) {\n <span\n class=\"extension extension-{{\n extension | mimeTypeToExtension\n }} \n d-flex justify-content-center align-items-center\"\n >\n {{ extension | mimeTypeToExtension }}\n </span>\n }\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#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-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!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-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!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-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!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-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::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-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!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-22 svg{width:22px;height:22px}.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}.cursor-pointer{cursor:pointer}.dropzone-container{width:100%;height:178px;outline:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i2.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: TemplateContainerDirective, selector: "[templateContainer]", inputs: ["id"] }, { kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }, { kind: "pipe", type: MimeTypeToExtensionPipe, name: "mimeTypeToExtension" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
263
277
  }
264
278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaUploadDropzoneComponent, decorators: [{
265
279
  type: Component,
@@ -270,25 +284,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
270
284
  NgTemplateOutlet,
271
285
  TemplateContainerDirective,
272
286
  LottieComponent,
287
+ MimeTypeToExtensionPipe,
273
288
  ], providers: [
274
289
  provideLottieOptions({
275
290
  player: () => import('lottie-web'),
276
291
  }),
277
292
  ], encapsulation: ViewEncapsulation.None, host: {
278
293
  '(window:paste)': 'handlePaste($event)',
279
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n @for (item of _dropZoneConfigArray; track $index) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(item.template);\n context: { $implicit: item.config }\n \"\n ></ng-container>\n </div>\n }\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n <ng-container *ngIf=\"!isShownDropzoneFocus && !isDropzoneExpanded\">\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n </ng-container>\n\n <!--Lottie animation-->\n <ng-container\n *ngIf=\"(isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType\"\n >\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n <ng-container *ngIf=\"isSupportedType\">\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n </ng-container>\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n <ng-container *ngIf=\"isMaxCountReached(); else normalText\">\n MAX COUNT REACHED\n </ng-container>\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n <ng-container\n *ngIf=\"_dropZoneConfigArray?.[0]?.template === 'mediaTemplate'\"\n >\n <p class=\"media-sizes\">max file size 50mb</p>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!isDropzoneExpanded\">\n <span class=\"upload-dropzone-text-small\">\n <ng-container *ngIf=\"isMaxCountReached(); else formatText\">\n {{ files.length }} FILES IMPORTED\n </ng-container>\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n </ng-container>\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n <svg-icon\n [src]=\"!isSupportedType && !isFileDrop ? iconSrc : dropzoneSvgRoute\"\n [ngClass]=\"{\n 'cancel-unsupported-zone': isSupportedType,\n 'svgIcon-document': files.length < 2,\n 'svg-small': files.length >= 2,\n }\"\n ></svg-icon>\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n <span\n class=\"extension extension-{{\n extension\n }} d-flex justify-content-center align-items-center\"\n *ngFor=\"let extension of dropZoneAvailableFiles; trackBy: identify\"\n >{{ extension }}</span\n >\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#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-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!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-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!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-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!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-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::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-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!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-22 svg{width:22px;height:22px}.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}.cursor-pointer{cursor:pointer}.dropzone-container{width:100%;height:178px;outline:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"] }]
294
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"dropzone-container d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'split-dropzone': isDropzoneShownInCrop,\n unSupported: isSupportedType,\n expanded: isDropzoneExpanded && !isSupportedType,\n 'disabled-dropzone': files.length >= this.limit && this.limit > 0,\n }\"\n [ngStyle]=\"{\n width:\n files.length === 0\n ? customWidth || '448px'\n : files.length === 1\n ? '296px'\n : files.length === 2\n ? '148px'\n : files.length === 3\n ? '148px'\n : '148px',\n }\"\n>\n <!-- @for (item of _dropZoneConfigArray; track $index) { -->\n @if (_dropZoneConfig) {\n <div\n class=\"dropzone-content d-flex align-items-center justify-content-center\"\n [ngClass]=\"{\n 'upload-dropzone-unsupported': isSupportedType,\n expandedContent: isDropzoneExpanded,\n 'column-layout': files.length >= 2,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate(_dropZoneConfig.template);\n context: { $implicit: _dropZoneConfig?.config }\n \"\n ></ng-container>\n </div>\n }\n <!-- } -->\n</div>\n\n<!-------------Document template-------------->\n<ng-template templateContainer id=\"documentsTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Media template-------------->\n<ng-template templateContainer id=\"mediaTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image template-------------->\n<ng-template templateContainer id=\"imageTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Image Crop template-------------->\n<ng-template templateContainer id=\"imageCropTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!-------------Logo template-------------->\n<ng-template templateContainer id=\"logoTemplate\" let-config>\n <!--SVG ICON-->\n @if (!isShownDropzoneFocus && !isDropzoneExpanded) {\n <ng-container *ngTemplateOutlet=\"dropzoneIconTemplate\"></ng-container>\n }\n\n <!--Lottie animation-->\n @if ((isDropzoneExpanded || isShownDropzoneFocus) && !isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"lottieAnimationTemplate\"\n ></ng-container>\n }\n\n <!--Content for supported and unsupported types-->\n <ng-container *ngTemplateOutlet=\"dropzoneTextTemplate\"> </ng-container>\n\n <!--Supported extensions for unsupported type-->\n @if (isSupportedType) {\n <ng-container\n *ngTemplateOutlet=\"supportedExtensionsTemplate\"\n ></ng-container>\n }\n\n <!--FILE INPUT-->\n <ng-container\n *ngTemplateOutlet=\"fileInputTemplate; context: { $implicit: config }\"\n ></ng-container>\n</ng-template>\n\n<!--------------COMMON-TEMPLATE-------------->\n\n<!------INPUT------->\n<ng-template #fileInputTemplate let-config>\n <input\n #dropZone\n [id]=\"'dropZone' + (config.dropzoneOption?.dropzoneIndex || 0)\"\n type=\"file\"\n [accept]=\"config.dropzone?.dropZoneAvailableFiles\"\n [multiple]=\"config.dropzone?.multiple\"\n (change)=\"handleFileChange($event)\"\n style=\"display: none\"\n />\n</ng-template>\n\n<!--DROPZONE_TEXT-->\n<ng-template #dropzoneTextTemplate>\n <div\n class=\"dropzone-text d-flex flex-column align-items-center justify-content-center\"\n >\n <p\n class=\"upload-dropzone-text\"\n [ngClass]=\"{\n 'unsupported-text-big': isSupportedType,\n 'max-count': isMaxCountReached(),\n }\"\n >\n @if (isMaxCountReached()) {\n MAX COUNT REACHED\n } @else {\n <ng-container *ngTemplateOutlet=\"normalText\"> </ng-container>\n }\n <ng-template #normalText>\n {{\n isSupportedType\n ? 'INVALID FILE TYPE'\n : 'DRAG ' + dropZoneText\n }}\n {{\n !(isSupportedType || (files && files.length)) ? ' HERE' : ''\n }}\n </ng-template>\n @if (_dropZoneConfig?.template === 'mediaTemplate') {\n <p class=\"media-sizes\">max file size 50mb</p>\n }\n </p>\n @if (!isDropzoneExpanded) {\n <span class=\"upload-dropzone-text-small\">\n @if (isMaxCountReached()) {\n {{ files.length }} FILES IMPORTED\n } @else {\n <ng-container *ngTemplateOutlet=\"formatText\">\n </ng-container>\n }\n <ng-template #formatText>\n {{\n isSupportedType\n ? 'SUPPORTED FORMATS'\n : 'OR CLICK TO ADD'\n }}\n </ng-template>\n </span>\n }\n </div>\n</ng-template>\n\n<!------ICON-------->\n<ng-template #dropzoneIconTemplate>\n @if (!isSupportedType && !isFileDrop) {\n <svg-icon\n [src]=\"iconSrc\"\n [ngClass]=\"files.length < 2 ? 'svgIcon-document' : 'svg-small'\"\n >\n </svg-icon>\n } @else {\n <svg-icon\n [src]=\"dropzoneSvgRoute\"\n class=\"cancel-unsupported-zone\"\n (click)=\"resetDropzoneView($event)\"\n >\n </svg-icon>\n }\n</ng-template>\n<!-- LOTTIE_ANIMATION -->\n<ng-template #lottieAnimationTemplate>\n <div\n class=\"animation-container d-flex flex-column align-items-center justify-content-center\"\n [ngClass]=\"{ expanded: isDropzoneExpanded }\"\n >\n <ng-lottie\n class=\"static-lottie-animation\"\n [options]=\"lottieOptions\"\n ></ng-lottie>\n </div>\n</ng-template>\n\n<!-- SUPPORTED_EXTENSIONS -->\n<ng-template #supportedExtensionsTemplate>\n <div class=\"supported-extensions d-flex justify-content-center\">\n @for (extension of dropZoneAvailableFiles; track $index) {\n <span\n class=\"extension extension-{{\n extension | mimeTypeToExtension\n }} \n d-flex justify-content-center align-items-center\"\n >\n {{ extension | mimeTypeToExtension }}\n </span>\n }\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold,.dropzone-container .dropzone-text .upload-dropzone-text-small{font-weight:600!important}.ca-font-bold,.dropzone-container .dropzone-text .upload-dropzone-text{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.dropzone-container .supported-extensions .extension{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#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-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!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-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!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-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!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-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::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-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!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-22 svg{width:22px;height:22px}.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}.cursor-pointer{cursor:pointer}.dropzone-container{width:100%;height:178px;outline:4px dashed #eeeeee;border-radius:2px;position:relative;cursor:pointer;overflow:hidden}.dropzone-container.split-dropzone{width:auto!important}.dropzone-container.disabled-dropzone{pointer-events:none;opacity:.6;cursor:not-allowed}.dropzone-container:hover{background-color:#eee}.dropzone-container.dropzone-small{width:302px!important}.dropzone-container.expanded{height:458px}.dropzone-container.unSupported{outline-color:#ed9292;outline-offset:-4px;background-color:#fff}.dropzone-container .animation-container{height:auto;width:auto;overflow:hidden;position:relative;transition:transform .5s ease-in-out}.dropzone-container .animation-container .static-lottie-animation{width:100%;height:100%}.dropzone-container .animation-container.expanded{transition:height .5s ease-in-out}.dropzone-container .dropzone-content{gap:10px;position:relative;transition:transform .5s ease-in-out,opacity .5s ease-in-out}.dropzone-container .dropzone-content.column-layout{flex-direction:column;align-items:center;justify-content:center}.dropzone-container .dropzone-content .cancel-unsupported-zone{position:absolute}.dropzone-container .dropzone-content.dropzone-small{width:302px;height:100%}.dropzone-container .dropzone-content.expandedContent{flex-direction:column;transform:scale(1);opacity:1;top:-30px}.dropzone-container .upload-dropzone-unsupported{flex-direction:column;gap:12px;position:relative;width:100%;height:100%}.dropzone-container .svgIcon-document{width:100px;height:100px}.dropzone-container .svgIcon-document.svg-small svg-icon{width:80px!important;height:80px!important}.dropzone-container .svgIcon-document.big{width:200px;height:200px}.dropzone-container .dropzone-text{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none}.dropzone-container .dropzone-text .upload-dropzone-text{font-size:14px;line-height:18px;align-items:center;font-family:Montserrat,sans-serif;margin-bottom:0}.dropzone-container .dropzone-text .upload-dropzone-text.unsupported-text-big{color:#df3c3c}.dropzone-container .dropzone-text .upload-dropzone-text.max-count{text-align:center}.dropzone-container .dropzone-text .upload-dropzone-text-small{font-family:Montserrat,sans-serif;margin-top:4px;font-size:11px;line-height:14px;align-items:center}.dropzone-container .dropzone-text .upload-dropzone-text-small .media-sizes{font-size:11px;line-height:14px;color:#919191;margin-top:4px}.dropzone-container .cancel-unsupported-zone{position:absolute;top:6px;right:14px;cursor:pointer;width:12.6px;height:12.6px}.dropzone-container .supported-extensions{gap:4px}.dropzone-container .supported-extensions .extension{font-family:Montserrat,sans-serif;width:35px;height:18px;border-radius:1px;font-size:11px;color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.dropzone-container .supported-extensions .extension-jpg,.dropzone-container .supported-extensions .extension-jpeg,.dropzone-container .supported-extensions .extension-png{background:#fab15c}.dropzone-container .supported-extensions .extension-pdf{background-color:#e66767}.dropzone-container .supported-extensions .extension-mov,.dropzone-container .supported-extensions .extension-mp4,.dropzone-container .supported-extensions .extension-avi{background-color:#b370f0}.dropzone-container .supported-extensions .extension:hover{transition:height .3s ease-in-out;opacity:1;cursor:auto!important}\n"] }]
280
295
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { templateRef: [{
281
296
  type: ViewChildren,
282
297
  args: [TemplateContainerDirective]
283
298
  }], dropZone: [{
284
299
  type: ViewChild,
285
300
  args: ['dropZone']
286
- }], config: [{
301
+ }], dropZoneConfig: [{
287
302
  type: Input
288
303
  }], isDropzoneShownInCrop: [{
289
304
  type: Input
290
305
  }], customWidth: [{
291
306
  type: Input
307
+ }], files: [{
308
+ type: Input
292
309
  }], onFileEvent: [{
293
310
  type: Output
294
311
  }], onDropBackground: [{
@@ -317,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
317
334
  type: HostListener,
318
335
  args: ['click', ['$event']]
319
336
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWRyb3B6b25lL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVFuRSxPQUFPO0FBQ1AsT0FBTyxFQUNILGFBQWEsRUFDYixTQUFTLEVBQ1QsZUFBZSxFQUNmLGVBQWUsRUFDZixTQUFTLEdBQ1osTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTTtBQUNOLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBRTFELFdBQVc7QUFDWCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxRQUFRO0FBQ1IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxRQUFRO0FBQ1IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUEwQjFFLE1BQU0sT0FBTyx5QkFBeUI7SUFLbEMsSUFBYSxNQUFNLENBQUMsSUFBb0I7UUFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQsT0FBTztZQUNQLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVoQixpQkFBaUI7WUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXRCLGVBQWU7WUFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUUxQixRQUFRO1lBQ1IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBMEJELFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekJqQywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFJaEQsZ0JBQVcsR0FDUCxJQUFJLFlBQVksRUFBMkMsQ0FBQztRQUN0RCxxQkFBZ0IsR0FDdEIsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTSxDQUFDO1FBRTFDLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFFMUMsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBQ3RDLFVBQUssR0FBVyxDQUFDLENBQUM7UUFFbEIsa0JBQWEsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDO1FBQy9DLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUVKLENBQUM7SUFHdkMsa0JBQWtCLENBQUMsS0FBZ0I7UUFDdEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDNUIsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7SUFDUCxDQUFDO0lBR00sTUFBTSxDQUFDLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV0RSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBR00sVUFBVSxDQUFDLEtBQWdCO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDM0IsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUc7Z0JBQ2pCLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJO2FBQ2pCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUdNLFdBQVcsQ0FBQyxLQUFnQjtRQUMvQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUNuQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDNUIsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7SUFDUCxDQUFDO0lBR00saUJBQWlCLENBQUMsS0FBZ0I7UUFDckMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUNqRCxFQUFFLFlBQXdCLENBQUM7UUFDL0IsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUc7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3BDLElBQUksRUFBRSxLQUFLO2dCQUNYLElBQUksRUFBRSxhQUFhO2FBQ3RCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFnQjtRQUN6QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFHTSxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNyQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsT0FBTztZQUNSLFNBQVMsQ0FBQyxLQUFLLENBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQXdCLENBQ2pFLENBQUM7SUFDVixDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsc0JBQXNCO1lBQ3ZCLGVBQWUsQ0FBQyxVQUFVLENBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUF3QixDQUNqRSxDQUFDO0lBQ1YsQ0FBQztJQUVELGFBQWE7SUFDTixlQUFlO1FBQ2xCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGFBQTBCLENBQ25FLENBQUM7SUFDTixDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLElBQUksQ0FBQyxLQUFLO1lBQ04sU0FBUyxDQUFDLEtBQUssQ0FDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBMEIsQ0FDbkUsSUFBSSxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU87SUFDQSxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBZTtRQUMvQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUMvQixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFVLEVBQUUsU0FBbUI7UUFDM0MsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUQsSUFDSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FDM0IsYUFBYSxFQUNiLElBQUksQ0FBQyxzQkFBc0IsQ0FDOUIsRUFDSCxDQUFDO2dCQUNDLElBQ0ksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjO29CQUN2QyxFQUFFLHlCQUF5QixFQUNqQyxDQUFDO29CQUNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFFN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlCLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUNsQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHO3dCQUNULEdBQUcsSUFBSSxDQUFDLEtBQUs7d0JBQ2I7NEJBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNuQixHQUFHLEVBQUUsT0FBTzs0QkFDWixTQUFTLEVBQUUsYUFBYTs0QkFDeEIsSUFBSSxFQUFFLElBQUk7NEJBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNmLFFBQVEsRUFBRSxXQUFXO3lCQUN4QjtxQkFDSixDQUFDO29CQUVGLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7NEJBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzs0QkFDakIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHO3lCQUN6QixDQUFDLENBQUM7b0JBQ1AsQ0FBQztnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDQSxtQkFBbUI7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUNqRCxFQUFFLFlBQXdCLENBQUM7UUFDL0IsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUc7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3BDLElBQUksRUFBRSxLQUFLO2dCQUNYLElBQUksRUFBRSxhQUFhO2FBQ3RCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7SUFDUCxrQkFBa0I7UUFDdEIsTUFBTSxlQUFlLEdBQW1DO1lBQ3BELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87WUFDekIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztZQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO1lBQ3pCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU87U0FDM0IsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZO1lBQ2IsZUFBZSxDQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUF3QixDQUNqRSxJQUFJLG9CQUFvQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVO0lBQ1YsV0FBVyxDQUFDLFFBQWdCO1FBQ3hCLE1BQU0sV0FBVyxHQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQTNUUSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwybUJBWHZCO1lBQ1Asb0JBQW9CLENBQUM7Z0JBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQ3JDLENBQUM7U0FDTCxpSkFRYSwwQkFBMEIsZ0RDekU1Qyw0cFVBMlNBLHlycUJEclBRLFlBQVkseWxCQUNaLG9CQUFvQixnT0FDcEIsV0FBVywrQkFFWCwwQkFBMEIsZ0ZBQzFCLGVBQWU7OzRGQWFWLHlCQUF5QjtrQkF4QnJDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHdCQUF3QixXQUd6Qjt3QkFDTCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsZUFBZTtxQkFDbEIsYUFDVTt3QkFDUCxvQkFBb0IsQ0FBQzs0QkFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7eUJBQ3JDLENBQUM7cUJBQ0wsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixnQkFBZ0IsRUFBRSxxQkFBcUI7cUJBQzFDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3NGQUkvQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUVqQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRVIsTUFBTTtzQkFBbEIsS0FBSztnQkFzQkcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNO2dCQUdHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQW9CQSxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY25DLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUJ6QixVQUFVO3NCQURoQixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQjdCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9COUIsaUJBQWlCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVCNUMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTaEMsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZyb20sIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG90dGllQ29tcG9uZW50LCBwcm92aWRlTG90dGllT3B0aW9ucyB9IGZyb20gJ25neC1sb3R0aWUnO1xuXG4vL01vZGVsXG5pbXBvcnQgeyBEcm9wQmFja2dyb3VuZEV2ZW50LCBGaWxlQ29uZmlnLCBGaWxlRXZlbnQgfSBmcm9tICcuL21vZGVscyc7XG5cbi8vQ29uZmlnXG5pbXBvcnQgeyBEcm9wem9uZUNvbmYgfSBmcm9tICcuL2NvbmZpZy9kcm9wem9uZS1jb25maWcudHlwZSc7XG5cbi8vVXRpbHNcbmltcG9ydCB7XG4gICAgRmlsZUFuaW1hdGlvbixcbiAgICBGaWxlSWNvbnMsXG4gICAgRklMRV9FWFRFTlNJT05TLFxuICAgIExvdHRpZUNvbnN0YW50cyxcbiAgICBGaWxlTGltaXQsXG59IGZyb20gJy4vdXRpbHMnO1xuXG4vL0VudW1cbmltcG9ydCB7IEZpbGVBY3Rpb24sIEZpbGVUeXBlLCBQYWdlc0VudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy9EaXJlY3RpdmVcbmltcG9ydCB7IFRlbXBsYXRlQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbi8vSGVscGVyXG5pbXBvcnQgeyBGaWxlVXRpbHMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vL1JvdXRlclxuaW1wb3J0IHsgRHJvcHpvbmVTdmdSb3V0ZSB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcy9kcm9wem9uZS1zdmcucm91dGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS11cGxvYWQtZHJvcHpvbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFRlbXBsYXRlQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgICAgICBMb3R0aWVDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUxvdHRpZU9wdGlvbnMoe1xuICAgICAgICAgICAgcGxheWVyOiAoKSA9PiBpbXBvcnQoJ2xvdHRpZS13ZWInKSxcbiAgICAgICAgfSksXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyh3aW5kb3c6cGFzdGUpJzogJ2hhbmRsZVBhc3RlKCRldmVudCknLFxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhVXBsb2FkRHJvcHpvbmVDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGRyZW4oVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUpXG4gICAgdGVtcGxhdGVSZWYhOiBRdWVyeUxpc3Q8VGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bab25lJykgZHJvcFpvbmUhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgc2V0IGNvbmZpZyhkYXRhOiBEcm9wem9uZUNvbmZbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnQXJyYXkgPSBkYXRhO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Ryb3Bab25lQ29uZmlnQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnID0gdGhpcy5fZHJvcFpvbmVDb25maWdBcnJheVswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9JY29uc1xuICAgICAgICAgICAgdGhpcy5nZXRJY29ucygpO1xuXG4gICAgICAgICAgICAvL1N1cHBvcnRlZCBmaWxlc1xuICAgICAgICAgICAgdGhpcy5zdXBwb3J0ZWRGaWxlcygpO1xuXG4gICAgICAgICAgICAvL0Ryb3B6b25lIHRleHRcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcFpvbmVUZXh0KCk7XG5cbiAgICAgICAgICAgIC8vTG90dGllXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvdHRpZU9wdGlvbnMoKTtcblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbiAgICBASW5wdXQoKSBpc0Ryb3B6b25lU2hvd25JbkNyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjdXN0b21XaWR0aCE6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uRmlsZUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBvbkRyb3BCYWNrZ3JvdW5kOiBFdmVudEVtaXR0ZXI8RHJvcEJhY2tncm91bmRFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPERyb3BCYWNrZ3JvdW5kRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcHpvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xuXG4gICAgcHVibGljIF9kcm9wWm9uZUNvbmZpZ0FycmF5OiBEcm9wem9uZUNvbmZbXSA9IFtdO1xuICAgIHB1YmxpYyBfZHJvcFpvbmVDb25maWchOiBEcm9wem9uZUNvbmY7XG4gICAgcHVibGljIGZpbGVzOiBGaWxlQ29uZmlnW10gPSBbXTtcbiAgICBwdWJsaWMgaXNTaG93bkRyb3B6b25lRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNGaWxlRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1N1cHBvcnRlZFR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZHJvcFpvbmVUZXh0OiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgaXNEcm9wem9uZUV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGljb25TcmM6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBkcm9wWm9uZUF2YWlsYWJsZUZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHB1YmxpYyBsaW1pdDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBsb3R0aWVPcHRpb25zID0gTG90dGllQ29uc3RhbnRzLkRFRkFVTFRfTE9UVElFO1xuICAgIHB1YmxpYyBkcm9wem9uZVN2Z1JvdXRlID0gRHJvcHpvbmVTdmdSb3V0ZS5jbG9zZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JvZHk6ZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnTGVhdmVXaW5kb3dzKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbjogRmlsZUFjdGlvbi5EUkFHTEVBVkUsXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHsgYWN0aW9uOiBGaWxlQWN0aW9uLkRST1AsIHZhbHVlOiBmYWxzZSB9KTtcblxuICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcykge1xuICAgICAgICAgICAgdGhpcy5vbkZpbGVVcGxvYWQoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBGaWxlQWN0aW9uLkRSQUdPVkVSLFxuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmxvdHRpZU9wdGlvbnMgJiYgIXRoaXMubG90dGllT3B0aW9ucy5hdXRvcGxheSkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubG90dGllT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IEZpbGVBY3Rpb24uRFJBR0xFQVZFLFxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6ZHJhZ2VudGVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25XaW5kb3dEcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLl9kcm9wWm9uZUNvbmZpZy5jb25maWcuZHJvcHpvbmVcbiAgICAgICAgICAgID8uZHJvcFpvbmVUeXBlIGFzIEZpbGVUeXBlO1xuICAgICAgICBjb25zdCBhbmltYXRpb25QYXRoID0gRmlsZUFuaW1hdGlvbi5BTklNQVRJT05TW2ZpbGVUeXBlXTtcblxuICAgICAgICBpZiAoYW5pbWF0aW9uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAnc3ZnJyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMsXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF0aDogYW5pbWF0aW9uUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6ZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgb25XaW5kb3dEcm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHsgYWN0aW9uOiBGaWxlQWN0aW9uLkRST1AsIHZhbHVlOiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRyaWdnZXJGaWxlSW5wdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNYXhDb3VudFJlYWNoZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJvcFpvbmUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJY29ucygpIHtcbiAgICAgICAgdGhpcy5pY29uU3JjID1cbiAgICAgICAgICAgIEZpbGVJY29ucy5JQ09OU1tcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZy5jb25maWcuZHJvcHpvbmU/LmRyb3Bab25lVHlwZSBhcyBGaWxlVHlwZVxuICAgICAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VwcG9ydGVkRmlsZXMoKSB7XG4gICAgICAgIHRoaXMuZHJvcFpvbmVBdmFpbGFibGVGaWxlcyA9XG4gICAgICAgICAgICBGSUxFX0VYVEVOU0lPTlMuRVhURU5TSU9OU1tcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZy5jb25maWcuZHJvcHpvbmU/LmRyb3Bab25lVHlwZSBhcyBGaWxlVHlwZVxuICAgICAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvL2xpbWl0IGZpbGVzXG4gICAgcHVibGljIG1heEZpbGVzQWxsb3dlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gRmlsZUxpbWl0LkxJTUlUW1xuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWcuY29uZmlnLmRyb3B6b25lPy5kcm9wWm9uZVBhZ2VzIGFzIFBhZ2VzRW51bVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc01heENvdW50UmVhY2hlZCgpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy5saW1pdCA9XG4gICAgICAgICAgICBGaWxlTGltaXQuTElNSVRbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWcuY29uZmlnLmRyb3B6b25lPy5kcm9wWm9uZVBhZ2VzIGFzIFBhZ2VzRW51bVxuICAgICAgICAgICAgXSB8fCAwO1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggPj0gdGhpcy5saW1pdDtcbiAgICB9XG5cbiAgICAvL0ZpbGVzXG4gICAgcHVibGljIGhhbmRsZUZpbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5maWxlcykge1xuICAgICAgICAgICAgdGhpcy5vbkZpbGVVcGxvYWQoaW5wdXQuZmlsZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVVwbG9hZChmaWxlczogRmlsZUxpc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZUFycmF5ID0gQXJyYXkuZnJvbShmaWxlcyk7XG5cbiAgICAgICAgY29uc3QgdXBsb2FkT2JzZXJ2YWJsZXMgPSBmaWxlQXJyYXkubWFwKChmaWxlLCBpbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZShmaWxlLCBpbmRleCA9PT0gZmlsZUFycmF5Lmxlbmd0aCAtIDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZyb20odXBsb2FkT2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHVwbG9hZGluZyBmaWxlczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBbGwgZmlsZXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRmlsZShmaWxlOiBGaWxlLCBlbWl0RXZlbnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghZmlsZSkgcmV0dXJuO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gRmlsZVV0aWxzLmdldEZpbGVFeHRlbnNpb24oZmlsZS5uYW1lKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFGaWxlVXRpbHMuaXNTdXBwb3J0ZWRFeHRlbnNpb24oXG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcFpvbmVBdmFpbGFibGVGaWxlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2Ryb3Bab25lQ29uZmlnLmNvbmZpZy5kcm9wem9uZU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgPy5kaXNhYmxlVW5zdXBwb3J0ZWRQcmV2aWV3XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBwb3J0ZWRUeXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBGaWxlVXRpbHMuZ2V0QmxvYihmaWxlKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChibG9iQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iQ29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBibG9iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogZmlsZUV4dGVuc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlkOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsRmlsZTogYmxvYkNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25GaWxlRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBGaWxlQWN0aW9uLkFERCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgZmlsZTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FudCB1cGxvYWQgZmlsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9Mb3R0aWVcbiAgICBwcml2YXRlIHVwZGF0ZUxvdHRpZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5fZHJvcFpvbmVDb25maWcuY29uZmlnLmRyb3B6b25lXG4gICAgICAgICAgICA/LmRyb3Bab25lVHlwZSBhcyBGaWxlVHlwZTtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uUGF0aCA9IEZpbGVBbmltYXRpb24uQU5JTUFUSU9OU1tmaWxlVHlwZV07XG5cbiAgICAgICAgaWYgKGFuaW1hdGlvblBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMubG90dGllT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICByZW5kZXJlcjogJ3N2ZycsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6ICF0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzLFxuICAgICAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdGg6IGFuaW1hdGlvblBhdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9Ecm9wem9uZSB0ZXh0XG4gICAgcHJpdmF0ZSB1cGRhdGVEcm9wWm9uZVRleHQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyb3Bab25lVGV4dE1hcDogeyBba2V5IGluIEZpbGVUeXBlXT86IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgW0ZpbGVUeXBlLkZJTEVTXTogJ0ZJTEVTJyxcbiAgICAgICAgICAgIFtGaWxlVHlwZS5NRURJQV06ICdNRURJQScsXG4gICAgICAgICAgICBbRmlsZVR5cGUuSU1BR0VdOiAnSU1BR0UnLFxuICAgICAgICAgICAgW0ZpbGVUeXBlLkxPR09dOiAnSU1BR0UnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZHJvcFpvbmVUZXh0ID1cbiAgICAgICAgICAgIGRyb3Bab25lVGV4dE1hcFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZy5jb25maWcuZHJvcHpvbmU/LmRyb3Bab25lVHlwZSBhcyBGaWxlVHlwZVxuICAgICAgICAgICAgXSB8fCAnRklMRSBJTVBPUlQgRkFJTEVEJztcbiAgICB9XG5cbiAgICAvL1RlbXBsYXRlXG4gICAgZ2V0VGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUgfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVJlZj8uZmluZCgodGVtcCkgPT4gdGVtcC5pZCA9PT0gdGVtcGxhdGUpO1xuXG4gICAgICAgIGlmICghdGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hdmFpbGFibGUgdGVtcGxhdGUhJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVtcGxhdGVSZWY/LnRlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpZGVudGlmeShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImRyb3B6b25lLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NwbGl0LWRyb3B6b25lJzogaXNEcm9wem9uZVNob3duSW5Dcm9wLFxuICAgICAgICB1blN1cHBvcnRlZDogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICBleHBhbmRlZDogaXNEcm9wem9uZUV4cGFuZGVkICYmICFpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgICdkaXNhYmxlZC1kcm9wem9uZSc6IGZpbGVzLmxlbmd0aCA+PSB0aGlzLmxpbWl0ICYmIHRoaXMubGltaXQgPiAwLFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICBmaWxlcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/IGN1c3RvbVdpZHRoIHx8ICc0NDhweCdcbiAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgPyAnMjk2cHgnXG4gICAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgOiBmaWxlcy5sZW5ndGggPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICcxNDhweCcsXG4gICAgfVwiXG4+XG4gICAgQGZvciAoaXRlbSBvZiBfZHJvcFpvbmVDb25maWdBcnJheTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcHpvbmUtY29udGVudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd1cGxvYWQtZHJvcHpvbmUtdW5zdXBwb3J0ZWQnOiBpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRDb250ZW50OiBpc0Ryb3B6b25lRXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgJ2NvbHVtbi1sYXlvdXQnOiBmaWxlcy5sZW5ndGggPj0gMixcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGVtcGxhdGUoaXRlbS50ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLmNvbmZpZyB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG5cbjwhLS0tLS0tLS0tLS0tLURvY3VtZW50IHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJkb2N1bWVudHNUZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTdXBwb3J0ZWRUeXBlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tTWVkaWEgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cIm1lZGlhVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTaG93bkRyb3B6b25lRm9jdXMgJiYgIWlzRHJvcHpvbmVFeHBhbmRlZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIihpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGVcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1Db250ZW50IGZvciBzdXBwb3J0ZWQgYW5kIHVuc3VwcG9ydGVkIHR5cGVzLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lVGV4dFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLVN1cHBvcnRlZCBleHRlbnNpb25zIGZvciB1bnN1cHBvcnRlZCB0eXBlLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU3VwcG9ydGVkVHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLUltYWdlIHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJpbWFnZVRlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N1cHBvcnRlZFR5cGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1JbWFnZSBDcm9wIHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJpbWFnZUNyb3BUZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTdXBwb3J0ZWRUeXBlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tTG9nbyB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwibG9nb1RlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N1cHBvcnRlZFR5cGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS0tQ09NTU9OLVRFTVBMQVRFLS0tLS0tLS0tLS0tLS0+XG5cbjwhLS0tLS0tSU5QVVQtLS0tLS0tPlxuPG5nLXRlbXBsYXRlICNmaWxlSW5wdXRUZW1wbGF0ZSBsZXQtY29uZmlnPlxuICAgIDxpbnB1dFxuICAgICAgICAjZHJvcFpvbmVcbiAgICAgICAgW2lkXT1cIidkcm9wWm9uZScgKyAoY29uZmlnLmRyb3B6b25lT3B0aW9uPy5kcm9wem9uZUluZGV4IHx8IDApXCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbYWNjZXB0XT1cImNvbmZpZy5kcm9wem9uZT8uZHJvcFpvbmVBdmFpbGFibGVGaWxlc1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJjb25maWcuZHJvcHpvbmU/Lm11bHRpcGxlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tRFJPUFpPTkVfVEVYVC0tPlxuPG5nLXRlbXBsYXRlICNkcm9wem9uZVRleHRUZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcHpvbmUtdGV4dCBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgID5cbiAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWRyb3B6b25lLXRleHRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd1bnN1cHBvcnRlZC10ZXh0LWJpZyc6IGlzU3VwcG9ydGVkVHlwZSxcbiAgICAgICAgICAgICAgICAnbWF4LWNvdW50JzogaXNNYXhDb3VudFJlYWNoZWQoKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNYXhDb3VudFJlYWNoZWQoKTsgZWxzZSBub3JtYWxUZXh0XCI+XG4gICAgICAgICAgICAgICAgTUFYIENPVU5UIFJFQUNIRURcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxUZXh0PlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGlzU3VwcG9ydGVkVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnSU5WQUxJRCBGSUxFIFRZUEUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdEUkFHICcgKyBkcm9wWm9uZVRleHRcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICEoaXNTdXBwb3J0ZWRUeXBlIHx8IChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpKSA/ICcgSEVSRScgOiAnJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX2Ryb3Bab25lQ29uZmlnQXJyYXk/LlswXT8udGVtcGxhdGUgPT09ICdtZWRpYVRlbXBsYXRlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtZWRpYS1zaXplc1wiPm1heCBmaWxlIHNpemUgNTBtYjwvcD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEcm9wem9uZUV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC1kcm9wem9uZS10ZXh0LXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTWF4Q291bnRSZWFjaGVkKCk7IGVsc2UgZm9ybWF0VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmaWxlcy5sZW5ndGggfX0gRklMRVMgSU1QT1JURURcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm1hdFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdTVVBQT1JURUQgRk9STUFUUydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdPUiBDTElDSyBUTyBBREQnXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLUlDT04tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSAjZHJvcHpvbmVJY29uVGVtcGxhdGU+XG4gICAgPHN2Zy1pY29uXG4gICAgICAgIFtzcmNdPVwiIWlzU3VwcG9ydGVkVHlwZSAmJiAhaXNGaWxlRHJvcCA/IGljb25TcmMgOiBkcm9wem9uZVN2Z1JvdXRlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2NhbmNlbC11bnN1cHBvcnRlZC16b25lJzogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICAgICAgJ3N2Z0ljb24tZG9jdW1lbnQnOiBmaWxlcy5sZW5ndGggPCAyLFxuICAgICAgICAgICAgJ3N2Zy1zbWFsbCc6IGZpbGVzLmxlbmd0aCA+PSAyLFxuICAgICAgICB9XCJcbiAgICA+PC9zdmctaWNvbj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIExPVFRJRV9BTklNQVRJT04gLS0+XG48bmctdGVtcGxhdGUgI2xvdHRpZUFuaW1hdGlvblRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhbmltYXRpb24tY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZXhwYW5kZWQ6IGlzRHJvcHpvbmVFeHBhbmRlZCB9XCJcbiAgICA+XG4gICAgICAgIDxuZy1sb3R0aWVcbiAgICAgICAgICAgIGNsYXNzPVwic3RhdGljLWxvdHRpZS1hbmltYXRpb25cIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwibG90dGllT3B0aW9uc1wiXG4gICAgICAgID48L25nLWxvdHRpZT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU1VQUE9SVEVEX0VYVEVOU0lPTlMgLS0+XG48bmctdGVtcGxhdGUgI3N1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwic3VwcG9ydGVkLWV4dGVuc2lvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZXh0ZW5zaW9uIGV4dGVuc2lvbi17e1xuICAgICAgICAgICAgICAgIGV4dGVuc2lvblxuICAgICAgICAgICAgfX0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBleHRlbnNpb24gb2YgZHJvcFpvbmVBdmFpbGFibGVGaWxlczsgdHJhY2tCeTogaWRlbnRpZnlcIlxuICAgICAgICAgICAgPnt7IGV4dGVuc2lvbiB9fTwvc3BhblxuICAgICAgICA+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXVwbG9hZC1maWxlcy9jb21wb25lbnRzL2NhLXVwbG9hZC1kcm9wem9uZS9jYS11cGxvYWQtZHJvcHpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWRyb3B6b25lL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVNuRSxXQUFXO0FBQ1gsT0FBTyxFQUNILHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFN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QkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNO2dCQUdHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQWtCQSxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY25DLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0J6QixVQUFVO3NCQURoQixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQjdCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9COUIsaUJBQWlCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVCckMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWWhDLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvdHRpZUNvbXBvbmVudCwgcHJvdmlkZUxvdHRpZU9wdGlvbnMgfSBmcm9tICduZ3gtbG90dGllJztcblxuLy9JbnRlcmZhY2VzXG5pbXBvcnQge1xuICAgIElEcm9wQmFja2dyb3VuZEV2ZW50LFxuICAgIElEcm9wWm9uZUNvbmZpZyxcbiAgICBJRmlsZUNvbmZpZyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuLy9Db25zdGFudHNcbmltcG9ydCB7XG4gICAgRmlsZUFuaW1hdGlvbkNvbnN0YW50cyxcbiAgICBGaWxlSWNvbnNDb25zdGFudHMsXG4gICAgRmlsZUxpbWl0Q29uc3RhbnRzLFxuICAgIEZpbGVNaW1lVHlwZUNvbnN0YW50cyxcbiAgICBMb3R0aWVBbmltYXRpb25Db25zdGFudHMsXG59IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJztcblxuLy9FbnVtXG5pbXBvcnQge1xuICAgIGVGaWxlRHJvcFpvbmVBY3Rpb24sXG4gICAgZURyb3Bab25lRmlsZVR5cGUsXG4gICAgZUZpbGVVcGxvYWRQYWdlLFxuICAgIGVUZW1wbGF0ZVR5cGUsXG59IGZyb20gJy4vZW51bXMnO1xuXG4vL0RpcmVjdGl2ZVxuaW1wb3J0IHsgVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuLy9IZWxwZXJcbmltcG9ydCB7IEZpbGVIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vL1JvdXRlclxuaW1wb3J0IHsgRHJvcHpvbmVTdmdSb3V0ZSB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcy9kcm9wem9uZS1zdmcucm91dGVzJztcblxuLy9QaXBlc1xuaW1wb3J0IHsgTWltZVR5cGVUb0V4dGVuc2lvblBpcGUgfSBmcm9tICcuLi9jYS11cGxvYWQtZmlsZS9waXBlcyc7XG5cbi8vSW50ZXJmYWNlc1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnYXBwLWNhLXVwbG9hZC1kcm9wem9uZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLXVwbG9hZC1kcm9wem9uZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtdXBsb2FkLWRyb3B6b25lLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUsXG4gICAgICAgIExvdHRpZUNvbXBvbmVudCxcbiAgICAgICAgTWltZVR5cGVUb0V4dGVuc2lvblBpcGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUxvdHRpZU9wdGlvbnMoe1xuICAgICAgICAgICAgcGxheWVyOiAoKSA9PiBpbXBvcnQoJ2xvdHRpZS13ZWInKSxcbiAgICAgICAgfSksXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyh3aW5kb3c6cGFzdGUpJzogJ2hhbmRsZVBhc3RlKCRldmVudCknLFxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhVXBsb2FkRHJvcHpvbmVDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGRyZW4oVGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmUpXG4gICAgdGVtcGxhdGVSZWYhOiBRdWVyeUxpc3Q8VGVtcGxhdGVDb250YWluZXJEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bab25lJykgZHJvcFpvbmUhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgc2V0IGRyb3Bab25lQ29uZmlnKGRhdGE6IElEcm9wWm9uZUNvbmZpZykge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnID0gZGF0YTtcblxuICAgICAgICAgICAgLy9JY29uc1xuICAgICAgICAgICAgdGhpcy5nZXRJY29ucygpO1xuXG4gICAgICAgICAgICAvL1N1cHBvcnRlZCBmaWxlc1xuICAgICAgICAgICAgdGhpcy5zdXBwb3J0ZWRGaWxlcygpO1xuXG4gICAgICAgICAgICAvL0Ryb3B6b25lIHRleHRcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcFpvbmVUZXh0KCk7XG5cbiAgICAgICAgICAgIC8vTG90dGllXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvdHRpZU9wdGlvbnMoKTtcblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbiAgICBASW5wdXQoKSBpc0Ryb3B6b25lU2hvd25JbkNyb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjdXN0b21XaWR0aCE6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZpbGVzOiBJRmlsZUNvbmZpZ1tdID0gW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkZpbGVFdmVudDogRXZlbnRFbWl0dGVyPHsgZmlsZXM6IElGaWxlQ29uZmlnW107IGFjdGlvbjogc3RyaW5nIH0+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBJRmlsZUNvbmZpZ1tdOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBvbkRyb3BCYWNrZ3JvdW5kOiBFdmVudEVtaXR0ZXI8SURyb3BCYWNrZ3JvdW5kRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJRHJvcEJhY2tncm91bmRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VEcm9wem9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgICBwdWJsaWMgX2Ryb3Bab25lQ29uZmlnITogSURyb3Bab25lQ29uZmlnO1xuICAgIHB1YmxpYyBpc1Nob3duRHJvcHpvbmVGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0ZpbGVEcm9wOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzU3VwcG9ydGVkVHlwZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBkcm9wWm9uZVRleHQ6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBpc0Ryb3B6b25lRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaWNvblNyYzogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGRyb3Bab25lQXZhaWxhYmxlRmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGxpbWl0OiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGxvdHRpZU9wdGlvbnMgPSBMb3R0aWVBbmltYXRpb25Db25zdGFudHMuREVGQVVMVF9MT1RUSUU7XG4gICAgcHVibGljIGRyb3B6b25lU3ZnUm91dGUgPSBEcm9wem9uZVN2Z1JvdXRlLmNsb3NlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignYm9keTpkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZVdpbmRvd3MoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkRSQUdMRUFWRSxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGaWxlRHJvcCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5vbkRyb3BCYWNrZ3JvdW5kLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uOiBlRmlsZURyb3Bab25lQWN0aW9uLkRST1AsXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uRmlsZVVwbG9hZChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzU2hvd25Ecm9wem9uZUZvY3VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0Ryb3B6b25lRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJBR09WRVIsXG4gICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubG90dGllT3B0aW9ucyAmJiAhdGhpcy5sb3R0aWVPcHRpb25zLmF1dG9wbGF5KSB7XG4gICAgICAgICAgICB0aGlzLmxvdHRpZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5sb3R0aWVPcHRpb25zLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZpbGVEcm9wID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJvcHpvbmVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIHRoaXMub25Ecm9wQmFja2dyb3VuZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5EUkFHTEVBVkUsXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpkcmFnZW50ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbldpbmRvd0RyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzRmlsZURyb3AgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Nob3duRHJvcHpvbmVGb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBlRmlsZVR5cGUgPSB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGU7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvblBhdGggPSBGaWxlQW5pbWF0aW9uQ29uc3RhbnRzLkFOSU1BVElPTlNbZUZpbGVUeXBlXTtcblxuICAgICAgICBpZiAoYW5pbWF0aW9uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAnc3ZnJyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMsXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF0aDogYW5pbWF0aW9uUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6ZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uV2luZG93RHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEcm9wem9uZUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm9uRHJvcEJhY2tncm91bmQuZW1pdCh7XG4gICAgICAgICAgICBhY3Rpb246IGVGaWxlRHJvcFpvbmVBY3Rpb24uRFJPUCxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0cmlnZ2VyRmlsZUlucHV0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTWF4Q291bnRSZWFjaGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bab25lLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbnMoKSB7XG4gICAgICAgIHRoaXMuaWNvblNyYyA9XG4gICAgICAgICAgICBGaWxlSWNvbnNDb25zdGFudHMuSUNPTlNbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGVcbiAgICAgICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIHN1cHBvcnRlZEZpbGVzKCkge1xuICAgICAgICB0aGlzLmRyb3Bab25lQXZhaWxhYmxlRmlsZXMgPVxuICAgICAgICAgICAgRmlsZU1pbWVUeXBlQ29uc3RhbnRzLlNVUE9SVEVEX01JTUVfVFlQRV9NQVBbXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVcbiAgICAgICAgICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGVcbiAgICAgICAgICAgIF07XG4gICAgfVxuXG4gICAgLy9saW1pdCBmaWxlc1xuICAgIHB1YmxpYyBtYXhGaWxlc0FsbG93ZWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEZpbGVMaW1pdENvbnN0YW50cy5MSU1JVFtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICAgICAgPy5kcm9wWm9uZVBhZ2VzIGFzIGVGaWxlVXBsb2FkUGFnZVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEJvZ2RhbiAtIG1vdmUgdG8gZ2V0dGVyIHRvIHVzZSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIG1ldGhvZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjaGFuZ2UgZGV0ZWN0aW9uIHRyaWdnZXJzXG4gICAgcHVibGljIGlzTWF4Q291bnRSZWFjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLmxpbWl0ID1cbiAgICAgICAgICAgIEZpbGVMaW1pdENvbnN0YW50cy5MSU1JVFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgICAgICAgICA/LmRyb3Bab25lUGFnZXMgYXMgZUZpbGVVcGxvYWRQYWdlXG4gICAgICAgICAgICBdIHx8IDA7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCA+PSB0aGlzLmxpbWl0O1xuICAgIH1cblxuICAgIC8vRmlsZXNcbiAgICBwdWJsaWMgaGFuZGxlRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKGlucHV0LmZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uRmlsZVVwbG9hZChpbnB1dC5maWxlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlVXBsb2FkKGZpbGVzOiBGaWxlTGlzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVzKTtcblxuICAgICAgICBjb25zdCB1cGxvYWRPYnNlcnZhYmxlcyA9IGZpbGVBcnJheS5tYXAoKGZpbGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlKGZpbGUsIGluZGV4ID09PSBmaWxlQXJyYXkubGVuZ3RoIC0gMSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZnJvbSh1cGxvYWRPYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBsb2FkaW5nIGZpbGVzOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FsbCBmaWxlcyB1cGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0RHJvcHpvbmVWaWV3KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IGZhbHNlO1xuXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvL1RlbXBsYXRlXG4gICAgcHVibGljIGdldFRlbXBsYXRlKHRlbXBsYXRlOiBlVGVtcGxhdGVUeXBlKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZUNvbnRhaW5lckRpcmVjdGl2ZSB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlUmVmPy5maW5kKCh0ZW1wKSA9PiB0ZW1wLmlkID09PSB0ZW1wbGF0ZSk7XG5cbiAgICAgICAgaWYgKCF0ZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmF2YWlsYWJsZSB0ZW1wbGF0ZSEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVJlZj8udGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRGaWxlKGZpbGU6IEZpbGUsIGVtaXRFdmVudD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBmaWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy9UT0RPOiBCb2dkYW4gLSBnZXQgZmlsZSBleHRlbnNpb24gZnJvbSBtZXRhZGF0YSwgbm90IGZpbGUgbmFtZSBleHRlbnNpb25cbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBGaWxlSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHlwZSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIUZpbGVIZWxwZXIuaXNTdXBwb3J0ZWRFeHRlbnNpb24oXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wWm9uZUF2YWlsYWJsZUZpbGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5fZHJvcFpvbmVDb25maWc/LmNvbmZpZz8uZHJvcHpvbmVPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgID8uZGlzYWJsZVVuc3VwcG9ydGVkUHJldmlld1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkVHlwZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBGaWxlSGVscGVyLmdldEJsb2IoZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoYmxvYkNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYkNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYmxvYlVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb246IGZpbGVFeHRlbnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEZpbGU6IGJsb2JDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRmlsZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzOiB0aGlzLmZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogZUZpbGVEcm9wWm9uZUFjdGlvbi5BREQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWFkaW5nIGZpbGU6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbnQgdXBsb2FkIGZpbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTG90dGllXG4gICAgcHJpdmF0ZSB1cGRhdGVMb3R0aWVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlRmlsZVR5cGUgPSB0aGlzLl9kcm9wWm9uZUNvbmZpZz8uY29uZmlnPy5kcm9wem9uZVxuICAgICAgICAgICAgPy5kcm9wWm9uZVR5cGUgYXMgZURyb3Bab25lRmlsZVR5cGU7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvblBhdGggPSBGaWxlQW5pbWF0aW9uQ29uc3RhbnRzLkFOSU1BVElPTlNbZUZpbGVUeXBlXTtcblxuICAgICAgICBpZiAoYW5pbWF0aW9uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5sb3R0aWVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAnc3ZnJyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogIXRoaXMuaXNTaG93bkRyb3B6b25lRm9jdXMsXG4gICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF0aDogYW5pbWF0aW9uUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0Ryb3B6b25lIHRleHRcbiAgICBwcml2YXRlIHVwZGF0ZURyb3Bab25lVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZHJvcFpvbmVUZXh0TWFwOiB7IFtrZXkgaW4gZURyb3Bab25lRmlsZVR5cGVdPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBbZURyb3Bab25lRmlsZVR5cGUuRklMRVNdOiAnRklMRVMnLFxuICAgICAgICAgICAgW2VEcm9wWm9uZUZpbGVUeXBlLk1FRElBXTogJ01FRElBJyxcbiAgICAgICAgICAgIFtlRHJvcFpvbmVGaWxlVHlwZS5JTUFHRV06ICdJTUFHRScsXG4gICAgICAgICAgICBbZURyb3Bab25lRmlsZVR5cGUuTE9HT106ICdJTUFHRScsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kcm9wWm9uZVRleHQgPVxuICAgICAgICAgICAgZHJvcFpvbmVUZXh0TWFwW1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lQ29uZmlnPy5jb25maWc/LmRyb3B6b25lXG4gICAgICAgICAgICAgICAgICAgID8uZHJvcFpvbmVUeXBlIGFzIGVEcm9wWm9uZUZpbGVUeXBlXG4gICAgICAgICAgICBdIHx8ICdGSUxFIElNUE9SVCBGQUlMRUQnO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImRyb3B6b25lLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NwbGl0LWRyb3B6b25lJzogaXNEcm9wem9uZVNob3duSW5Dcm9wLFxuICAgICAgICB1blN1cHBvcnRlZDogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICBleHBhbmRlZDogaXNEcm9wem9uZUV4cGFuZGVkICYmICFpc1N1cHBvcnRlZFR5cGUsXG4gICAgICAgICdkaXNhYmxlZC1kcm9wem9uZSc6IGZpbGVzLmxlbmd0aCA+PSB0aGlzLmxpbWl0ICYmIHRoaXMubGltaXQgPiAwLFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICBmaWxlcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/IGN1c3RvbVdpZHRoIHx8ICc0NDhweCdcbiAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgPyAnMjk2cHgnXG4gICAgICAgICAgICAgICAgICA6IGZpbGVzLmxlbmd0aCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgOiBmaWxlcy5sZW5ndGggPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICA/ICcxNDhweCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICcxNDhweCcsXG4gICAgfVwiXG4+XG4gICAgPCEtLSBAZm9yIChpdGVtIG9mIF9kcm9wWm9uZUNvbmZpZ0FycmF5OyB0cmFjayAkaW5kZXgpIHsgLS0+XG4gICAgQGlmIChfZHJvcFpvbmVDb25maWcpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wem9uZS1jb250ZW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3VwbG9hZC1kcm9wem9uZS11bnN1cHBvcnRlZCc6IGlzU3VwcG9ydGVkVHlwZSxcbiAgICAgICAgICAgICAgICBleHBhbmRlZENvbnRlbnQ6IGlzRHJvcHpvbmVFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICAnY29sdW1uLWxheW91dCc6IGZpbGVzLmxlbmd0aCA+PSAyLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBnZXRUZW1wbGF0ZShfZHJvcFpvbmVDb25maWcudGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogX2Ryb3Bab25lQ29uZmlnPy5jb25maWcgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8IS0tIH0gLS0+XG48L2Rpdj5cblxuPCEtLS0tLS0tLS0tLS0tRG9jdW1lbnQgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImRvY3VtZW50c1RlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICBAaWYgKCFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgQGlmICgoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICBAaWYgKGlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1NZWRpYSB0ZW1wbGF0ZS0tLS0tLS0tLS0tLS0tPlxuPG5nLXRlbXBsYXRlIHRlbXBsYXRlQ29udGFpbmVyIGlkPVwibWVkaWFUZW1wbGF0ZVwiIGxldC1jb25maWc+XG4gICAgPCEtLVNWRyBJQ09OLS0+XG4gICAgQGlmICghaXNTaG93bkRyb3B6b25lRm9jdXMgJiYgIWlzRHJvcHpvbmVFeHBhbmRlZCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tTG90dGllIGFuaW1hdGlvbi0tPlxuICAgIEBpZiAoKGlzRHJvcHpvbmVFeHBhbmRlZCB8fCBpc1Nob3duRHJvcHpvbmVGb2N1cykgJiYgIWlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxvdHRpZUFuaW1hdGlvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Db250ZW50IGZvciBzdXBwb3J0ZWQgYW5kIHVuc3VwcG9ydGVkIHR5cGVzLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lVGV4dFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLVN1cHBvcnRlZCBleHRlbnNpb25zIGZvciB1bnN1cHBvcnRlZCB0eXBlLS0+XG4gICAgQGlmIChpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdXBwb3J0ZWRFeHRlbnNpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUZJTEUgSU5QVVQtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb25maWcgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS0tLS0tLS0tSW1hZ2UgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImltYWdlVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLUltYWdlIENyb3AgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSB0ZW1wbGF0ZUNvbnRhaW5lciBpZD1cImltYWdlQ3JvcFRlbXBsYXRlXCIgbGV0LWNvbmZpZz5cbiAgICA8IS0tU1ZHIElDT04tLT5cbiAgICBAaWYgKCFpc1Nob3duRHJvcHpvbmVGb2N1cyAmJiAhaXNEcm9wem9uZUV4cGFuZGVkKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZUljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1Mb3R0aWUgYW5pbWF0aW9uLS0+XG4gICAgQGlmICgoaXNEcm9wem9uZUV4cGFuZGVkIHx8IGlzU2hvd25Ecm9wem9uZUZvY3VzKSAmJiAhaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibG90dGllQW5pbWF0aW9uVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUNvbnRlbnQgZm9yIHN1cHBvcnRlZCBhbmQgdW5zdXBwb3J0ZWQgdHlwZXMtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcHpvbmVUZXh0VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tU3VwcG9ydGVkIGV4dGVuc2lvbnMgZm9yIHVuc3VwcG9ydGVkIHR5cGUtLT5cbiAgICBAaWYgKGlzU3VwcG9ydGVkVHlwZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN1cHBvcnRlZEV4dGVuc2lvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tRklMRSBJTlBVVC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlSW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbmZpZyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS1Mb2dvIHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgdGVtcGxhdGVDb250YWluZXIgaWQ9XCJsb2dvVGVtcGxhdGVcIiBsZXQtY29uZmlnPlxuICAgIDwhLS1TVkcgSUNPTi0tPlxuICAgIEBpZiAoIWlzU2hvd25Ecm9wem9uZUZvY3VzICYmICFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3B6b25lSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPCEtLUxvdHRpZSBhbmltYXRpb24tLT5cbiAgICBAaWYgKChpc0Ryb3B6b25lRXhwYW5kZWQgfHwgaXNTaG93bkRyb3B6b25lRm9jdXMpICYmICFpc1N1cHBvcnRlZFR5cGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb3R0aWVBbmltYXRpb25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8IS0tQ29udGVudCBmb3Igc3VwcG9ydGVkIGFuZCB1bnN1cHBvcnRlZCB0eXBlcy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRleHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS1TdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmb3IgdW5zdXBwb3J0ZWQgdHlwZS0tPlxuICAgIEBpZiAoaXNTdXBwb3J0ZWRUeXBlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS1GSUxFIElOUFVULS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJbnB1dFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29uZmlnIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0tLS0tLS0tLS0tLS1DT01NT04tVEVNUExBVEUtLS0tLS0tLS0tLS0tLT5cblxuPCEtLS0tLS1JTlBVVC0tLS0tLS0+XG48bmctdGVtcGxhdGUgI2ZpbGVJbnB1dFRlbXBsYXRlIGxldC1jb25maWc+XG4gICAgPGlucHV0XG4gICAgICAgICNkcm9wWm9uZVxuICAgICAgICBbaWRdPVwiJ2Ryb3Bab25lJyArIChjb25maWcuZHJvcHpvbmVPcHRpb24/LmRyb3B6b25lSW5kZXggfHwgMClcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiY29uZmlnLmRyb3B6b25lPy5kcm9wWm9uZUF2YWlsYWJsZUZpbGVzXCJcbiAgICAgICAgW211bHRpcGxlXT1cImNvbmZpZy5kcm9wem9uZT8ubXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS1EUk9QWk9ORV9URVhULS0+XG48bmctdGVtcGxhdGUgI2Ryb3B6b25lVGV4dFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wem9uZS10ZXh0IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtZHJvcHpvbmUtdGV4dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3Vuc3VwcG9ydGVkLXRleHQtYmlnJzogaXNTdXBwb3J0ZWRUeXBlLFxuICAgICAgICAgICAgICAgICdtYXgtY291bnQnOiBpc01heENvdW50UmVhY2hlZCgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXNNYXhDb3VudFJlYWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIE1BWCBDT1VOVCBSRUFDSEVEXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9ybWFsVGV4dFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGV4dD5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ0lOVkFMSUQgRklMRSBUWVBFJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnRFJBRyAnICsgZHJvcFpvbmVUZXh0XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAhKGlzU3VwcG9ydGVkVHlwZSB8fCAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSkgPyAnIEhFUkUnIDogJydcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBpZiAoX2Ryb3Bab25lQ29uZmlnPy50ZW1wbGF0ZSA9PT0gJ21lZGlhVGVtcGxhdGUnKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtZWRpYS1zaXplc1wiPm1heCBmaWxlIHNpemUgNTBtYjwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuICAgICAgICBAaWYgKCFpc0Ryb3B6b25lRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLWRyb3B6b25lLXRleHQtc21hbGxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGlzTWF4Q291bnRSZWFjaGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsZXMubGVuZ3RoIH19IEZJTEVTIElNUE9SVEVEXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtYXRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm1hdFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdTVVBQT1JURUQgRk9STUFUUydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdPUiBDTElDSyBUTyBBREQnXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLS0tLS1JQ09OLS0tLS0tLS0+XG48bmctdGVtcGxhdGUgI2Ryb3B6b25lSWNvblRlbXBsYXRlPlxuICAgIEBpZiAoIWlzU3VwcG9ydGVkVHlwZSAmJiAhaXNGaWxlRHJvcCkge1xuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtzcmNdPVwiaWNvblNyY1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJmaWxlcy5sZW5ndGggPCAyID8gJ3N2Z0ljb24tZG9jdW1lbnQnIDogJ3N2Zy1zbWFsbCdcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3ZnLWljb24+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgW3NyY109XCJkcm9wem9uZVN2Z1JvdXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLXVuc3VwcG9ydGVkLXpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0RHJvcHpvbmVWaWV3KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3ZnLWljb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gTE9UVElFX0FOSU1BVElPTiAtLT5cbjxuZy10ZW1wbGF0ZSAjbG90dGllQW5pbWF0aW9uVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFuaW1hdGlvbi1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBleHBhbmRlZDogaXNEcm9wem9uZUV4cGFuZGVkIH1cIlxuICAgID5cbiAgICAgICAgPG5nLWxvdHRpZVxuICAgICAgICAgICAgY2xhc3M9XCJzdGF0aWMtbG90dGllLWFuaW1hdGlvblwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJsb3R0aWVPcHRpb25zXCJcbiAgICAgICAgPjwvbmctbG90dGllPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTVVBQT1JURURfRVhURU5TSU9OUyAtLT5cbjxuZy10ZW1wbGF0ZSAjc3VwcG9ydGVkRXh0ZW5zaW9uc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJzdXBwb3J0ZWQtZXh0ZW5zaW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICBAZm9yIChleHRlbnNpb24gb2YgZHJvcFpvbmVBdmFpbGFibGVGaWxlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXh0ZW5zaW9uIGV4dGVuc2lvbi17e1xuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24gfCBtaW1lVHlwZVRvRXh0ZW5zaW9uXG4gICAgICAgICAgICAgICAgfX0gXG4gICAgICAgICAgICAgICAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBleHRlbnNpb24gfCBtaW1lVHlwZVRvRXh0ZW5zaW9uIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=