cmat 0.0.15 → 0.0.16

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 (244) hide show
  1. package/README.md +2 -2
  2. package/components/custom-formly/public-api.d.ts +1 -0
  3. package/components/custom-formly/types/button/button.component.d.ts +19 -3
  4. package/components/custom-formly/types/cascade/cascade.component.d.ts +3 -2
  5. package/components/custom-formly/types/checklist/checklist.component.d.ts +3 -2
  6. package/components/custom-formly/types/chips/chips.component.d.ts +3 -2
  7. package/components/custom-formly/types/date-range/date-range.component.d.ts +3 -2
  8. package/components/custom-formly/types/datepicker/datepicker.component.d.ts +3 -2
  9. package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +3 -2
  10. package/components/custom-formly/types/number/number.component.d.ts +3 -2
  11. package/components/custom-formly/types/quill/quill.component.d.ts +3 -2
  12. package/components/custom-formly/types/radio/radio.component.d.ts +3 -2
  13. package/components/custom-formly/types/rating/rating.component.d.ts +3 -2
  14. package/components/custom-formly/types/repeat/repeat.component.d.ts +3 -2
  15. package/components/custom-formly/types/select/select.component.d.ts +3 -2
  16. package/components/custom-formly/types/select-tree/select-tree.component.d.ts +2 -2
  17. package/components/custom-formly/types/stepper/stepper.type.d.ts +2 -2
  18. package/components/custom-formly/types/table/table.component.d.ts +11 -5
  19. package/components/custom-formly/types/tags/tags.component.d.ts +3 -2
  20. package/components/custom-formly/types/upload/upload.component.d.ts +3 -2
  21. package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +25 -0
  22. package/components/material-datetimepicker/datetimepicker.d.ts +4 -3
  23. package/components/upload/upload-queue/upload-queue.component.d.ts +3 -2
  24. package/esm2022/animations/dropdown.mjs +1 -1
  25. package/esm2022/components/adapter/dayjs-date-adapter.mjs +3 -3
  26. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
  27. package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
  28. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  29. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +3 -3
  30. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +5 -5
  31. package/esm2022/components/card/card.component.mjs +5 -5
  32. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -5
  33. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +6 -6
  34. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -5
  35. package/esm2022/components/cascade/options.interface.mjs +1 -1
  36. package/esm2022/components/chip-input/chip-input.component.mjs +6 -7
  37. package/esm2022/components/custom-formly/extension/addons.extension.mjs +2 -2
  38. package/esm2022/components/custom-formly/public-api.mjs +2 -1
  39. package/esm2022/components/custom-formly/types/button/button.component.mjs +57 -15
  40. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
  41. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
  42. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
  43. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
  44. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +4 -4
  45. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +5 -5
  46. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
  47. package/esm2022/components/custom-formly/types/number/number.component.mjs +4 -4
  48. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +6 -6
  49. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
  50. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +4 -4
  51. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +4 -4
  52. package/esm2022/components/custom-formly/types/select/select.component.mjs +16 -15
  53. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
  54. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +3 -3
  55. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +1 -1
  56. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +3 -3
  57. package/esm2022/components/custom-formly/types/table/table.component.mjs +28 -14
  58. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +4 -4
  59. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +4 -4
  60. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
  61. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
  62. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +3 -3
  63. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
  64. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
  65. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +47 -0
  66. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
  67. package/esm2022/components/date-range/date-range.component.mjs +6 -6
  68. package/esm2022/components/drawer/drawer.component.mjs +3 -3
  69. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  70. package/esm2022/components/fullscreen/fullscreen.component.mjs +3 -3
  71. package/esm2022/components/highlight/highlight.component.mjs +3 -3
  72. package/esm2022/components/highlight/highlight.service.mjs +3 -3
  73. package/esm2022/components/json-editor/json-editor.component.mjs +6 -6
  74. package/esm2022/components/masonry/masonry.component.mjs +3 -3
  75. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -5
  76. package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -5
  77. package/esm2022/components/material-datetimepicker/calendar.mjs +5 -5
  78. package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
  79. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +3 -3
  80. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  81. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -8
  82. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +14 -11
  83. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -5
  84. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +3 -3
  85. package/esm2022/components/material-datetimepicker/time.mjs +8 -8
  86. package/esm2022/components/material-datetimepicker/year-view.mjs +3 -3
  87. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +5 -5
  88. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +3 -3
  89. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
  90. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
  91. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +4 -4
  92. package/esm2022/components/navigation/navigation.service.mjs +3 -3
  93. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +3 -3
  94. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +5 -5
  95. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
  96. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
  97. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +3 -3
  98. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
  99. package/esm2022/components/navigation/vertical/vertical.component.mjs +4 -4
  100. package/esm2022/components/pagination/pagination.component.mjs +5 -5
  101. package/esm2022/components/pagination/pagination.directive.mjs +3 -3
  102. package/esm2022/components/pagination/pagination.pipe.mjs +3 -3
  103. package/esm2022/components/pagination/pagination.service.mjs +3 -3
  104. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +5 -5
  105. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +3 -3
  106. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +5 -5
  107. package/esm2022/components/popover/popover-trigger.mjs +3 -3
  108. package/esm2022/components/popover/popover.component.mjs +3 -3
  109. package/esm2022/components/popover/popover.target.mjs +3 -3
  110. package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
  111. package/esm2022/components/rating/rating.component.mjs +5 -5
  112. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  113. package/esm2022/components/select-search/select-search-clear.directive.mjs +4 -4
  114. package/esm2022/components/select-search/select-search.component.mjs +6 -6
  115. package/esm2022/components/select-tree/select-tree.component.mjs +6 -6
  116. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +11 -11
  117. package/esm2022/components/timeline/timeline.component.mjs +4 -4
  118. package/esm2022/components/toast/toast-modal.component.mjs +5 -5
  119. package/esm2022/components/toast/toast.component.mjs +3 -3
  120. package/esm2022/components/toast/toast.service.mjs +3 -3
  121. package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -5
  122. package/esm2022/components/transfer-picker/search/search.component.mjs +5 -5
  123. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +5 -5
  124. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -5
  125. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +5 -5
  126. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  127. package/esm2022/components/upload/files.util.service.mjs +3 -3
  128. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +13 -12
  129. package/esm2022/components/upload/upload.component.mjs +3 -3
  130. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
  131. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  132. package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
  133. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  134. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  135. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
  136. package/esm2022/directives/digit-only/digit-only.directive.mjs +10 -10
  137. package/esm2022/directives/digit-only/mask.directive.mjs +5 -5
  138. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
  139. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
  140. package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
  141. package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
  142. package/esm2022/pipes/date-format/date-format.pipe.mjs +7 -5
  143. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
  144. package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
  145. package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
  146. package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
  147. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  148. package/esm2022/services/alert/alert.service.mjs +3 -3
  149. package/esm2022/services/config/config.service.mjs +3 -3
  150. package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
  151. package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
  152. package/esm2022/services/confirmation/dialog/dialog.component.mjs +5 -5
  153. package/esm2022/services/data/data.service.mjs +3 -3
  154. package/esm2022/services/loading/loading.interceptor.mjs +5 -5
  155. package/esm2022/services/loading/loading.service.mjs +3 -3
  156. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  157. package/esm2022/services/media-watcher/media-watcher.service.mjs +3 -3
  158. package/esm2022/services/platform/platform.service.mjs +3 -3
  159. package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
  160. package/esm2022/services/title/title.service.mjs +3 -3
  161. package/esm2022/services/translation/translation.service.mjs +5 -5
  162. package/esm2022/services/utils/utils.service.mjs +8 -7
  163. package/fesm2022/cmat-animations.mjs.map +1 -1
  164. package/fesm2022/cmat-components-adapter.mjs +9 -9
  165. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  166. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  167. package/fesm2022/cmat-components-card.mjs +4 -4
  168. package/fesm2022/cmat-components-card.mjs.map +1 -1
  169. package/fesm2022/cmat-components-cascade.mjs +13 -13
  170. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  171. package/fesm2022/cmat-components-chip-input.mjs +5 -6
  172. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  173. package/fesm2022/cmat-components-custom-formly.mjs +235 -142
  174. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  175. package/fesm2022/cmat-components-date-range.mjs +5 -5
  176. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  177. package/fesm2022/cmat-components-drawer.mjs +6 -6
  178. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  179. package/fesm2022/cmat-components-highlight.mjs +6 -6
  180. package/fesm2022/cmat-components-json-editor.mjs +5 -5
  181. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  182. package/fesm2022/cmat-components-masonry.mjs +3 -3
  183. package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
  184. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  185. package/fesm2022/cmat-components-material-datetimepicker.mjs +55 -52
  186. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  187. package/fesm2022/cmat-components-navigation.mjs +42 -42
  188. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  189. package/fesm2022/cmat-components-pagination.mjs +13 -13
  190. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  191. package/fesm2022/cmat-components-password-strength.mjs +11 -11
  192. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  193. package/fesm2022/cmat-components-popover.mjs +9 -9
  194. package/fesm2022/cmat-components-progress-bar.mjs +4 -4
  195. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  196. package/fesm2022/cmat-components-rating.mjs +4 -4
  197. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  198. package/fesm2022/cmat-components-select-search.mjs +11 -11
  199. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  200. package/fesm2022/cmat-components-select-tree.mjs +5 -5
  201. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  202. package/fesm2022/cmat-components-timeline.mjs +13 -13
  203. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  204. package/fesm2022/cmat-components-toast.mjs +10 -10
  205. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  206. package/fesm2022/cmat-components-transfer-picker.mjs +23 -23
  207. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  208. package/fesm2022/cmat-components-upload.mjs +18 -17
  209. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  210. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  211. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  212. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  213. package/fesm2022/cmat-directives-digit-only.mjs +13 -13
  214. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  215. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  216. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  217. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  218. package/fesm2022/cmat-pipes-date-format.mjs +6 -4
  219. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  220. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  221. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  222. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  223. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  224. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  225. package/fesm2022/cmat-services-alert.mjs +3 -3
  226. package/fesm2022/cmat-services-config.mjs +6 -6
  227. package/fesm2022/cmat-services-confirmation.mjs +7 -7
  228. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  229. package/fesm2022/cmat-services-data.mjs +3 -3
  230. package/fesm2022/cmat-services-loading.mjs +7 -7
  231. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  232. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  233. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  234. package/fesm2022/cmat-services-platform.mjs +3 -3
  235. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  236. package/fesm2022/cmat-services-title.mjs +3 -3
  237. package/fesm2022/cmat-services-translation.mjs +4 -4
  238. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  239. package/fesm2022/cmat-services-utils.mjs +7 -6
  240. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  241. package/icons/material-icons/material-solid.svg +3585 -3585
  242. package/package.json +49 -49
  243. package/pipes/date-format/date-format.pipe.d.ts +1 -1
  244. package/styles/overrides/angular-material.scss +6 -0
@@ -1,5 +1,5 @@
1
1
  import { Component, Input, ViewChild, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, } from '@angular/core';
2
- import { JSONEditor, stringifyJSONPath, createAjvValidator, parseJSONPath, isKeySelection, isJSONContent, isMultiSelection, createMultiSelection, } from 'vanilla-jsoneditor';
2
+ import { stringifyJSONPath, createAjvValidator, parseJSONPath, isKeySelection, isJSONContent, isMultiSelection, createMultiSelection, createJSONEditor, } from 'vanilla-jsoneditor';
3
3
  import * as i0 from "@angular/core";
4
4
  export class CmatJsonEditorComponent {
5
5
  constructor(_changeDetectorRef) {
@@ -16,7 +16,7 @@ export class CmatJsonEditorComponent {
16
16
  if (!this.jsonEditorContainer.nativeElement) {
17
17
  console.error('Can\'t find the ElementRef reference for jsoneditor)');
18
18
  }
19
- this._editor = new JSONEditor({
19
+ this._editor = createJSONEditor({
20
20
  target: this.jsonEditorContainer.nativeElement,
21
21
  props: {
22
22
  ...this.options,
@@ -155,10 +155,10 @@ export class CmatJsonEditorComponent {
155
155
  this.pathChanged.emit(st);
156
156
  }
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatJsonEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatJsonEditorComponent, isStandalone: true, selector: "cmat-json-editor", inputs: { options: "options", data: "data" }, outputs: { contentChanged: "contentChanged", pathChanged: "pathChanged" }, viewQueries: [{ propertyName: "jsonEditorContainer", first: true, predicate: ["jsonEditorContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', isInline: true, styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatJsonEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatJsonEditorComponent, isStandalone: true, selector: "cmat-json-editor", inputs: { options: "options", data: "data" }, outputs: { contentChanged: "contentChanged", pathChanged: "pathChanged" }, viewQueries: [{ propertyName: "jsonEditorContainer", first: true, predicate: ["jsonEditorContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', isInline: true, styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatJsonEditorComponent, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatJsonEditorComponent, decorators: [{
162
162
  type: Component,
163
163
  args: [{ selector: 'cmat-json-editor', template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"] }]
164
164
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { jsonEditorContainer: [{
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
173
173
  }], pathChanged: [{
174
174
  type: Output
175
175
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2pzb24tZWRpdG9yL2pzb24tZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBSXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsaUJBQWlCLEVBR2pCLGtCQUFrQixFQUNsQixhQUFhLEVBRWIsY0FBYyxFQUNkLGFBQWEsRUFFYixnQkFBZ0IsRUFDaEIsb0JBQW9CLEdBR3ZCLE1BQU0sb0JBQW9CLENBQUM7O0FBWTVCLE1BQU0sT0FBTyx1QkFBdUI7SUFnQmhDLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBWC9DLG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUQsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRSxPQUFFLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDbkUsWUFBTyxHQUFZO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFJMkQsQ0FBQztJQUU5RCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsTUFBTSxFQUFFLElB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LEdBQWdCO1lBQ3ZCLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxTQUFxQztRQUNuRCxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFFLFNBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEVBQUUsR0FBRyxpQkFBaUIsQ0FBRSxTQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDTCxDQUFDOzhHQXpMUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixvV0FSdEIsb0VBQW9FOzsyRkFRckUsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNJLGtCQUFrQixZQUNsQixvRUFBb0UsdUJBQ3pELEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSxpQkFFaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsRUFBRTtzRkFHeUMsbUJBQW1CO3NCQUF0RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDekMsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEpTT05FZGl0b3IsXHJcbiAgICBzdHJpbmdpZnlKU09OUGF0aCxcclxuICAgIENvbnRlbnQsXHJcbiAgICBNZW51SXRlbSxcclxuICAgIGNyZWF0ZUFqdlZhbGlkYXRvcixcclxuICAgIHBhcnNlSlNPTlBhdGgsXHJcbiAgICBKU09ORWRpdG9yU2VsZWN0aW9uLFxyXG4gICAgaXNLZXlTZWxlY3Rpb24sXHJcbiAgICBpc0pTT05Db250ZW50LFxyXG4gICAgSlNPTkNvbnRlbnQsXHJcbiAgICBpc011bHRpU2VsZWN0aW9uLFxyXG4gICAgY3JlYXRlTXVsdGlTZWxlY3Rpb24sXHJcbiAgICBNZW51QnV0dG9uLFxyXG4gICAgVGV4dENvbnRlbnQsXHJcbn0gZnJvbSAndmFuaWxsYS1qc29uZWRpdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWpzb24tZWRpdG9yJyxcclxuICAgIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cImNtYXQtanNvbmVkaXRvclwiIFtpZF09XCJpZFwiICNqc29uRWRpdG9yQ29udGFpbmVyPjwvZGl2PicsXHJcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vanNvbi1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRKc29uRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdqc29uRWRpdG9yQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkganNvbkVkaXRvckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgICBASW5wdXQoKSBvcHRpb25zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBkYXRhOiBhbnk7XHJcblxyXG4gICAgQE91dHB1dCgpIGNvbnRlbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIHBhdGhDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIHB1YmxpYyBpZCA9ICdjbWF0anNvbmVkaXRvcicgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKTtcclxuICAgIGNvbnRlbnQ6IENvbnRlbnQgPSB7XHJcbiAgICAgICAgdGV4dDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGpzb246IHt9XHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgX2VkaXRvcjogSlNPTkVkaXRvciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5qc29uRWRpdG9yQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2FuXFwndCBmaW5kIHRoZSBFbGVtZW50UmVmIHJlZmVyZW5jZSBmb3IganNvbmVkaXRvciknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZWRpdG9yID0gbmV3IEpTT05FZGl0b3Ioe1xyXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuanNvbkVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IChcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50RXJyb3JzLCBwYXRjaFJlc3VsdCB9XHJcbiAgICAgICAgICAgICAgICApOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnb25DaGFuZ2UnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRFcnJvcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoUmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHVwZGF0ZWRDb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENoYW5nZWQuZW1pdCh1cGRhdGVkQ29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q6IHRoaXMuX29uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvblJlbmRlck1lbnUoXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IE1lbnVJdGVtW10sXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgbW9kZTogJ3RyZWUnIHwgJ3RleHQnIHwgJ3RhYmxlJzsgbW9kYWw6IGJvb2xlYW4gfVxyXG4gICAgICAgICAgICAgICAgKTogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGJ1dHRvbnMgZm9yIHRhYmxlLW1vZGUsIHRyYW5zZm9ybSwgc29ydFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnNwbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZmluZEluZGV4KGkgPT4gKGkgYXMgTWVudUJ1dHRvbilbJ3RleHQnXSA9PT0gJ3RhYmxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnNwbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZmluZEluZGV4KGkgPT4gKGkgYXMgTWVudUJ1dHRvbilbJ2NsYXNzTmFtZSddID09PSAnanNlLXNvcnQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5maW5kSW5kZXgoaSA9PiAoaSBhcyBNZW51QnV0dG9uKVsnY2xhc3NOYW1lJ10gPT09ICdqc2UtdHJhbnNmb3JtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IGl0ZW0gYXMgTWVudUJ1dHRvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChidXR0b25bJ3RpdGxlJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N3aXRjaCB0byB0ZXh0IG1vZGUgKGN1cnJlbnQgbW9kZTogdGV4dCknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50ZXh0ID0gJ+aWh+acrCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+WIh+aNouWIsOaWh+acrOaooeW8jyjlvZPliY3mqKHlvI865paH5pysKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTd2l0Y2ggdG8gdHJlZSBtb2RlIChjdXJyZW50IG1vZGU6IHRleHQpJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGV4dCA9ICfmoJEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfliIfmjaLliLDmoJHmqKHlvI8o5b2T5YmN5qih5byPOuaWh+acrCknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU3dpdGNoIHRvIHRleHQgbW9kZSAoY3VycmVudCBtb2RlOiB0cmVlKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRleHQgPSAn5paH5pysJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5YiH5o2i5Yiw5paH5pys5qih5byPKOW9k+WJjeaooeW8jzrmoJEpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N3aXRjaCB0byB0cmVlIG1vZGUgKGN1cnJlbnQgbW9kZTogdHJlZSknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50ZXh0ID0gJ+agkSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+WIh+aNouWIsOagkeaooeW8jyjlvZPliY3mqKHlvI865qCRKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdGb3JtYXQgSlNPTjogYWRkIHByb3BlciBpbmRlbnRhdGlvbiBhbmQgbmV3IGxpbmVzIChDdHJsK0kpJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAnSlNPTuagvOW8j+WMljog5re75Yqg6YCC5b2T55qE57yp6L+b5ZKM5paw6KGMIChDdHJsK0kpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvbXBhY3QgSlNPTjogcmVtb3ZlIGFsbCB3aGl0ZSBzcGFjaW5nIGFuZCBuZXcgbGluZXMgKEN0cmwrU2hpZnQrSSknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfljovnvKlKU09OOiDliKDpmaTmiYDmnInnmb3oibLpl7Tot53lkozmlrDooYwgKEN0cmwrU2hpZnQrSSknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU2VhcmNoIChDdHJsK0YpJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5pCc57SiIChDdHJsK0YpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1VuZG8gKEN0cmwrWiknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfmkqTlm54gKEN0cmwrWiknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUmVkbyAoQ3RybCtTaGlmdCtaKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+mHjeivlSAoQ3RybCtTaGlmdCtaKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFeHBhbmQgYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5YWo6YOo5bGV5byAJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvbGxhcHNlIGFsbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+WFqOmDqOaKmOWPoCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPcGVuIGNvbnRleHQgbWVudSAoQ2xpY2sgaGVyZSwgcmlnaHQgY2xpY2sgb24gdGhlIHNlbGVjdGlvbiwgb3IgdXNlIHRoZSBjb250ZXh0IG1lbnUgYnV0dG9uIG9yIEN0cmwrUSknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfmiZPlvIDlhoXlrrnoj5zljZUgKOWNleWHu+atpOWkhO+8jOWPs+mUruWNleWHu+aJgOmAieWGheWuue+8jOaIluS9v+eUqOWGheWuueiPnOWNleaMiemSruaIliBDdHJsK1EpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgdGV4dDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAganNvbjogdGhpcy5kYXRhXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fZWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICB2b2lkIHRoaXMuX2VkaXRvci51cGRhdGUodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihjaGFuZ2VzLm9wdGlvbnMpe1xyXG4gICAgICAgICAgICBpZih0aGlzLl9lZGl0b3Ipe1xyXG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLl9lZGl0b3I/LnVwZGF0ZVByb3BzKHRoaXMub3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdm9pZCB0aGlzLl9lZGl0b3I/LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTY2hlbWEoc2NoZW1hOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBjcmVhdGVBanZWYWxpZGF0b3IoeyBzY2hlbWEgfSk7XHJcbiAgICAgICAgdm9pZCB0aGlzLl9lZGl0b3I/LnVwZGF0ZVByb3BzKHsgdmFsaWRhdG9yOiB2YWxpZGF0b3IgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0aW9uVG9QYXRoKHBhdGhTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBwYXJzZUpTT05QYXRoKHBhdGhTdHJpbmcpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGNyZWF0ZU11bHRpU2VsZWN0aW9uKHBhdGgsIHBhdGgpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2b2lkIHRoaXMuX2VkaXRvcj8uc2VsZWN0KHNlbGVjdGlvbik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdTZXQgc2VsZWN0aW9uIHRvIHBhdGggbm90IHBvc3NpYmxlOicsIHBhdGhTdHJpbmcsIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYXRoQ2hhbmdlZC5lbWl0KHBhdGhTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCgpOiBKU09OIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAodGhpcy5fZWRpdG9yKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQ6IENvbnRlbnQgPSB0aGlzLl9lZGl0b3IuZ2V0KCk7XHJcbiAgICAgICAgICAgIGlmIChpc0pTT05Db250ZW50KGNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqOiBhbnkgPSAodGhpcy5fZWRpdG9yLmdldCgpIGFzIEpTT05Db250ZW50KS5qc29uO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGo7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0OiBhbnkgPSAodGhpcy5fZWRpdG9yLmdldCgpIGFzIFRleHRDb250ZW50KS50ZXh0O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgajogSlNPTiA9IEpTT04ucGFyc2UodCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gajtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChqc29uOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2YWx1ZTogSlNPTkNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgIGpzb246IGpzb24sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdm9pZCB0aGlzLl9lZGl0b3I/LnNldCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfb25TZWxlY3Qoc2VsZWN0aW9uOiBKU09ORWRpdG9yU2VsZWN0aW9uIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc0tleVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ID0gc3RyaW5naWZ5SlNPTlBhdGgoKHNlbGVjdGlvbiBhcyBhbnkpLnBhdGgpO1xyXG4gICAgICAgICAgICB0aGlzLnBhdGhDaGFuZ2VkLmVtaXQoc3QpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNNdWx0aVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ID0gc3RyaW5naWZ5SlNPTlBhdGgoKHNlbGVjdGlvbiBhcyBhbnkpLmFuY2hvclBhdGgpO1xyXG4gICAgICAgICAgICB0aGlzLnBhdGhDaGFuZ2VkLmVtaXQoc3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2pzb24tZWRpdG9yL2pzb24tZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBSXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxpQkFBaUIsRUFHakIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFFYixjQUFjLEVBQ2QsYUFBYSxFQUViLGdCQUFnQixFQUNoQixvQkFBb0IsRUFHcEIsZ0JBQWdCLEdBRW5CLE1BQU0sb0JBQW9CLENBQUM7O0FBWTVCLE1BQU0sT0FBTyx1QkFBdUI7SUFnQmhDLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBWC9DLG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUQsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRSxPQUFFLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDbkUsWUFBTyxHQUFZO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFJMkQsQ0FBQztJQUU5RCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7WUFDNUIsTUFBTSxFQUFFLElB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S0FBSyxHQUFnQjtZQUN2QixJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFFRixLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxTQUFTLENBQUMsU0FBMEM7UUFDeEQsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLEVBQUUsR0FBRyxpQkFBaUIsQ0FBRSxTQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLENBQUUsU0FBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQzs4R0F6TFEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsb1dBUnRCLG9FQUFvRTs7MkZBUXJFLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDSSxrQkFBa0IsWUFDbEIsb0VBQW9FLHVCQUN6RCxLQUFLLG1CQUNULHVCQUF1QixDQUFDLE1BQU0saUJBRWhDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLEVBQUU7c0ZBR3lDLG1CQUFtQjtzQkFBdEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3pDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIE91dHB1dCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBzdHJpbmdpZnlKU09OUGF0aCxcclxuICAgIENvbnRlbnQsXHJcbiAgICBNZW51SXRlbSxcclxuICAgIGNyZWF0ZUFqdlZhbGlkYXRvcixcclxuICAgIHBhcnNlSlNPTlBhdGgsXHJcbiAgICBKU09ORWRpdG9yU2VsZWN0aW9uLFxyXG4gICAgaXNLZXlTZWxlY3Rpb24sXHJcbiAgICBpc0pTT05Db250ZW50LFxyXG4gICAgSlNPTkNvbnRlbnQsXHJcbiAgICBpc011bHRpU2VsZWN0aW9uLFxyXG4gICAgY3JlYXRlTXVsdGlTZWxlY3Rpb24sXHJcbiAgICBNZW51QnV0dG9uLFxyXG4gICAgVGV4dENvbnRlbnQsXHJcbiAgICBjcmVhdGVKU09ORWRpdG9yLFxyXG4gICAgSnNvbkVkaXRvcixcclxufSBmcm9tICd2YW5pbGxhLWpzb25lZGl0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtanNvbi1lZGl0b3InLFxyXG4gICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwiY21hdC1qc29uZWRpdG9yXCIgW2lkXT1cImlkXCIgI2pzb25FZGl0b3JDb250YWluZXI+PC9kaXY+JyxcclxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9qc29uLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdEpzb25FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2pzb25FZGl0b3JDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBqc29uRWRpdG9yQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICAgIEBJbnB1dCgpIG9wdGlvbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuXHJcbiAgICBAT3V0cHV0KCkgY29udGVudENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgcGF0aENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgcHVibGljIGlkID0gJ2NtYXRqc29uZWRpdG9yJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApO1xyXG4gICAgY29udGVudDogQ29udGVudCA9IHtcclxuICAgICAgICB0ZXh0OiB1bmRlZmluZWQsXHJcbiAgICAgICAganNvbjoge31cclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBfZWRpdG9yOiBKc29uRWRpdG9yO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmpzb25FZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYW5cXCd0IGZpbmQgdGhlIEVsZW1lbnRSZWYgcmVmZXJlbmNlIGZvciBqc29uZWRpdG9yKScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lZGl0b3IgPSBjcmVhdGVKU09ORWRpdG9yKHtcclxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmpzb25FZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZENvbnRlbnQ6IENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb250ZW50OiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50RXJyb3JzLCBwYXRjaFJlc3VsdCB9OiBhbnlcclxuICAgICAgICAgICAgICAgICk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbkNoYW5nZScsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudEVycm9ycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hSZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdXBkYXRlZENvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlZC5lbWl0KHVwZGF0ZWRDb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdDogdGhpcy5fb25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uUmVuZGVyTWVudShcclxuICAgICAgICAgICAgICAgICAgICBpdGVtczogTWVudUl0ZW1bXSxcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBtb2RlOiAndHJlZScgfCAndGV4dCcgfCAndGFibGUnOyBtb2RhbDogYm9vbGVhbiB9XHJcbiAgICAgICAgICAgICAgICApOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYnV0dG9ucyBmb3IgdGFibGUtbW9kZSwgdHJhbnNmb3JtLCBzb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5maW5kSW5kZXgoaSA9PiAoaSBhcyBNZW51QnV0dG9uKVsndGV4dCddID09PSAndGFibGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5maW5kSW5kZXgoaSA9PiAoaSBhcyBNZW51QnV0dG9uKVsnY2xhc3NOYW1lJ10gPT09ICdqc2Utc29ydCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZpbmRJbmRleChpID0+IChpIGFzIE1lbnVCdXR0b24pWydjbGFzc05hbWUnXSA9PT0gJ2pzZS10cmFuc2Zvcm0nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gaXRlbSBhcyBNZW51QnV0dG9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJ1dHRvblsndGl0bGUnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU3dpdGNoIHRvIHRleHQgbW9kZSAoY3VycmVudCBtb2RlOiB0ZXh0KSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRleHQgPSAn5paH5pysJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5YiH5o2i5Yiw5paH5pys5qih5byPKOW9k+WJjeaooeW8jzrmlofmnKwpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N3aXRjaCB0byB0cmVlIG1vZGUgKGN1cnJlbnQgbW9kZTogdGV4dCknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50ZXh0ID0gJ+agkSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+WIh+aNouWIsOagkeaooeW8jyjlvZPliY3mqKHlvI865paH5pysKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTd2l0Y2ggdG8gdGV4dCBtb2RlIChjdXJyZW50IG1vZGU6IHRyZWUpJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGV4dCA9ICfmlofmnKwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfliIfmjaLliLDmlofmnKzmqKHlvI8o5b2T5YmN5qih5byPOuagkSknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU3dpdGNoIHRvIHRyZWUgbW9kZSAoY3VycmVudCBtb2RlOiB0cmVlKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRleHQgPSAn5qCRJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5YiH5o2i5Yiw5qCR5qih5byPKOW9k+WJjeaooeW8jzrmoJEpJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Zvcm1hdCBKU09OOiBhZGQgcHJvcGVyIGluZGVudGF0aW9uIGFuZCBuZXcgbGluZXMgKEN0cmwrSSknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICdKU09O5qC85byP5YyWOiDmt7vliqDpgILlvZPnmoTnvKnov5vlkozmlrDooYwgKEN0cmwrSSknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ29tcGFjdCBKU09OOiByZW1vdmUgYWxsIHdoaXRlIHNwYWNpbmcgYW5kIG5ldyBsaW5lcyAoQ3RybCtTaGlmdCtJKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+WOi+e8qUpTT046IOWIoOmZpOaJgOacieeZveiJsumXtOi3neWSjOaWsOihjCAoQ3RybCtTaGlmdCtJKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTZWFyY2ggKEN0cmwrRiknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICfmkJzntKIgKEN0cmwrRiknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVW5kbyAoQ3RybCtaKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+aSpOWbniAoQ3RybCtaKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWRvIChDdHJsK1NoaWZ0K1opJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn6YeN6K+VIChDdHJsK1NoaWZ0K1opJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0V4cGFuZCBhbGwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi50aXRsZSA9ICflhajpg6jlsZXlvIAnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ29sbGFwc2UgYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24udGl0bGUgPSAn5YWo6YOo5oqY5Y+gJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09wZW4gY29udGV4dCBtZW51IChDbGljayBoZXJlLCByaWdodCBjbGljayBvbiB0aGUgc2VsZWN0aW9uLCBvciB1c2UgdGhlIGNvbnRleHQgbWVudSBidXR0b24gb3IgQ3RybCtRKSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gJ+aJk+W8gOWGheWuueiPnOWNlSAo5Y2V5Ye75q2k5aSE77yM5Y+z6ZSu5Y2V5Ye75omA6YCJ5YaF5a6577yM5oiW5L2/55So5YaF5a656I+c5Y2V5oyJ6ZKu5oiWIEN0cmwrUSknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBqc29uOiB0aGlzLmRhdGFcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5fZWRpdG9yLnVwZGF0ZSh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKGNoYW5nZXMub3B0aW9ucyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuX2VkaXRvcil7XHJcbiAgICAgICAgICAgICAgICB2b2lkIHRoaXMuX2VkaXRvcj8udXBkYXRlUHJvcHModGhpcy5vcHRpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB2b2lkIHRoaXMuX2VkaXRvcj8uZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNjaGVtYShzY2hlbWE6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGNyZWF0ZUFqdlZhbGlkYXRvcih7IHNjaGVtYSB9KTtcclxuICAgICAgICB2b2lkIHRoaXMuX2VkaXRvcj8udXBkYXRlUHJvcHMoeyB2YWxpZGF0b3I6IHZhbGlkYXRvciB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWxlY3Rpb25Ub1BhdGgocGF0aFN0cmluZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHBhcnNlSlNPTlBhdGgocGF0aFN0cmluZyk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gY3JlYXRlTXVsdGlTZWxlY3Rpb24ocGF0aCwgcGF0aCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZvaWQgdGhpcy5fZWRpdG9yPy5zZWxlY3Qoc2VsZWN0aW9uKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1NldCBzZWxlY3Rpb24gdG8gcGF0aCBub3QgcG9zc2libGU6JywgcGF0aFN0cmluZywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBhdGhDaGFuZ2VkLmVtaXQocGF0aFN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KCk6IEpTT04gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGVudDogQ29udGVudCA9IHRoaXMuX2VkaXRvci5nZXQoKTtcclxuICAgICAgICAgICAgaWYgKGlzSlNPTkNvbnRlbnQoY29udGVudCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGo6IGFueSA9ICh0aGlzLl9lZGl0b3IuZ2V0KCkgYXMgSlNPTkNvbnRlbnQpLmpzb247XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gajtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHQ6IGFueSA9ICh0aGlzLl9lZGl0b3IuZ2V0KCkgYXMgVGV4dENvbnRlbnQpLnRleHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqOiBKU09OID0gSlNPTi5wYXJzZSh0KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGpzb246IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlOiBKU09OQ29udGVudCA9IHtcclxuICAgICAgICAgICAganNvbjoganNvbixcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB2b2lkIHRoaXMuX2VkaXRvcj8uc2V0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9vblNlbGVjdChzZWxlY3Rpb246IEpTT05FZGl0b3JTZWxlY3Rpb24gfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNLZXlTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdCA9IHN0cmluZ2lmeUpTT05QYXRoKChzZWxlY3Rpb24gYXMgYW55KS5wYXRoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXRoQ2hhbmdlZC5lbWl0KHN0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdCA9IHN0cmluZ2lmeUpTT05QYXRoKChzZWxlY3Rpb24gYXMgYW55KS5hbmNob3JQYXRoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXRoQ2hhbmdlZC5lbWl0KHN0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -36,10 +36,10 @@ export class CmatMasonryComponent {
36
36
  this.distributedColumns[i % this.columns].items.push(this.items[i]);
37
37
  }
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatMasonryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatMasonryComponent, isStandalone: true, selector: "cmat-masonry", inputs: { columnsTemplate: "columnsTemplate", columns: "columns", items: "items" }, exportAs: ["cmatMasonry"], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMasonryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatMasonryComponent, isStandalone: true, selector: "cmat-masonry", inputs: { columnsTemplate: "columnsTemplate", columns: "columns", items: "items" }, exportAs: ["cmatMasonry"], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatMasonryComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMasonryComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ selector: 'cmat-masonry', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatMasonry', standalone: true, imports: [NgTemplateOutlet], template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>" }]
45
45
  }], propDecorators: { columnsTemplate: [{
@@ -129,12 +129,12 @@ export class CmatMaterialColorPickerComponent {
129
129
  this.view = 'hues';
130
130
  }
131
131
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatMaterialColorPickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatMaterialColorPickerComponent, isStandalone: true, selector: "cmat-material-color-picker", inputs: { color: "color", title: "title", readonly: "readonly" }, outputs: { colorChanged: "colorChanged" }, providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], exportAs: ["cmatMaterialColorPicker"], ngImport: i0, template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\n <mat-select value=\"init\" panelClass=\"min-w-64\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\n [disabled]=\"readonly\" (openedChange)=\"onMenuOpen($event)\">\n <mat-select-trigger class=\"flex p-1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\n </mat-select-trigger>\n\n <header class=\"shadow flex flex-row content-between justify-between p-2\" [ngClass]=\"'accent'\">\n <button type=\"button\" mat-icon-button class=\"secondary-text\" aria-label=\"\u8C03\u8272\u677F\"\n [class.invisible]=\"view === 'palettes'\" (click)=\"goToPalettesView()\">\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\n </button>\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" aria-label=\"\u79FB\u9664\u989C\u8272\"\n matTooltip=\"\u79FB\u9664\u989C\u8272\" (click)=\"removeColor()\">\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\n </button>\n </header>\n\n <div class=\"flex flex-wrap w-60 m-2\">\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\n <div>\n @switch (view) {\n @case ('palettes') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (palette of palettes; track $index) {\n <div role=\"presentation\"\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedPalette\">\n @if (selectedColor.color===palette + '-' + selectedHue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"palette + '-' + selectedHue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n @case ('hues') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (hue of hues; track $index) {\n <div role=\"presentation\" class=\"cursor-pointer\"\n (click)=\"selectHue(hue)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedHue\">\n @if (selectedColor.color===selectedPalette + '-' + hue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </mat-select>\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMaterialColorPickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatMaterialColorPickerComponent, isStandalone: true, selector: "cmat-material-color-picker", inputs: { color: "color", title: "title", readonly: "readonly" }, outputs: { colorChanged: "colorChanged" }, providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], exportAs: ["cmatMaterialColorPicker"], ngImport: i0, template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\r\n <mat-select value=\"init\" panelClass=\"min-w-64\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\r\n [disabled]=\"readonly\" (openedChange)=\"onMenuOpen($event)\">\r\n <mat-select-trigger class=\"flex p-1\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\r\n </mat-select-trigger>\r\n\r\n <header class=\"shadow flex flex-row content-between justify-between p-2\" [ngClass]=\"'accent'\">\r\n <button type=\"button\" mat-icon-button class=\"secondary-text\" aria-label=\"\u8C03\u8272\u677F\"\r\n [class.invisible]=\"view === 'palettes'\" (click)=\"goToPalettesView()\">\r\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\r\n </button>\r\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\r\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" aria-label=\"\u79FB\u9664\u989C\u8272\"\r\n matTooltip=\"\u79FB\u9664\u989C\u8272\" (click)=\"removeColor()\">\r\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"flex flex-wrap w-60 m-2\">\r\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\r\n <div>\r\n @switch (view) {\r\n @case ('palettes') {\r\n <div>\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n @for (palette of palettes; track $index) {\r\n <div role=\"presentation\"\r\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedPalette\">\r\n @if (selectedColor.color===palette + '-' + selectedHue) {\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n }\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"palette + '-' + selectedHue\"></span>\r\n </mat-option>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @case ('hues') {\r\n <div>\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n @for (hue of hues; track $index) {\r\n <div role=\"presentation\" class=\"cursor-pointer\"\r\n (click)=\"selectHue(hue)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedHue\">\r\n @if (selectedColor.color===selectedPalette + '-' + hue) {\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n }\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\r\n </mat-option>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </mat-select>\r\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatMaterialColorPickerComponent, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMaterialColorPickerComponent, decorators: [{
136
136
  type: Component,
137
- args: [{ selector: 'cmat-material-color-picker', animations: cmatAnimations, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatMaterialColorPicker', providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], standalone: true, imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule], template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\n <mat-select value=\"init\" panelClass=\"min-w-64\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\n [disabled]=\"readonly\" (openedChange)=\"onMenuOpen($event)\">\n <mat-select-trigger class=\"flex p-1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\n </mat-select-trigger>\n\n <header class=\"shadow flex flex-row content-between justify-between p-2\" [ngClass]=\"'accent'\">\n <button type=\"button\" mat-icon-button class=\"secondary-text\" aria-label=\"\u8C03\u8272\u677F\"\n [class.invisible]=\"view === 'palettes'\" (click)=\"goToPalettesView()\">\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\n </button>\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" aria-label=\"\u79FB\u9664\u989C\u8272\"\n matTooltip=\"\u79FB\u9664\u989C\u8272\" (click)=\"removeColor()\">\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\n </button>\n </header>\n\n <div class=\"flex flex-wrap w-60 m-2\">\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\n <div>\n @switch (view) {\n @case ('palettes') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (palette of palettes; track $index) {\n <div role=\"presentation\"\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedPalette\">\n @if (selectedColor.color===palette + '-' + selectedHue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"palette + '-' + selectedHue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n @case ('hues') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (hue of hues; track $index) {\n <div role=\"presentation\" class=\"cursor-pointer\"\n (click)=\"selectHue(hue)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedHue\">\n @if (selectedColor.color===selectedPalette + '-' + hue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </mat-select>\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"] }]
137
+ args: [{ selector: 'cmat-material-color-picker', animations: cmatAnimations, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatMaterialColorPicker', providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], standalone: true, imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule], template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\r\n <mat-select value=\"init\" panelClass=\"min-w-64\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\r\n [disabled]=\"readonly\" (openedChange)=\"onMenuOpen($event)\">\r\n <mat-select-trigger class=\"flex p-1\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\r\n </mat-select-trigger>\r\n\r\n <header class=\"shadow flex flex-row content-between justify-between p-2\" [ngClass]=\"'accent'\">\r\n <button type=\"button\" mat-icon-button class=\"secondary-text\" aria-label=\"\u8C03\u8272\u677F\"\r\n [class.invisible]=\"view === 'palettes'\" (click)=\"goToPalettesView()\">\r\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\r\n </button>\r\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\r\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" aria-label=\"\u79FB\u9664\u989C\u8272\"\r\n matTooltip=\"\u79FB\u9664\u989C\u8272\" (click)=\"removeColor()\">\r\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"flex flex-wrap w-60 m-2\">\r\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\r\n <div>\r\n @switch (view) {\r\n @case ('palettes') {\r\n <div>\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n @for (palette of palettes; track $index) {\r\n <div role=\"presentation\"\r\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedPalette\">\r\n @if (selectedColor.color===palette + '-' + selectedHue) {\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n }\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"palette + '-' + selectedHue\"></span>\r\n </mat-option>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @case ('hues') {\r\n <div>\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n @for (hue of hues; track $index) {\r\n <div role=\"presentation\" class=\"cursor-pointer\"\r\n (click)=\"selectHue(hue)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedHue\">\r\n @if (selectedColor.color===selectedPalette + '-' + hue) {\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n }\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\r\n </mat-option>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </mat-select>\r\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"] }]
138
138
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { colorChanged: [{
139
139
  type: Output
140
140
  }], color: [{
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
144
144
  }], readonly: [{
145
145
  type: Input
146
146
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1jb2xvci1waWNrZXIvbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1jb2xvci1waWNrZXIvbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBRzFDLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFRO0lBQzFELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNk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QUFtQjtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWU7UUFDdEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDOzhHQXJLUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxzTEFKOUIsQ0FBQyx5Q0FBeUMsQ0FBQyxpRUMxQjFELDA5R0FxRU0sNElEekNRLE9BQU8sbUZBQUUsZUFBZSxxd0JBQUUsYUFBYSxtTEFBRSxlQUFlLDJJQUFFLGdCQUFnQiwrU0FOeEUsY0FBYzs7MkZBUWpCLGdDQUFnQztrQkFaNUMsU0FBUzsrQkFDSSw0QkFBNEIsY0FHMUIsY0FBYyxpQkFDWCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLHlCQUF5QixhQUN4QixDQUFDLHlDQUF5QyxDQUFDLGNBQzFDLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQztzRkFLckYsWUFBWTtzQkFEWCxNQUFNO2dCQXVDSCxLQUFLO3NCQURSLEtBQUs7Z0JBNEJGLEtBQUs7c0JBRFIsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgY21hdEFuaW1hdGlvbnMgfSBmcm9tICdjbWF0L2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBiYXNlQ29sb3JzIH0gZnJvbSAnLi9iYXNlLWNvbG9yJztcclxuaW1wb3J0IHsgQ21hdFNlbGVjdGVkQ29sb3IgfSBmcm9tICcuL3NlbGVjdGVkLWNvbG9yJztcclxuXHJcbmV4cG9ydCBjb25zdCBDTUFUX01BVEVSSUFMX0NPTE9SX1BJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbWF0TWF0ZXJpYWxDb2xvclBpY2tlckNvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LW1hdGVyaWFsLWNvbG9yLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21hdGVyaWFsLWNvbG9yLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgYW5pbWF0aW9uczogY21hdEFuaW1hdGlvbnMsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXRNYXRlcmlhbENvbG9yUGlja2VyJyxcclxuICAgIHByb3ZpZGVyczogW0NNQVRfTUFURVJJQUxfQ09MT1JfUElDS0VSX1ZBTFVFX0FDQ0VTU09SXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgTWF0U2VsZWN0TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0TWF0ZXJpYWxDb2xvclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIC8vIENvbG9yIGNoYW5nZWRcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgY29sb3JDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgICBwYWxldHRlczogc3RyaW5nW107XHJcbiAgICBodWVzOiBzdHJpbmdbXTtcclxuICAgIHZpZXc6IHN0cmluZztcclxuICAgIHNlbGVjdGVkQ29sb3I6IENtYXRTZWxlY3RlZENvbG9yO1xyXG4gICAgc2VsZWN0ZWRQYWxldHRlOiBzdHJpbmc7XHJcbiAgICBzZWxlY3RlZEh1ZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIFByaXZhdGVcclxuICAgIHByaXZhdGUgX2NvbG9yOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF90aXRsZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfcmVhZG9ubHk6Ym9vbGVhbjtcclxuICAgIHByaXZhdGUgX21vZGVsQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX21vZGVsVG91Y2hlZDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0c1xyXG4gICAgICAgIHRoaXMuY29sb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgICAgIHRoaXMucGFsZXR0ZXMgPSBiYXNlQ29sb3JzO1xyXG4gICAgICAgIHRoaXMuaHVlcyA9IFsnNTAnLCAnMTAwJywgJzIwMCcsICczMDAnLCAnNDAwJywgJzUwMCcsICc2MDAnLCAnNzAwJywgJzgwMCcsICc5MDAnXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gJzUwMCc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSAnYmctaW5kaWdvJztcclxuICAgICAgICB0aGlzLnZpZXcgPSAncGFsZXR0ZXMnO1xyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICAgICAgdGhpcy5fbW9kZWxDaGFuZ2UgPSAoKTogYW55ID0+IHsgfTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkID0gKCk6IGFueSA9PiB7IH07XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGNvbG9yKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycgfHwgdGhpcy5fY29sb3IgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNwbGl0IHRoZSBjb2xvciB2YWx1ZSAoYmctcmVkLTQwMCwgYmctYmx1ZS01MDAgZXRjLilcclxuICAgICAgICBjb25zdCBjb2xvclBhcnRzID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgICAgLy8gVGFrZSB0aGUgdmVyeSBsYXN0IHBhcnQgYXMgdGhlIHNlbGVjdGVkIGh1ZSB2YWx1ZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIdWUgPSBjb2xvclBhcnRzW2NvbG9yUGFydHMubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBwYXJ0XHJcbiAgICAgICAgY29sb3JQYXJ0cy5wb3AoKTtcclxuXHJcbiAgICAgICAgLy8gUmVqb2luIHRoZSByZW1haW5pbmcgcGFydHMgYXMgdGhlIHNlbGVjdGVkIHBhbGV0dGUgbmFtZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYWxldHRlID0gY29sb3JQYXJ0cy5qb2luKCctJyk7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY29sb3JcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgdGl0bGUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl90aXRsZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgcmVhZG9ubHkodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWxDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShjb2xvcjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIG51bGxcclxuICAgICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgY29sb3JcclxuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0UGFsZXR0ZShwYWxldHRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBHbyB0byAnaHVlcycgdmlld1xyXG4gICAgICAgIHRoaXMudmlldyA9ICdodWVzJztcclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBwYWxldHRlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSBwYWxldHRlO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0SHVlKGh1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBodWVcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gaHVlO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQ29sb3IoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIHRvIHRoZSAncGFsZXR0ZXMnIHZpZXdcclxuICAgICAgICB0aGlzLnZpZXcgPSAncGFsZXR0ZXMnO1xyXG5cclxuICAgICAgICAvLyBDbGVhciB0aGUgc2VsZWN0ZWQgcGFsZXR0ZSBhbmQgaHVlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSAnYmctaW5kaWdvJztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gJzUwMCc7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY29sb3JcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTZWxlY3RlZENvbG9yKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IgJiYgdGhpcy5zZWxlY3RlZENvbG9yLnBhbGV0dGUgPT09IHRoaXMuc2VsZWN0ZWRQYWxldHRlICYmIHRoaXMuc2VsZWN0ZWRDb2xvci5odWUgPT09IHRoaXMuc2VsZWN0ZWRIdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBzZWxlY3RlZCBjb2xvciBvYmplY3RcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSB7XHJcbiAgICAgICAgICAgIHBhbGV0dGU6IHRoaXMuc2VsZWN0ZWRQYWxldHRlLFxyXG4gICAgICAgICAgICBodWU6IHRoaXMuc2VsZWN0ZWRIdWUsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnNlbGVjdGVkUGFsZXR0ZSArICctJyArIHRoaXMuc2VsZWN0ZWRIdWVcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9jb2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5jb2xvcjtcclxuXHJcbiAgICAgICAgdGhpcy5jb2xvckNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkQ29sb3IpO1xyXG5cclxuICAgICAgICAvLyBNYXJrIHRoZSBtb2RlbCBhcyB0b3VjaGVkXHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkKHRoaXMuc2VsZWN0ZWRDb2xvci5jb2xvcik7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgbW9kZWxcclxuICAgICAgICB0aGlzLl9tb2RlbENoYW5nZSh0aGlzLnNlbGVjdGVkQ29sb3IuY29sb3IpO1xyXG5cclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBnb1RvUGFsZXR0ZXNWaWV3KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlldyA9ICdwYWxldHRlcyc7XHJcbiAgICB9XHJcblxyXG4gICAgb25NZW51T3BlbihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAob3BlbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlldyA9ICdodWVzJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvdW5kZWRcIiBbbmdDbGFzc109XCJzZWxlY3RlZENvbG9yLmNvbG9yXCI+XG4gIDxtYXQtc2VsZWN0IHZhbHVlPVwiaW5pdFwiIHBhbmVsQ2xhc3M9XCJtaW4tdy02NFwiIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIiBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAob3BlbmVkQ2hhbmdlKT1cIm9uTWVudU9wZW4oJGV2ZW50KVwiPlxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJmbGV4IHAtMVwiPlxuICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTpwYWludC1icnVzaCdcIj48L21hdC1pY29uPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuXG4gICAgPGhlYWRlciBjbGFzcz1cInNoYWRvdyBmbGV4IGZsZXgtcm93IGNvbnRlbnQtYmV0d2VlbiBqdXN0aWZ5LWJldHdlZW4gcC0yXCIgW25nQ2xhc3NdPVwiJ2FjY2VudCdcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeS10ZXh0XCIgYXJpYS1sYWJlbD1cIuiwg+iJsuadv1wiXG4gICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwidmlldyA9PT0gJ3BhbGV0dGVzJ1wiIChjbGljayk9XCJnb1RvUGFsZXR0ZXNWaWV3KClcIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJtYXRfb3V0bGluZTphcnJvd19iYWNrXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhbGlnbi1taWRkbGUgbGVhZGluZy1sb29zZSB0ZXh0LXhsIGZvbnQtYm9sZFwiPnt7dGl0bGV9fTwvc3Bhbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJlbW92ZS1jb2xvci1idXR0b24gc2Vjb25kYXJ5LXRleHRcIiBhcmlhLWxhYmVsPVwi56e76Zmk6aKc6ImyXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIuenu+mZpOminOiJslwiIChjbGljayk9XCJyZW1vdmVDb2xvcigpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBbc3ZnSWNvbl09XCInbWF0X291dGxpbmU6Y2xlYW5pbmdfc2VydmljZXMnXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIHctNjAgbS0yXCI+XG4gICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImluaXRcIiBjbGFzcz1cImhpZGRlblwiPuWIneWni+WMljwvbWF0LW9wdGlvbj5cbiAgICAgIDxkaXY+XG4gICAgICAgIEBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgICAgICBAY2FzZSAoJ3BhbGV0dGVzJykge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktc3RhcnQgY29udGVudC1zdGFydCBjb2xvcnNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwYWxldHRlIG9mIHBhbGV0dGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VsZWN0UGFsZXR0ZShwYWxldHRlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgZmxleCB3LTEyIGgtMTIgcC0wIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC1mdWxsIGJnLXRyYW5zcGFyZW50IGhvdmVyOm9wYWNpdHktNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFBhbGV0dGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkQ29sb3IuY29sb3I9PT1wYWxldHRlICsgJy0nICsgc2VsZWN0ZWRIdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFic29sdXRlIG0tMyB0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTpjaGVjaydcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdy0xMCBoLTEwIG0tMSByb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBhbGV0dGUgKyAnLScgKyBzZWxlY3RlZEh1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2h1ZXMnKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1zdGFydCBjb250ZW50LXN0YXJ0IGNvbG9yc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGh1ZSBvZiBodWVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SHVlKGh1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy0xMiBoLTEyIHAtMCBwb2ludGVyLWV2ZW50cy1ub25lIHJvdW5kZWQtZnVsbCBiZy10cmFuc3BhcmVudCBob3ZlcjpvcGFjaXR5LTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRIdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkQ29sb3IuY29sb3I9PT1zZWxlY3RlZFBhbGV0dGUgKyAnLScgKyBodWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFic29sdXRlIG0tMyB0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTpjaGVjaydcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdy0xMCBoLTEwIG0tMSByb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkUGFsZXR0ZSArICctJyArIGh1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXNlbGVjdD5cbjwvZGl2PiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1jb2xvci1waWNrZXIvbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1jb2xvci1waWNrZXIvbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBRzFDLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFRO0lBQzFELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNk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QUFtQjtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWU7UUFDdEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDOzhHQXJLUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxzTEFKOUIsQ0FBQyx5Q0FBeUMsQ0FBQyxpRUMxQjFELG9tSEFxRU0sNElEekNRLE9BQU8sbUZBQUUsZUFBZSxxd0JBQUUsYUFBYSxtTEFBRSxlQUFlLDJJQUFFLGdCQUFnQiwrU0FOeEUsY0FBYzs7MkZBUWpCLGdDQUFnQztrQkFaNUMsU0FBUzsrQkFDSSw0QkFBNEIsY0FHMUIsY0FBYyxpQkFDWCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLHlCQUF5QixhQUN4QixDQUFDLHlDQUF5QyxDQUFDLGNBQzFDLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQztzRkFLckYsWUFBWTtzQkFEWCxNQUFNO2dCQXVDSCxLQUFLO3NCQURSLEtBQUs7Z0JBNEJGLEtBQUs7c0JBRFIsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgY21hdEFuaW1hdGlvbnMgfSBmcm9tICdjbWF0L2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBiYXNlQ29sb3JzIH0gZnJvbSAnLi9iYXNlLWNvbG9yJztcclxuaW1wb3J0IHsgQ21hdFNlbGVjdGVkQ29sb3IgfSBmcm9tICcuL3NlbGVjdGVkLWNvbG9yJztcclxuXHJcbmV4cG9ydCBjb25zdCBDTUFUX01BVEVSSUFMX0NPTE9SX1BJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbWF0TWF0ZXJpYWxDb2xvclBpY2tlckNvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LW1hdGVyaWFsLWNvbG9yLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwtY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21hdGVyaWFsLWNvbG9yLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgYW5pbWF0aW9uczogY21hdEFuaW1hdGlvbnMsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXRNYXRlcmlhbENvbG9yUGlja2VyJyxcclxuICAgIHByb3ZpZGVyczogW0NNQVRfTUFURVJJQUxfQ09MT1JfUElDS0VSX1ZBTFVFX0FDQ0VTU09SXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgTWF0U2VsZWN0TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0TWF0ZXJpYWxDb2xvclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIC8vIENvbG9yIGNoYW5nZWRcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgY29sb3JDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgICBwYWxldHRlczogc3RyaW5nW107XHJcbiAgICBodWVzOiBzdHJpbmdbXTtcclxuICAgIHZpZXc6IHN0cmluZztcclxuICAgIHNlbGVjdGVkQ29sb3I6IENtYXRTZWxlY3RlZENvbG9yO1xyXG4gICAgc2VsZWN0ZWRQYWxldHRlOiBzdHJpbmc7XHJcbiAgICBzZWxlY3RlZEh1ZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIFByaXZhdGVcclxuICAgIHByaXZhdGUgX2NvbG9yOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF90aXRsZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfcmVhZG9ubHk6Ym9vbGVhbjtcclxuICAgIHByaXZhdGUgX21vZGVsQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX21vZGVsVG91Y2hlZDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0c1xyXG4gICAgICAgIHRoaXMuY29sb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgICAgIHRoaXMucGFsZXR0ZXMgPSBiYXNlQ29sb3JzO1xyXG4gICAgICAgIHRoaXMuaHVlcyA9IFsnNTAnLCAnMTAwJywgJzIwMCcsICczMDAnLCAnNDAwJywgJzUwMCcsICc2MDAnLCAnNzAwJywgJzgwMCcsICc5MDAnXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gJzUwMCc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSAnYmctaW5kaWdvJztcclxuICAgICAgICB0aGlzLnZpZXcgPSAncGFsZXR0ZXMnO1xyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICAgICAgdGhpcy5fbW9kZWxDaGFuZ2UgPSAoKTogYW55ID0+IHsgfTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkID0gKCk6IGFueSA9PiB7IH07XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGNvbG9yKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycgfHwgdGhpcy5fY29sb3IgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNwbGl0IHRoZSBjb2xvciB2YWx1ZSAoYmctcmVkLTQwMCwgYmctYmx1ZS01MDAgZXRjLilcclxuICAgICAgICBjb25zdCBjb2xvclBhcnRzID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgICAgLy8gVGFrZSB0aGUgdmVyeSBsYXN0IHBhcnQgYXMgdGhlIHNlbGVjdGVkIGh1ZSB2YWx1ZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIdWUgPSBjb2xvclBhcnRzW2NvbG9yUGFydHMubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBwYXJ0XHJcbiAgICAgICAgY29sb3JQYXJ0cy5wb3AoKTtcclxuXHJcbiAgICAgICAgLy8gUmVqb2luIHRoZSByZW1haW5pbmcgcGFydHMgYXMgdGhlIHNlbGVjdGVkIHBhbGV0dGUgbmFtZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYWxldHRlID0gY29sb3JQYXJ0cy5qb2luKCctJyk7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY29sb3JcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgdGl0bGUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl90aXRsZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgcmVhZG9ubHkodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWxDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShjb2xvcjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIG51bGxcclxuICAgICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgY29sb3JcclxuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0UGFsZXR0ZShwYWxldHRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBHbyB0byAnaHVlcycgdmlld1xyXG4gICAgICAgIHRoaXMudmlldyA9ICdodWVzJztcclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBwYWxldHRlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSBwYWxldHRlO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0SHVlKGh1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBodWVcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gaHVlO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIGNvbG9yXHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQ29sb3IoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIHRvIHRoZSAncGFsZXR0ZXMnIHZpZXdcclxuICAgICAgICB0aGlzLnZpZXcgPSAncGFsZXR0ZXMnO1xyXG5cclxuICAgICAgICAvLyBDbGVhciB0aGUgc2VsZWN0ZWQgcGFsZXR0ZSBhbmQgaHVlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhbGV0dGUgPSAnYmctaW5kaWdvJztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSHVlID0gJzUwMCc7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY29sb3JcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTZWxlY3RlZENvbG9yKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IgJiYgdGhpcy5zZWxlY3RlZENvbG9yLnBhbGV0dGUgPT09IHRoaXMuc2VsZWN0ZWRQYWxldHRlICYmIHRoaXMuc2VsZWN0ZWRDb2xvci5odWUgPT09IHRoaXMuc2VsZWN0ZWRIdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBzZWxlY3RlZCBjb2xvciBvYmplY3RcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSB7XHJcbiAgICAgICAgICAgIHBhbGV0dGU6IHRoaXMuc2VsZWN0ZWRQYWxldHRlLFxyXG4gICAgICAgICAgICBodWU6IHRoaXMuc2VsZWN0ZWRIdWUsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnNlbGVjdGVkUGFsZXR0ZSArICctJyArIHRoaXMuc2VsZWN0ZWRIdWVcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9jb2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5jb2xvcjtcclxuXHJcbiAgICAgICAgdGhpcy5jb2xvckNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkQ29sb3IpO1xyXG5cclxuICAgICAgICAvLyBNYXJrIHRoZSBtb2RlbCBhcyB0b3VjaGVkXHJcbiAgICAgICAgdGhpcy5fbW9kZWxUb3VjaGVkKHRoaXMuc2VsZWN0ZWRDb2xvci5jb2xvcik7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgbW9kZWxcclxuICAgICAgICB0aGlzLl9tb2RlbENoYW5nZSh0aGlzLnNlbGVjdGVkQ29sb3IuY29sb3IpO1xyXG5cclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBnb1RvUGFsZXR0ZXNWaWV3KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlldyA9ICdwYWxldHRlcyc7XHJcbiAgICB9XHJcblxyXG4gICAgb25NZW51T3BlbihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAob3BlbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlldyA9ICdodWVzJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvdW5kZWRcIiBbbmdDbGFzc109XCJzZWxlY3RlZENvbG9yLmNvbG9yXCI+XHJcbiAgPG1hdC1zZWxlY3QgdmFsdWU9XCJpbml0XCIgcGFuZWxDbGFzcz1cIm1pbi13LTY0XCIgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxyXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKG9wZW5lZENoYW5nZSk9XCJvbk1lbnVPcGVuKCRldmVudClcIj5cclxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJmbGV4IHAtMVwiPlxyXG4gICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOnBhaW50LWJydXNoJ1wiPjwvbWF0LWljb24+XHJcbiAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICA8aGVhZGVyIGNsYXNzPVwic2hhZG93IGZsZXggZmxleC1yb3cgY29udGVudC1iZXR3ZWVuIGp1c3RpZnktYmV0d2VlbiBwLTJcIiBbbmdDbGFzc109XCInYWNjZW50J1wiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiIGFyaWEtbGFiZWw9XCLosIPoibLmnb9cIlxyXG4gICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwidmlldyA9PT0gJ3BhbGV0dGVzJ1wiIChjbGljayk9XCJnb1RvUGFsZXR0ZXNWaWV3KClcIj5cclxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmFycm93X2JhY2tcIj48L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJhbGlnbi1taWRkbGUgbGVhZGluZy1sb29zZSB0ZXh0LXhsIGZvbnQtYm9sZFwiPnt7dGl0bGV9fTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicmVtb3ZlLWNvbG9yLWJ1dHRvbiBzZWNvbmRhcnktdGV4dFwiIGFyaWEtbGFiZWw9XCLnp7vpmaTpopzoibJcIlxyXG4gICAgICAgIG1hdFRvb2x0aXA9XCLnp7vpmaTpopzoibJcIiAoY2xpY2spPVwicmVtb3ZlQ29sb3IoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBbc3ZnSWNvbl09XCInbWF0X291dGxpbmU6Y2xlYW5pbmdfc2VydmljZXMnXCI+PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgdy02MCBtLTJcIj5cclxuICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJpbml0XCIgY2xhc3M9XCJoaWRkZW5cIj7liJ3lp4vljJY8L21hdC1vcHRpb24+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgQHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgQGNhc2UgKCdwYWxldHRlcycpIHtcclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1zdGFydCBjb250ZW50LXN0YXJ0IGNvbG9yc1wiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAocGFsZXR0ZSBvZiBwYWxldHRlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RQYWxldHRlKHBhbGV0dGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgZmxleCB3LTEyIGgtMTIgcC0wIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC1mdWxsIGJnLXRyYW5zcGFyZW50IGhvdmVyOm9wYWNpdHktNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkUGFsZXR0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZENvbG9yLmNvbG9yPT09cGFsZXR0ZSArICctJyArIHNlbGVjdGVkSHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFic29sdXRlIG0tMyB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOmNoZWNrJ1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdy0xMCBoLTEwIG0tMSByb3VuZGVkLWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGFsZXR0ZSArICctJyArIHNlbGVjdGVkSHVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdodWVzJykge1xyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LXN0YXJ0IGNvbnRlbnQtc3RhcnQgY29sb3JzXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChodWUgb2YgaHVlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RIdWUoaHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy0xMiBoLTEyIHAtMCBwb2ludGVyLWV2ZW50cy1ub25lIHJvdW5kZWQtZnVsbCBiZy10cmFuc3BhcmVudCBob3ZlcjpvcGFjaXR5LTUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEh1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZENvbG9yLmNvbG9yPT09c2VsZWN0ZWRQYWxldHRlICsgJy0nICsgaHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFic29sdXRlIG0tMyB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOmNoZWNrJ1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdy0xMCBoLTEwIG0tMSByb3VuZGVkLWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRQYWxldHRlICsgJy0nICsgaHVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1zZWxlY3Q+XHJcbjwvZGl2PiJdfQ==
@@ -45,12 +45,12 @@ export class CmatDatetimepickerCalendarBodyComponent {
45
45
  }
46
46
  return cellNumber === this.activeCell;
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDatetimepickerCalendarBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatDatetimepickerCalendarBodyComponent, isStandalone: true, selector: "[cmat-datetimepicker-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", allowDisabledSelection: "allowDisabledSelection", activeCell: "activeCell" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { properties: { "class": "this.class" } }, exportAs: ["cmatDatetimepickerCalendarBody"], ngImport: i0, template: "<!--\nIf rst row, create a separate label row. We mark this row as\naria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n@if (_firstRowOffset < labelMinRequiredCells) {\n <tr aria-hidden=\"true\">\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\n </tr>\n}\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n@for (row of rows; track $index; let rowIndex = $index) {\n <tr role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n -->\n @if (rowIndex === 0 && _firstRowOffset) {\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\">\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\n }\n @for (item of row; track $index; let colIndex = $index) {\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-label]=\"item.ariaLabel\"\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\n [attr.aria-selected]=\"selectedValue === item.value\"\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n }\n </tr>\n}", styles: [".cmat-datetimepicker-calendar-body{min-width:224px}.cmat-datetimepicker-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .cmat-datetimepicker-calendar-body-label{text-align:right}.cmat-datetimepicker-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.cmat-datetimepicker-calendar-body-disabled{cursor:default;pointer-events:none}.cmat-datetimepicker-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDatetimepickerCalendarBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatDatetimepickerCalendarBodyComponent, isStandalone: true, selector: "[cmat-datetimepicker-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", allowDisabledSelection: "allowDisabledSelection", activeCell: "activeCell" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { properties: { "class": "this.class" } }, exportAs: ["cmatDatetimepickerCalendarBody"], ngImport: i0, template: "<!--\r\nIf rst row, create a separate label row. We mark this row as\r\naria-hidden because we don't want it to be read out as one of the weeks in the month.\r\n-->\r\n@if (_firstRowOffset < labelMinRequiredCells) {\r\n <tr aria-hidden=\"true\">\r\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\r\n </tr>\r\n}\r\n\r\n<!-- Create the first row separately so we can include a special spacer cell. -->\r\n@for (row of rows; track $index; let rowIndex = $index) {\r\n <tr role=\"row\">\r\n <!--\r\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\r\n -->\r\n @if (rowIndex === 0 && _firstRowOffset) {\r\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\r\n [attr.colspan]=\"_firstRowOffset\">\r\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n </td>\r\n }\r\n @for (item of row; track $index; let colIndex = $index) {\r\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\r\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\r\n [attr.aria-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\r\n {{ item.displayValue }}\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n}", styles: [".cmat-datetimepicker-calendar-body{min-width:224px}.cmat-datetimepicker-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .cmat-datetimepicker-calendar-body-label{text-align:right}.cmat-datetimepicker-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.cmat-datetimepicker-calendar-body-disabled{cursor:default;pointer-events:none}.cmat-datetimepicker-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDatetimepickerCalendarBodyComponent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDatetimepickerCalendarBodyComponent, decorators: [{
52
52
  type: Component,
53
- args: [{ selector: '[cmat-datetimepicker-calendar-body]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDatetimepickerCalendarBody', standalone: true, imports: [], template: "<!--\nIf rst row, create a separate label row. We mark this row as\naria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n@if (_firstRowOffset < labelMinRequiredCells) {\n <tr aria-hidden=\"true\">\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\n </tr>\n}\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n@for (row of rows; track $index; let rowIndex = $index) {\n <tr role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n -->\n @if (rowIndex === 0 && _firstRowOffset) {\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\">\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\n }\n @for (item of row; track $index; let colIndex = $index) {\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-label]=\"item.ariaLabel\"\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\n [attr.aria-selected]=\"selectedValue === item.value\"\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n }\n </tr>\n}", styles: [".cmat-datetimepicker-calendar-body{min-width:224px}.cmat-datetimepicker-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .cmat-datetimepicker-calendar-body-label{text-align:right}.cmat-datetimepicker-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.cmat-datetimepicker-calendar-body-disabled{cursor:default;pointer-events:none}.cmat-datetimepicker-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"] }]
53
+ args: [{ selector: '[cmat-datetimepicker-calendar-body]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDatetimepickerCalendarBody', standalone: true, imports: [], template: "<!--\r\nIf rst row, create a separate label row. We mark this row as\r\naria-hidden because we don't want it to be read out as one of the weeks in the month.\r\n-->\r\n@if (_firstRowOffset < labelMinRequiredCells) {\r\n <tr aria-hidden=\"true\">\r\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\r\n </tr>\r\n}\r\n\r\n<!-- Create the first row separately so we can include a special spacer cell. -->\r\n@for (row of rows; track $index; let rowIndex = $index) {\r\n <tr role=\"row\">\r\n <!--\r\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\r\n -->\r\n @if (rowIndex === 0 && _firstRowOffset) {\r\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\r\n [attr.colspan]=\"_firstRowOffset\">\r\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n </td>\r\n }\r\n @for (item of row; track $index; let colIndex = $index) {\r\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\r\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\r\n [attr.aria-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\r\n {{ item.displayValue }}\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n}", styles: [".cmat-datetimepicker-calendar-body{min-width:224px}.cmat-datetimepicker-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .cmat-datetimepicker-calendar-body-label{text-align:right}.cmat-datetimepicker-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.cmat-datetimepicker-calendar-body-disabled{cursor:default;pointer-events:none}.cmat-datetimepicker-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"] }]
54
54
  }], propDecorators: { label: [{
55
55
  type: Input
56
56
  }], rows: [{
@@ -73,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
73
73
  type: HostBinding,
74
74
  args: ['class']
75
75
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci9jYWxlbmRhci1ib2R5LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL2NhbGVuZGFyLWJvZHkuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHaEk7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUNBQXVDO0lBQ2hELFlBQW1CLEtBQWEsRUFDckIsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsT0FBZ0I7UUFIUixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUMzQixDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyx1Q0FBdUM7SUFWcEQ7UUEwQkksMENBQTBDO1FBQ2pDLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFFckIsb0RBQW9EO1FBQzNDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUV4Qyx1REFBdUQ7UUFDOUMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUV4QiwwQ0FBMEM7UUFDaEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyQyxVQUFLLEdBQUcsbUNBQW1DLENBQUM7S0F5QnJFO0lBdkJHLDJFQUEyRTtJQUMzRSxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBNkM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0IsRUFBRSxRQUFnQjtRQUMzQyxJQUFJLFVBQVUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7UUFFcEQsc0VBQXNFO1FBQ3RFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxDQUFDOzhHQXBEUSx1Q0FBdUM7a0dBQXZDLHVDQUF1QywyZUMzQnBELHd0REFxQ0M7OzJGRFZZLHVDQUF1QztrQkFWbkQsU0FBUzsrQkFDSSxxQ0FBcUMsaUJBR2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZ0NBQWdDLGNBQzlCLElBQUksV0FDUCxFQUFFOzhCQUlGLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVlLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBjb3JyZXNwb25kaW5nIHRvIGEgc2luZ2xlIGNhbGVuZGFyIGNlbGwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogbnVtYmVyLFxyXG4gICAgICAgIHB1YmxpYyBkaXNwbGF5VmFsdWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNvbXBvbmVudCB1c2VkIHRvIGRpc3BsYXkgY2FsZW5kYXIgZGF0YSBpbiBhIHRhYmxlLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ1tjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHldJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXItYm9keS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydjYWxlbmRhci1ib2R5LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJCb2R5JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJCb2R5Q29tcG9uZW50IHtcclxuICAgIC8qKiBUaGUgbGFiZWwgZm9yIHRoZSB0YWJsZS4gKGUuZy4gXCJKYW4gMjAxN1wiKS4gKi9cclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFRoZSBjZWxscyB0byBkaXNwbGF5IGluIHRoZSB0YWJsZS4gKi9cclxuICAgIEBJbnB1dCgpIHJvd3M6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudFtdW107XHJcblxyXG4gICAgLyoqIFRoZSB2YWx1ZSBpbiB0aGUgdGFibGUgdGhhdCBjb3JyZXNwb25kcyB0byB0b2RheS4gKi9cclxuICAgIEBJbnB1dCgpIHRvZGF5VmFsdWU6IG51bWJlciB8IG51bGw7XHJcblxyXG4gICAgLyoqIFRoZSB2YWx1ZSBpbiB0aGUgdGFibGUgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBudW1iZXIgfCBudWxsO1xyXG5cclxuICAgIC8qKiBUaGUgbWluaW11bSBudW1iZXIgb2YgZnJlZSBjZWxscyBuZWVkZWQgdG8gZml0IHRoZSBsYWJlbCBpbiB0aGUgZmlyc3Qgcm93LiAqL1xyXG4gICAgQElucHV0KCkgbGFiZWxNaW5SZXF1aXJlZENlbGxzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGFibGUuICovXHJcbiAgICBASW5wdXQoKSBudW1Db2xzID0gNztcclxuXHJcbiAgICAvKiogV2hldGhlciB0byBhbGxvdyBzZWxlY3Rpb24gb2YgZGlzYWJsZWQgY2VsbHMuICovXHJcbiAgICBASW5wdXQoKSBhbGxvd0Rpc2FibGVkU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFRoZSBjZWxsIG51bWJlciBvZiB0aGUgYWN0aXZlIGNlbGwgaW4gdGhlIHRhYmxlLiAqL1xyXG4gICAgQElucHV0KCkgYWN0aXZlQ2VsbCA9IDA7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gYSBuZXcgdmFsdWUgaXMgc2VsZWN0ZWQuICovXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHknO1xyXG5cclxuICAgIC8qKiBUaGUgbnVtYmVyIG9mIGJsYW5rIGNlbGxzIHRvIHB1dCBhdCB0aGUgYmVnaW5uaW5nIGZvciB0aGUgZmlyc3Qgcm93LiAqL1xyXG4gICAgZ2V0IF9maXJzdFJvd09mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvd3M/Lmxlbmd0aCAmJiB0aGlzLnJvd3NbMF0ubGVuZ3RoID9cclxuICAgICAgICAgICAgdGhpcy5udW1Db2xzIC0gdGhpcy5yb3dzWzBdLmxlbmd0aCA6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgY2VsbENsaWNrZWQoY2VsbDogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFsbG93RGlzYWJsZWRTZWxlY3Rpb24gJiYgIWNlbGwuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KGNlbGwudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQWN0aXZlQ2VsbChyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNlbGxOdW1iZXIgPSByb3dJbmRleCAqIHRoaXMubnVtQ29scyArIGNvbEluZGV4O1xyXG5cclxuICAgICAgICAvLyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBmaXJzdCByb3cgbWF5IG5vdCBoYXZlIGFzIG1hbnkgY2VsbHMuXHJcbiAgICAgICAgaWYgKHJvd0luZGV4KSB7XHJcbiAgICAgICAgICAgIGNlbGxOdW1iZXIgLT0gdGhpcy5fZmlyc3RSb3dPZmZzZXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY2VsbE51bWJlciA9PT0gdGhpcy5hY3RpdmVDZWxsO1xyXG4gICAgfVxyXG59XHJcbiIsIjwhLS1cbklmIHJzdCByb3csIGNyZWF0ZSBhIHNlcGFyYXRlIGxhYmVsIHJvdy4gV2UgbWFyayB0aGlzIHJvdyBhc1xuYXJpYS1oaWRkZW4gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIHJlYWQgb3V0IGFzIG9uZSBvZiB0aGUgd2Vla3MgaW4gdGhlIG1vbnRoLlxuLS0+XG5AaWYgKF9maXJzdFJvd09mZnNldCA8IGxhYmVsTWluUmVxdWlyZWRDZWxscykge1xuICA8dHIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHRkIGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5LWxhYmVsXCIgW2F0dHIuY29sc3Bhbl09XCJudW1Db2xzXCI+e3sgbGFiZWwgfX08L3RkPlxuICA8L3RyPlxufVxuXG48IS0tIENyZWF0ZSB0aGUgZmlyc3Qgcm93IHNlcGFyYXRlbHkgc28gd2UgY2FuIGluY2x1ZGUgYSBzcGVjaWFsIHNwYWNlciBjZWxsLiAtLT5cbkBmb3IgKHJvdyBvZiByb3dzOyB0cmFjayAkaW5kZXg7IGxldCByb3dJbmRleCA9ICRpbmRleCkge1xuICA8dHIgcm9sZT1cInJvd1wiPlxuICAgIDwhLS1cbiAgICBXZSBtYXJrIHRoaXMgY2VsbCBhcyBhcmlhLWhpZGRlbiBzbyBpdCBkb2Vzbid0IGdldCByZWFkIG91dCBhcyBvbmUgb2YgdGhlIGRheXMgaW4gdGhlIHdlZWsuXG4gICAgLS0+XG4gICAgQGlmIChyb3dJbmRleCA9PT0gMCAmJiBfZmlyc3RSb3dPZmZzZXQpIHtcbiAgICAgIDx0ZCBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keS1sYWJlbFwiXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiX2ZpcnN0Um93T2Zmc2V0XCI+XG4gICAgICAgIHt7IF9maXJzdFJvd09mZnNldCA+PSBsYWJlbE1pblJlcXVpcmVkQ2VsbHMgPyBsYWJlbCA6ICcnIH19XG4gICAgICA8L3RkPlxuICAgIH1cbiAgICBAZm9yIChpdGVtIG9mIHJvdzsgdHJhY2sgJGluZGV4OyBsZXQgY29sSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDx0ZCByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktY2VsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiIWl0ZW0uZW5hYmxlZCB8fCBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktYWN0aXZlXT1cImlzQWN0aXZlQ2VsbChyb3dJbmRleCwgY29sSW5kZXgpXCJcbiAgICAgICAgW2NsYXNzLmNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keS1kaXNhYmxlZF09XCIhaXRlbS5lbmFibGVkXCIgKGNsaWNrKT1cImNlbGxDbGlja2VkKGl0ZW0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkVmFsdWUgPT09IGl0ZW0udmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRdPVwic2VsZWN0ZWRWYWx1ZSA9PT0gaXRlbS52YWx1ZVwiXG4gICAgICAgICAgW2NsYXNzLmNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keS10b2RheV09XCJ0b2RheVZhbHVlID09PSBpdGVtLnZhbHVlXCI+XG4gICAgICAgICAge3sgaXRlbS5kaXNwbGF5VmFsdWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgPC90cj5cbn0iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci9jYWxlbmRhci1ib2R5LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL2NhbGVuZGFyLWJvZHkuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHaEk7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUNBQXVDO0lBQ2hELFlBQW1CLEtBQWEsRUFDckIsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsT0FBZ0I7UUFIUixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUMzQixDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyx1Q0FBdUM7SUFWcEQ7UUEwQkksMENBQTBDO1FBQ2pDLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFFckIsb0RBQW9EO1FBQzNDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUV4Qyx1REFBdUQ7UUFDOUMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUV4QiwwQ0FBMEM7UUFDaEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyQyxVQUFLLEdBQUcsbUNBQW1DLENBQUM7S0F5QnJFO0lBdkJHLDJFQUEyRTtJQUMzRSxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBNkM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0IsRUFBRSxRQUFnQjtRQUMzQyxJQUFJLFVBQVUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7UUFFcEQsc0VBQXNFO1FBQ3RFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxDQUFDOzhHQXBEUSx1Q0FBdUM7a0dBQXZDLHVDQUF1QywyZUMzQnBELGt5REFxQ0M7OzJGRFZZLHVDQUF1QztrQkFWbkQsU0FBUzsrQkFDSSxxQ0FBcUMsaUJBR2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZ0NBQWdDLGNBQzlCLElBQUksV0FDUCxFQUFFOzhCQUlGLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVlLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBjb3JyZXNwb25kaW5nIHRvIGEgc2luZ2xlIGNhbGVuZGFyIGNlbGwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogbnVtYmVyLFxyXG4gICAgICAgIHB1YmxpYyBkaXNwbGF5VmFsdWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNvbXBvbmVudCB1c2VkIHRvIGRpc3BsYXkgY2FsZW5kYXIgZGF0YSBpbiBhIHRhYmxlLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ1tjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHldJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXItYm9keS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydjYWxlbmRhci1ib2R5LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJCb2R5JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJCb2R5Q29tcG9uZW50IHtcclxuICAgIC8qKiBUaGUgbGFiZWwgZm9yIHRoZSB0YWJsZS4gKGUuZy4gXCJKYW4gMjAxN1wiKS4gKi9cclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFRoZSBjZWxscyB0byBkaXNwbGF5IGluIHRoZSB0YWJsZS4gKi9cclxuICAgIEBJbnB1dCgpIHJvd3M6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudFtdW107XHJcblxyXG4gICAgLyoqIFRoZSB2YWx1ZSBpbiB0aGUgdGFibGUgdGhhdCBjb3JyZXNwb25kcyB0byB0b2RheS4gKi9cclxuICAgIEBJbnB1dCgpIHRvZGF5VmFsdWU6IG51bWJlciB8IG51bGw7XHJcblxyXG4gICAgLyoqIFRoZSB2YWx1ZSBpbiB0aGUgdGFibGUgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBudW1iZXIgfCBudWxsO1xyXG5cclxuICAgIC8qKiBUaGUgbWluaW11bSBudW1iZXIgb2YgZnJlZSBjZWxscyBuZWVkZWQgdG8gZml0IHRoZSBsYWJlbCBpbiB0aGUgZmlyc3Qgcm93LiAqL1xyXG4gICAgQElucHV0KCkgbGFiZWxNaW5SZXF1aXJlZENlbGxzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGFibGUuICovXHJcbiAgICBASW5wdXQoKSBudW1Db2xzID0gNztcclxuXHJcbiAgICAvKiogV2hldGhlciB0byBhbGxvdyBzZWxlY3Rpb24gb2YgZGlzYWJsZWQgY2VsbHMuICovXHJcbiAgICBASW5wdXQoKSBhbGxvd0Rpc2FibGVkU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFRoZSBjZWxsIG51bWJlciBvZiB0aGUgYWN0aXZlIGNlbGwgaW4gdGhlIHRhYmxlLiAqL1xyXG4gICAgQElucHV0KCkgYWN0aXZlQ2VsbCA9IDA7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gYSBuZXcgdmFsdWUgaXMgc2VsZWN0ZWQuICovXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHknO1xyXG5cclxuICAgIC8qKiBUaGUgbnVtYmVyIG9mIGJsYW5rIGNlbGxzIHRvIHB1dCBhdCB0aGUgYmVnaW5uaW5nIGZvciB0aGUgZmlyc3Qgcm93LiAqL1xyXG4gICAgZ2V0IF9maXJzdFJvd09mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvd3M/Lmxlbmd0aCAmJiB0aGlzLnJvd3NbMF0ubGVuZ3RoID9cclxuICAgICAgICAgICAgdGhpcy5udW1Db2xzIC0gdGhpcy5yb3dzWzBdLmxlbmd0aCA6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgY2VsbENsaWNrZWQoY2VsbDogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFsbG93RGlzYWJsZWRTZWxlY3Rpb24gJiYgIWNlbGwuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KGNlbGwudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQWN0aXZlQ2VsbChyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNlbGxOdW1iZXIgPSByb3dJbmRleCAqIHRoaXMubnVtQ29scyArIGNvbEluZGV4O1xyXG5cclxuICAgICAgICAvLyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBmaXJzdCByb3cgbWF5IG5vdCBoYXZlIGFzIG1hbnkgY2VsbHMuXHJcbiAgICAgICAgaWYgKHJvd0luZGV4KSB7XHJcbiAgICAgICAgICAgIGNlbGxOdW1iZXIgLT0gdGhpcy5fZmlyc3RSb3dPZmZzZXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY2VsbE51bWJlciA9PT0gdGhpcy5hY3RpdmVDZWxsO1xyXG4gICAgfVxyXG59XHJcbiIsIjwhLS1cclxuSWYgcnN0IHJvdywgY3JlYXRlIGEgc2VwYXJhdGUgbGFiZWwgcm93LiBXZSBtYXJrIHRoaXMgcm93IGFzXHJcbmFyaWEtaGlkZGVuIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBpdCB0byBiZSByZWFkIG91dCBhcyBvbmUgb2YgdGhlIHdlZWtzIGluIHRoZSBtb250aC5cclxuLS0+XHJcbkBpZiAoX2ZpcnN0Um93T2Zmc2V0IDwgbGFiZWxNaW5SZXF1aXJlZENlbGxzKSB7XHJcbiAgPHRyIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPHRkIGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5LWxhYmVsXCIgW2F0dHIuY29sc3Bhbl09XCJudW1Db2xzXCI+e3sgbGFiZWwgfX08L3RkPlxyXG4gIDwvdHI+XHJcbn1cclxuXHJcbjwhLS0gQ3JlYXRlIHRoZSBmaXJzdCByb3cgc2VwYXJhdGVseSBzbyB3ZSBjYW4gaW5jbHVkZSBhIHNwZWNpYWwgc3BhY2VyIGNlbGwuIC0tPlxyXG5AZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgJGluZGV4OyBsZXQgcm93SW5kZXggPSAkaW5kZXgpIHtcclxuICA8dHIgcm9sZT1cInJvd1wiPlxyXG4gICAgPCEtLVxyXG4gICAgV2UgbWFyayB0aGlzIGNlbGwgYXMgYXJpYS1oaWRkZW4gc28gaXQgZG9lc24ndCBnZXQgcmVhZCBvdXQgYXMgb25lIG9mIHRoZSBkYXlzIGluIHRoZSB3ZWVrLlxyXG4gICAgLS0+XHJcbiAgICBAaWYgKHJvd0luZGV4ID09PSAwICYmIF9maXJzdFJvd09mZnNldCkge1xyXG4gICAgICA8dGQgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktbGFiZWxcIlxyXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiX2ZpcnN0Um93T2Zmc2V0XCI+XHJcbiAgICAgICAge3sgX2ZpcnN0Um93T2Zmc2V0ID49IGxhYmVsTWluUmVxdWlyZWRDZWxscyA/IGxhYmVsIDogJycgfX1cclxuICAgICAgPC90ZD5cclxuICAgIH1cclxuICAgIEBmb3IgKGl0ZW0gb2Ygcm93OyB0cmFjayAkaW5kZXg7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xyXG4gICAgICA8dGQgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5LWNlbGxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiIWl0ZW0uZW5hYmxlZCB8fCBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcclxuICAgICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5LWFjdGl2ZV09XCJpc0FjdGl2ZUNlbGwocm93SW5kZXgsIGNvbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keS1kaXNhYmxlZF09XCIhaXRlbS5lbmFibGVkXCIgKGNsaWNrKT1cImNlbGxDbGlja2VkKGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZFZhbHVlID09PSBpdGVtLnZhbHVlXCJcclxuICAgICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRdPVwic2VsZWN0ZWRWYWx1ZSA9PT0gaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5LXRvZGF5XT1cInRvZGF5VmFsdWUgPT09IGl0ZW0udmFsdWVcIj5cclxuICAgICAgICAgIHt7IGl0ZW0uZGlzcGxheVZhbHVlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICB9XHJcbiAgPC90cj5cclxufSJdfQ==