cmat 0.0.16 → 0.0.17

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 (240) hide show
  1. package/components/select-search/select-search.component.d.ts +2 -1
  2. package/esm2022/components/adapter/dayjs-date-adapter.mjs +4 -4
  3. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +4 -4
  4. package/esm2022/components/adapter/native-datetime-adapter.mjs +4 -4
  5. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +4 -4
  6. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +4 -4
  7. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
  8. package/esm2022/components/card/card.component.mjs +4 -4
  9. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +4 -4
  10. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +4 -4
  11. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +4 -4
  12. package/esm2022/components/chip-input/chip-input.component.mjs +4 -4
  13. package/esm2022/components/custom-formly/types/button/button.component.mjs +4 -4
  14. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
  15. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
  16. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
  17. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +4 -4
  18. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +4 -4
  19. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +4 -4
  20. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
  21. package/esm2022/components/custom-formly/types/number/number.component.mjs +4 -4
  22. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +4 -4
  23. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
  24. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +4 -4
  25. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +4 -4
  26. package/esm2022/components/custom-formly/types/select/select.component.mjs +4 -4
  27. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
  28. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +4 -4
  29. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +4 -4
  30. package/esm2022/components/custom-formly/types/table/table.component.mjs +4 -4
  31. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +4 -4
  32. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +4 -4
  33. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +4 -4
  34. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
  35. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +4 -4
  36. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +4 -4
  37. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +4 -4
  38. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +4 -4
  39. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +4 -4
  40. package/esm2022/components/date-range/date-range.component.mjs +4 -4
  41. package/esm2022/components/drawer/drawer.component.mjs +4 -4
  42. package/esm2022/components/drawer/drawer.service.mjs +4 -4
  43. package/esm2022/components/fullscreen/fullscreen.component.mjs +4 -4
  44. package/esm2022/components/highlight/highlight.component.mjs +4 -4
  45. package/esm2022/components/highlight/highlight.service.mjs +4 -4
  46. package/esm2022/components/json-editor/json-editor.component.mjs +4 -4
  47. package/esm2022/components/masonry/masonry.component.mjs +4 -4
  48. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +4 -4
  49. package/esm2022/components/material-datetimepicker/calendar-body.mjs +4 -4
  50. package/esm2022/components/material-datetimepicker/calendar.mjs +4 -4
  51. package/esm2022/components/material-datetimepicker/clock.mjs +4 -4
  52. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -4
  53. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +4 -4
  54. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +7 -7
  55. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +7 -7
  56. package/esm2022/components/material-datetimepicker/month-view.mjs +4 -4
  57. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +4 -4
  58. package/esm2022/components/material-datetimepicker/time.mjs +7 -7
  59. package/esm2022/components/material-datetimepicker/year-view.mjs +4 -4
  60. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +4 -4
  61. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +4 -4
  62. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +4 -4
  63. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +4 -4
  64. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +4 -4
  65. package/esm2022/components/navigation/navigation.service.mjs +4 -4
  66. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +4 -4
  67. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +4 -4
  68. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +4 -4
  69. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +4 -4
  70. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +4 -4
  71. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +4 -4
  72. package/esm2022/components/navigation/vertical/vertical.component.mjs +4 -4
  73. package/esm2022/components/pagination/pagination.component.mjs +4 -4
  74. package/esm2022/components/pagination/pagination.directive.mjs +4 -4
  75. package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
  76. package/esm2022/components/pagination/pagination.service.mjs +4 -4
  77. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +4 -4
  78. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +4 -4
  79. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +4 -4
  80. package/esm2022/components/popover/popover-trigger.mjs +4 -4
  81. package/esm2022/components/popover/popover.component.mjs +4 -4
  82. package/esm2022/components/popover/popover.target.mjs +4 -4
  83. package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
  84. package/esm2022/components/rating/rating.component.mjs +4 -4
  85. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +4 -4
  86. package/esm2022/components/select-search/select-search-clear.directive.mjs +4 -4
  87. package/esm2022/components/select-search/select-search.component.mjs +4 -4
  88. package/esm2022/components/select-tree/select-tree.component.mjs +4 -4
  89. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +10 -10
  90. package/esm2022/components/timeline/timeline.component.mjs +4 -4
  91. package/esm2022/components/toast/toast-modal.component.mjs +4 -4
  92. package/esm2022/components/toast/toast.component.mjs +4 -4
  93. package/esm2022/components/toast/toast.service.mjs +4 -4
  94. package/esm2022/components/transfer-picker/filter/filter.component.mjs +4 -4
  95. package/esm2022/components/transfer-picker/search/search.component.mjs +4 -4
  96. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +4 -4
  97. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +4 -4
  98. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +4 -4
  99. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  100. package/esm2022/components/upload/files.util.service.mjs +4 -4
  101. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +4 -4
  102. package/esm2022/components/upload/upload.component.mjs +4 -4
  103. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +4 -4
  104. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +4 -4
  105. package/esm2022/directives/autofocus/autofocus.directive.mjs +4 -4
  106. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +4 -4
  107. package/esm2022/directives/debounce/debounce-click.directive.mjs +4 -4
  108. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +4 -4
  109. package/esm2022/directives/digit-only/digit-only.directive.mjs +4 -4
  110. package/esm2022/directives/digit-only/mask.directive.mjs +4 -4
  111. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
  112. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +4 -4
  113. package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
  114. package/esm2022/pipes/bytes/bytes.pipe.mjs +4 -4
  115. package/esm2022/pipes/date-format/date-format.pipe.mjs +4 -4
  116. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +4 -4
  117. package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
  118. package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
  119. package/esm2022/pipes/secure/secure-pipe.mjs +4 -4
  120. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +4 -4
  121. package/esm2022/services/alert/alert.service.mjs +4 -4
  122. package/esm2022/services/config/config.service.mjs +4 -4
  123. package/esm2022/services/config/urlStateConfig.service.mjs +4 -4
  124. package/esm2022/services/confirmation/confirmation.service.mjs +4 -4
  125. package/esm2022/services/confirmation/dialog/dialog.component.mjs +4 -4
  126. package/esm2022/services/data/data.service.mjs +6 -6
  127. package/esm2022/services/loading/loading.interceptor.mjs +4 -4
  128. package/esm2022/services/loading/loading.service.mjs +4 -4
  129. package/esm2022/services/local-storage/local-storage.service.mjs +4 -4
  130. package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
  131. package/esm2022/services/platform/platform.service.mjs +4 -4
  132. package/esm2022/services/splash-screen/splash-screen.service.mjs +4 -4
  133. package/esm2022/services/title/title.service.mjs +4 -4
  134. package/esm2022/services/translation/translation.service.mjs +4 -4
  135. package/esm2022/services/utils/utils.service.mjs +36 -4
  136. package/fesm2022/cmat-components-adapter.mjs +9 -9
  137. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  138. package/fesm2022/cmat-components-breadcrumb.mjs +9 -9
  139. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  140. package/fesm2022/cmat-components-card.mjs +3 -3
  141. package/fesm2022/cmat-components-card.mjs.map +1 -1
  142. package/fesm2022/cmat-components-cascade.mjs +9 -9
  143. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  144. package/fesm2022/cmat-components-chip-input.mjs +3 -3
  145. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  146. package/fesm2022/cmat-components-custom-formly.mjs +81 -81
  147. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  148. package/fesm2022/cmat-components-date-range.mjs +3 -3
  149. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  150. package/fesm2022/cmat-components-drawer.mjs +6 -6
  151. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  152. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  153. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  154. package/fesm2022/cmat-components-highlight.mjs +6 -6
  155. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  156. package/fesm2022/cmat-components-json-editor.mjs +3 -3
  157. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  158. package/fesm2022/cmat-components-masonry.mjs +3 -3
  159. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  160. package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
  161. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  162. package/fesm2022/cmat-components-material-datetimepicker.mjs +42 -42
  163. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  164. package/fesm2022/cmat-components-navigation.mjs +39 -39
  165. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  166. package/fesm2022/cmat-components-pagination.mjs +12 -12
  167. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  168. package/fesm2022/cmat-components-password-strength.mjs +9 -9
  169. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  170. package/fesm2022/cmat-components-popover.mjs +9 -9
  171. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  172. package/fesm2022/cmat-components-progress-bar.mjs +3 -3
  173. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  174. package/fesm2022/cmat-components-rating.mjs +3 -3
  175. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  176. package/fesm2022/cmat-components-select-search.mjs +9 -9
  177. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  178. package/fesm2022/cmat-components-select-tree.mjs +3 -3
  179. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  180. package/fesm2022/cmat-components-timeline.mjs +12 -12
  181. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  182. package/fesm2022/cmat-components-toast.mjs +9 -9
  183. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  184. package/fesm2022/cmat-components-transfer-picker.mjs +18 -18
  185. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  186. package/fesm2022/cmat-components-upload.mjs +9 -9
  187. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  188. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  189. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  190. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  191. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  192. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  193. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  194. package/fesm2022/cmat-directives-digit-only.mjs +6 -6
  195. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  196. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  197. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  198. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  199. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  200. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  201. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  202. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  203. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  204. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  205. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  206. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  207. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  208. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  209. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  210. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  211. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  212. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  213. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  214. package/fesm2022/cmat-services-alert.mjs +3 -3
  215. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  216. package/fesm2022/cmat-services-config.mjs +6 -6
  217. package/fesm2022/cmat-services-config.mjs.map +1 -1
  218. package/fesm2022/cmat-services-confirmation.mjs +6 -6
  219. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  220. package/fesm2022/cmat-services-data.mjs +5 -5
  221. package/fesm2022/cmat-services-data.mjs.map +1 -1
  222. package/fesm2022/cmat-services-loading.mjs +6 -6
  223. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  224. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  225. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  226. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  227. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  228. package/fesm2022/cmat-services-platform.mjs +3 -3
  229. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  230. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  231. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  232. package/fesm2022/cmat-services-title.mjs +3 -3
  233. package/fesm2022/cmat-services-title.mjs.map +1 -1
  234. package/fesm2022/cmat-services-translation.mjs +3 -3
  235. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  236. package/fesm2022/cmat-services-utils.mjs +35 -3
  237. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  238. package/package.json +37 -37
  239. package/services/data/data.service.d.ts +1 -1
  240. package/services/utils/utils.service.d.ts +4 -0
@@ -511,10 +511,10 @@ export class CmatSelectTreeComponent {
511
511
  this.isChecked = this.checkCount === this.treeControl.dataNodes.length && this.checkCount > 0;
512
512
  }
513
513
  }
514
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatSelectTreeComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
515
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatSelectTreeComponent, isStandalone: true, selector: "cmat-select-tree", inputs: { id: "id", dataSource: "dataSource", noEntriesFoundLabel: "noEntriesFoundLabel", showNoFoundLabel: "showNoFoundLabel", multiple: "multiple", overallSearchEnabled: "overallSearchEnabled", canNull: "canNull", customTriggerLabelFn: "customTriggerLabelFn", customTriggerLabelTemplate: "customTriggerLabelTemplate", expandable: "expandable", showToggleAllCheckbox: "showToggleAllCheckbox", placeholder: "placeholder", value: "value", required: "required", disabled: "disabled" }, host: { listeners: { "document:click": "clickedOut()" }, properties: { "attr.id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }], viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["componentSelect"], descendants: true }], exportAs: ["cmatSelectTree"], usesOnChanges: true, ngImport: i0, template: "@if(multiple){\r\n<mat-select #componentSelect multiple panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}", styles: ["cmat-select-tree{display:block;width:100%;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;display:flex;flex-direction:row}cmat-select-tree .cmat-select-search-inner span{display:flex;place-items:center}cmat-select-tree .cmat-select-search-no-entries-found{width:100%;text-align:center;border-radius:.25rem;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}cmat-select-tree .mat-tree-node{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: CmatSelectSearchComponent, selector: "cmat-select-search", inputs: ["placeholderLabel", "type", "noEntriesFoundLabel", "showNoFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"], exportAs: ["cmatSelectSearch"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
514
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatSelectTreeComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
515
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: CmatSelectTreeComponent, isStandalone: true, selector: "cmat-select-tree", inputs: { id: "id", dataSource: "dataSource", noEntriesFoundLabel: "noEntriesFoundLabel", showNoFoundLabel: "showNoFoundLabel", multiple: "multiple", overallSearchEnabled: "overallSearchEnabled", canNull: "canNull", customTriggerLabelFn: "customTriggerLabelFn", customTriggerLabelTemplate: "customTriggerLabelTemplate", expandable: "expandable", showToggleAllCheckbox: "showToggleAllCheckbox", placeholder: "placeholder", value: "value", required: "required", disabled: "disabled" }, host: { listeners: { "document:click": "clickedOut()" }, properties: { "attr.id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }], viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["componentSelect"], descendants: true }], exportAs: ["cmatSelectTree"], usesOnChanges: true, ngImport: i0, template: "@if(multiple){\r\n<mat-select #componentSelect multiple panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}", styles: ["cmat-select-tree{display:block;width:100%;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;display:flex;flex-direction:row}cmat-select-tree .cmat-select-search-inner span{display:flex;place-items:center}cmat-select-tree .cmat-select-search-no-entries-found{width:100%;text-align:center;border-radius:.25rem;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}cmat-select-tree .mat-tree-node{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: CmatSelectSearchComponent, selector: "cmat-select-search", inputs: ["placeholderLabel", "type", "noEntriesFoundLabel", "showNoFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"], exportAs: ["cmatSelectSearch"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
516
516
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatSelectTreeComponent, decorators: [{
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatSelectTreeComponent, decorators: [{
518
518
  type: Component,
519
519
  args: [{ selector: 'cmat-select-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }], exportAs: 'cmatSelectTree', standalone: true, imports: [MatIconModule, MatSelectModule, CmatSelectSearchComponent,
520
520
  ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle], template: "@if(multiple){\r\n<mat-select #componentSelect multiple panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect panelClass=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareObjects\"\r\n (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.data.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">\u7A7A</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else{\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\" (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n @if (multiple) {\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(node)\"\r\n [color]=\"'primary'\" [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n }\r\n @else {\r\n <span class=\"text-current\">{{node.name}}</span>\r\n }\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}", styles: ["cmat-select-tree{display:block;width:100%;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;display:flex;flex-direction:row}cmat-select-tree .cmat-select-search-inner span{display:flex;place-items:center}cmat-select-tree .cmat-select-search-no-entries-found{width:100%;text-align:center;border-radius:.25rem;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}cmat-select-tree .mat-tree-node{cursor:pointer}\n"] }]
@@ -562,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
562
562
  }], disabled: [{
563
563
  type: Input
564
564
  }] } });
565
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFn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dUJBQXVCO2tCQVpuQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx5QkFBeUIsRUFBRSxDQUFDLFlBQ3pFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUseUJBQXlCO3dCQUMvRCxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDOzswQkEyRDNGLFFBQVE7OzBCQUFJLElBQUk7eUVBdER0QixFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQTZDK0MsU0FBUztzQkFBN0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBVS9DLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBNEkxQixXQUFXO3NCQURkLEtBQUs7Z0JBV0YsS0FBSztzQkFEUixLQUFLO2dCQStCRixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBBc3luY1BpcGUsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBTZWxmLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IGlzTmlsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnY21hdC9jb21wb25lbnRzL3NlbGVjdC1zZWFyY2gnO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIH0gZnJvbSAnLi9zZWxlY3QtdHJlZS5mbGF0bm9kZSc7XHJcbmltcG9ydCB7IENtYXRTZWxlY3RUcmVlTm9kZSB9IGZyb20gJy4vc2VsZWN0LXRyZWUubm9kZSc7XHJcblxyXG5sZXQgTkVYVF9JRCA9IDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1zZWxlY3QtdHJlZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IENtYXRTZWxlY3RUcmVlQ29tcG9uZW50IH1dLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0U2VsZWN0VHJlZScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgQ21hdFNlbGVjdFNlYXJjaENvbXBvbmVudCxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRUcmVlTW9kdWxlLCBOZ0NsYXNzLCBNYXRCdXR0b25Nb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBBc3luY1BpcGUsIE5nU3R5bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0U2VsZWN0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkID0gYGNtYXQtc2VsZWN0LXRyZWUtJHtORVhUX0lEKyt9YDtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhU291cmNlOiBDbWF0U2VsZWN0VHJlZU5vZGVbXTtcclxuXHJcbiAgICBASW5wdXQoKSBub0VudHJpZXNGb3VuZExhYmVsID0gJ+aXoOe7k+aenCc7XHJcblxyXG4gICAgQElucHV0KCkgc2hvd05vRm91bmRMYWJlbCA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBvdmVyYWxsU2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgY2FuTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIGN1c3RvbVRyaWdnZXJMYWJlbEZuOiAodmFsdWU6IENtYXRTZWxlY3RUcmVlTm9kZVtdKSA9PiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgY3VzdG9tVHJpZ2dlckxhYmVsVGVtcGxhdGU6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBleHBhbmRhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dUb2dnbGVBbGxDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGZsYXROb2RlTWFwID0gbmV3IE1hcDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlLCBDbWF0U2VsZWN0VHJlZU5vZGU+KCk7XHJcblxyXG4gICAgbmVzdGVkTm9kZU1hcCA9IG5ldyBNYXA8Q21hdFNlbGVjdFRyZWVOb2RlLCBDbWF0U2VsZWN0VHJlZUZsYXROb2RlPigpO1xyXG5cclxuICAgIHNlbGVjdGVkUGFyZW50OiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPjtcclxuXHJcbiAgICB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPENtYXRTZWxlY3RUcmVlTm9kZSwgQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZT47XHJcblxyXG4gICAgY2hlY2tsaXN0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPENtYXRTZWxlY3RUcmVlRmxhdE5vZGU+KHRydWUpO1xyXG5cclxuICAgIHRyZWVEYXRhU291cmNlOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8Q21hdFNlbGVjdFRyZWVOb2RlLCBDbWF0U2VsZWN0VHJlZUZsYXROb2RlPjtcclxuXHJcbiAgICBvdmVyYWxsRmlsdGVyQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIGlzQ2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNoZWNrQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgc2VsZWN0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgIG1hdFNlbGVjdERhdGE6IFJlcGxheVN1YmplY3Q8YW55W10+ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55W10+KDEpO1xyXG5cclxuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0b3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBjb250cm9sVHlwZTogc3RyaW5nID0gJ2NtYXQtc2VsZWN0LXRyZWUnO1xyXG5cclxuICAgIHByaXZhdGUgX21hdFNlbGVjdDogTWF0U2VsZWN0O1xyXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKHRoaXMudHJhbnNmb3JtZXIsIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLCB0aGlzLmdldENoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPih0aGlzLmdldExldmVsLCB0aGlzLmlzRXhwYW5kYWJsZSk7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdjb21wb25lbnRTZWxlY3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IG1hdFNlbGVjdChtOiBNYXRTZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBleGlzdHNTZWxlY3QgPSAhaXNVbmRlZmluZWQodGhpcy5fbWF0U2VsZWN0KTtcclxuICAgICAgICB0aGlzLl9tYXRTZWxlY3QgPSBtO1xyXG5cclxuICAgICAgICBpZiAoIWV4aXN0c1NlbGVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbml0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXHJcbiAgICBjbGlja2VkT3V0KCk6dm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9tYXRTZWxlY3Q/LnBhbmVsT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRMZXZlbCA9IChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogbnVtYmVyID0+IG5vZGUubGV2ZWw7XHJcblxyXG4gICAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgICBnZXRDaGlsZHJlbiA9IChub2RlOiBDbWF0U2VsZWN0VHJlZU5vZGUpOiBDbWF0U2VsZWN0VHJlZU5vZGVbXSB8IG51bGwgPT4gbm9kZS5jaGlsZHJlbjtcclxuXHJcbiAgICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IGJvb2xlYW4gPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcblxyXG4gICAgaGFzTm9Db250ZW50ID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiA9PiBfbm9kZURhdGEubmFtZSA9PT0gJyc7XHJcblxyXG4gICAgdHJhbnNmb3JtZXIgPSAobm9kZTogQ21hdFNlbGVjdFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdOb2RlID0gdGhpcy5uZXN0ZWROb2RlTWFwLmdldChub2RlKTtcclxuICAgICAgICBjb25zdCBmbGF0Tm9kZSA9IGV4aXN0aW5nTm9kZSAmJiBleGlzdGluZ05vZGUubmFtZSA9PT0gbm9kZS5uYW1lXHJcbiAgICAgICAgICAgID8gZXhpc3RpbmdOb2RlXHJcbiAgICAgICAgICAgIDogbmV3IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUoKTtcclxuICAgICAgICBmbGF0Tm9kZS5pZCA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmxhdE5vZGUubmFtZSA9IG5vZGUubmFtZTtcclxuICAgICAgICBmbGF0Tm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICAgIGZsYXROb2RlLmV4cGFuZGFibGUgPSAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgICAgIHRoaXMuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBub2RlKTtcclxuICAgICAgICB0aGlzLm5lc3RlZE5vZGVNYXAuc2V0KG5vZGUsIGZsYXROb2RlKTtcclxuICAgICAgICByZXR1cm4gZmxhdE5vZGU7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YVNvdXJjZSddKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZURhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3REYXRhLm5leHQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgcGFuZWxDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJhbGxTZWFyY2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3MgPSAnY21hdC1zZWxlY3Qtc2VhcmNoLXBhbmVsIG92ZXJmbG93LXktYXV0byBsZzpvdmVyZmxvdy15LWhpZGRlbiBsZzpob3ZlcjpvdmVyZmxvdy15LWF1dG8gc2Nyb2xsYmFyLWN1c3RvbSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgYXMgc3RyaW5nW10pLnB1c2gocGFuZWxDbGFzcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBbdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MsIHBhbmVsQ2xhc3NdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9tYXRTZWxlY3QucGFuZWxDbGFzcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzLmVudHJpZXNbcGFuZWxDbGFzc10gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3BlbmVkICYmIHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIW9wZW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZE91dE5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGVbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuX2dldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQocGFyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRPdXROb2RlLnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZE91dE5vZGUuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQgJiYgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0Ll9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBtZXJnZSh0aGlzLm92ZXJhbGxGaWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcylcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSwgZGVib3VuY2VUaW1lKDIwMCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hdFNlbGVjdC5wYW5lbE9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhQ2xvbmU6IENtYXRTZWxlY3RUcmVlTm9kZVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShbLi4udGhpcy5kYXRhU291cmNlXSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnI6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkYXRhQ2xvbmUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9hcHBseUNvbHVtbkxldmVsRmlsdGVycyhkYXRhQ2xvbmVbaV0sIHRoaXMub3ZlcmFsbEZpbHRlckNvbnRyb2wudmFsdWUudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFyci5mb3JFYWNoKCh2KSA9PiB7IGRhdGFDbG9uZS5zcGxpY2UodiwgMSk7IH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEYXRhU291cmNlLmRhdGEgPSBkYXRhQ2xvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3REYXRhLm5leHQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmRBbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gICAgfVxyXG4gICAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdmFsdWU6IGFueTtcclxuXHJcbiAgICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICByZXR1cm4gKHRoaXMudG91Y2hlZCAmJiB0aGlzLm5nQ29udHJvbD8uaW52YWxpZCkgPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cclxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaXNOaWwodGhpcy5uZ0NvbnRyb2w/LmRpc2FibGVkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICAgIH1cclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWF0U2VsZWN0Py5zZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tYXRTZWxlY3Q/LnNldERlc2NyaWJlZEJ5SWRzKGlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3Q/LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXNJbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX21hdFNlbGVjdC5wYW5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2luaXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNpbXBsZVRyaWdnZXJMYWJlbEZuKHZhbHVlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlW10pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG5vZGUpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05pbChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc05pbCh0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlKVxyXG4gICAgICAgICAgICAgICAgfHwgdHlwZW9mIHRoaXMuY3VzdG9tVHJpZ2dlckxhYmVsVGVtcGxhdGUgIT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICB8fCB0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtub2RlLmlkfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbjogc3RyaW5nID0gdGhpcy5jdXN0b21UcmlnZ2VyTGFiZWxUZW1wbGF0ZS5yZXBsYWNlKC9bJF1be10oW159XSspW31dL2csIChfLCBrZXkpID0+XHJcbiAgICAgICAgICAgICAgICAhaXNOaWwoKG5vZGUgYXMgYW55KVtrZXldKSAmJiAoYXRMZWFzdFBhcnRpYWxTdWJzdGl0dXRpb24gPSB0cnVlKSA/IChub2RlIGFzIGFueSlba2V5XSA6ICcnKTtcclxuICAgICAgICAgICAgaWYgKGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25vZGUuaWR9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uLnRyaW0oKTtcclxuICAgICAgICB9KS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBXaGV0aGVyIGFsbCB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIG5vZGUgYXJlIHNlbGVjdGVkLiAqL1xyXG4gICAgZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgIHJldHVybiBkZXNjZW5kYW50cy5ldmVyeShjaGlsZCA9PlxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgICBkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVzY2VuZGFudHMuc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiAhZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXHJcbiAgICB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShldmVudDogYW55LCBub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmQ291bnQgPSBkZXNjZW5kYW50cy5maWx0ZXIoY2hpbGQgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICAgICAgICAgICkubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0NvdW50ID0gdGhpcy5jaGVja0NvdW50ICsgMSArIGRlc2NlbmRhbnRzLmxlbmd0aCAtIGRpZmZDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrQ291bnQgLSAxIC0gZGVzY2VuZGFudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24obm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDaGVja1N0YXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUb2dnbGUgYSBsZWFmIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBDaGVjayBhbGwgdGhlIHBhcmVudHMgdG8gc2VlIGlmIHRoZXkgY2hhbmdlZCAqL1xyXG4gICAgdG9kb0xlYWZJdGVtU2VsZWN0aW9uVG9nZ2xlKGV2ZW50OiBhbnksIG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpID8gdGhpcy5jaGVja0NvdW50ICs9IDEgOiB0aGlzLmNoZWNrQ291bnQgLT0gMTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrQWxsUGFyZW50c1NlbGVjdGlvbihub2RlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoZWNrU3RhdGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5fb25DaGFuZ2UobnVsbCk7ICAgICAgICBcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRvZ2dsZVNlbGVjdEFsbChzZWxlY3RBbGxWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChzZWxlY3RBbGxWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbXBhcmVPYmplY3RzKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbzEgJiYgbzIgPyBvMT8ubmFtZSA9PT0gbzI/Lm5hbWUgJiYgbzE/LmlkID09PSBvMj8uaWQgOiBvMSA9PT0gbzI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gICAgcHJpdmF0ZSBfb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWRDaGFuZ2U6ICgpID0+IGFueSA9ICgpID0+IHsgfTtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaW5pdCh2OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDAgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMgJiYgdGhpcy5fbWF0U2VsZWN0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kQWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghaXNOaWwodikpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoZWNrbGlzdFNlbGVjdGlvbih2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZE91dE5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGVbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuX2dldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQocGFyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRPdXROb2RlLnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZmluZE91dE5vZGUuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2hlY2tTdGF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyogQ2hlY2tzIGFsbCB0aGUgcGFyZW50cyB3aGVuIGEgbGVhZiBub2RlIGlzIHNlbGVjdGVkL3Vuc2VsZWN0ZWQgKi9cclxuICAgIHByaXZhdGUgX2NoZWNrQWxsUGFyZW50c1NlbGVjdGlvbihub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHBhcmVudDogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSB8IG51bGwgPSB0aGlzLl9nZXRQYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50LmV4cGFuZGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChwYXJlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9jaGVja1Jvb3ROb2RlU2VsZWN0aW9uKHBhcmVudCk7XHJcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMuX2dldFBhcmVudE5vZGUocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENoZWNrIHJvb3Qgbm9kZSBjaGVja2VkIHN0YXRlIGFuZCBjaGFuZ2UgaXQgYWNjb3JkaW5nbHkgKi9cclxuICAgIHByaXZhdGUgX2NoZWNrUm9vdE5vZGVTZWxlY3Rpb24obm9kZTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5vZGVTZWxlY3RlZCA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XHJcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NBbGxTZWxlY3RlZCA9IGRlc2NlbmRhbnRzLmV2ZXJ5KGNoaWxkID0+XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobm9kZVNlbGVjdGVkICYmICFkZXNjQWxsU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3Qobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgLT0gMTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFub2RlU2VsZWN0ZWQgJiYgKGRlc2NBbGxTZWxlY3RlZCB8fCBkZXNjZW5kYW50cy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCArPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiBHZXQgdGhlIHBhcmVudCBub2RlIG9mIGEgbm9kZSAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0UGFyZW50Tm9kZShub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHRoaXMuZ2V0TGV2ZWwobm9kZSk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50TGV2ZWwgPCAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmluZGV4T2Yobm9kZSkgLSAxO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldExldmVsKGN1cnJlbnROb2RlKSA8IGN1cnJlbnRMZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3VwZGF0ZUNoZWNrbGlzdFNlbGVjdGlvbih2YWx1ZTogYW55W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIGlmICghaXNOaWwodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXJyYXk6IGFueVtdID0gIUFycmF5LmlzQXJyYXkodmFsdWUpID8gW3ZhbHVlXSA6IHZhbHVlO1xyXG4gICAgICAgICAgICB2YWx1ZUFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVGb3VuZCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc05pbChub2RlRm91bmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGVGb3VuZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF91cGRhdGVTZWxlY3QodmFsdWU6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVBcnJheTogYW55W10gPSAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbdmFsdWVdIDogdmFsdWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmFsbFNlYXJjaEVuYWJsZWQpLy/mnInmkJzntKLlip/og73vvIzovazljJbpgInkuK3oioLngrnkuLrlvZPliY3mlbDmja7mupDoioLngrlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVBcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUZvdW5kID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05pbChub2RlRm91bmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChpdGVtKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGVGb3VuZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24oaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2hlY2tTdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseUNvbHVtbkxldmVsRmlsdGVycyhub2RlOiBDbWF0U2VsZWN0VHJlZU5vZGUsIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobm9kZT8uY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRUZW1wID0gdGhpcy5fYXBwbHlDb2x1bW5MZXZlbEZpbHRlcnMobm9kZS5jaGlsZHJlbltpXSwgZmlsdGVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFRlbXApIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRUZW1wIHx8IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5vZGU/LmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gbm9kZVsnbmFtZSddLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGNlbGxWYWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93VG9nZ2xlQWxsQ2hlY2tib3ggJiYgdGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmNoZWNrQ291bnQgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGggJiYgdGhpcy5jaGVja0NvdW50ID4gMDtcclxuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSB0aGlzLmNoZWNrQ291bnQgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aCAmJiB0aGlzLmNoZWNrQ291bnQgPiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaWYobXVsdGlwbGUpe1xyXG48bWF0LXNlbGVjdCAjY29tcG9uZW50U2VsZWN0IG11bHRpcGxlIHBhbmVsQ2xhc3M9XCJvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gIFtmb3JtQ29udHJvbF09XCJzZWxlY3RDb250cm9sXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVPYmplY3RzXCJcclxuICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiPlxyXG4gIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICBAaWYgKCFjdXN0b21UcmlnZ2VyTGFiZWxGbikge1xyXG4gICAge3tzaW1wbGVUcmlnZ2VyTGFiZWxGbihjaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpfX1cclxuICAgIH1cclxuICAgIEBlbHNle1xyXG4gICAge3tjdXN0b21UcmlnZ2VyTGFiZWxGbn19XHJcbiAgICB9XHJcbiAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblxyXG4gIDxkaXYgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiPlxyXG4gICAgQGlmIChvdmVyYWxsU2VhcmNoRW5hYmxlZCkge1xyXG4gICAgPG1hdC1vcHRpb24+XHJcbiAgICAgIDxjbWF0LXNlbGVjdC1zZWFyY2ggW3Nob3dOb0ZvdW5kTGFiZWxdPVwic2hvd05vRm91bmRMYWJlbFwiIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJvdmVyYWxsRmlsdGVyQ29udHJvbFwiIFtjbGVhclNlYXJjaElucHV0XT1cInRydWVcIlxyXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCIgW3RvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwic2hvd1RvZ2dsZUFsbENoZWNrYm94JiZtdWx0aXBsZVwiICh0b2dnbGVBbGwpPVwidG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIj5cclxuICAgICAgPC9jbWF0LXNlbGVjdC1zZWFyY2g+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGNhbk51bGwmJnRyZWVEYXRhU291cmNlLmRhdGEubGVuZ3RoIT09MCkge1xyXG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJwbC0xMFwiIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCI+56m6PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG4gICAgQGZvciAoc2VsZWN0RGF0YSBvZiBtYXRTZWxlY3REYXRhIHwgYXN5bmMgOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiaGlkZGVuXCIgW3ZhbHVlXT1cInNlbGVjdERhdGFcIj57e3NlbGVjdERhdGEubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJ0cmVlRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxyXG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50LG5vZGUpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGUgdGV4dC1jdXJyZW50XCIgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiPnt7bm9kZS5uYW1lfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2V7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWN1cnJlbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCIgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk/J3NlbGVjdGVkJzonJ1wiIChjbGljayk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQsbm9kZSlcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIlxyXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJ0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ21hdF9vdXRsaW5lOmV4cGFuZF9tb3JlJyA6ICdtYXRfb3V0bGluZTpjaGV2cm9uX3JpZ2h0J1wiPlxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRleHQtY3VycmVudFwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIFtpbmRldGVybWluYXRlXT1cImRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY3VycmVudFwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICA8L21hdC10cmVlPlxyXG4gIDwvZGl2PlxyXG48L21hdC1zZWxlY3Q+XHJcbn1cclxuQGVsc2Uge1xyXG48bWF0LXNlbGVjdCAjY29tcG9uZW50U2VsZWN0IHBhbmVsQ2xhc3M9XCJvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gIFtmb3JtQ29udHJvbF09XCJzZWxlY3RDb250cm9sXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVPYmplY3RzXCJcclxuICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiPlxyXG4gIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICBAaWYgKCFjdXN0b21UcmlnZ2VyTGFiZWxGbikge1xyXG4gICAge3tzaW1wbGVUcmlnZ2VyTGFiZWxGbihjaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpfX1cclxuICAgIH1cclxuICAgIEBlbHNle1xyXG4gICAge3tjdXN0b21UcmlnZ2VyTGFiZWxGbn19XHJcbiAgICB9XHJcbiAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblxyXG4gIDxkaXYgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiPlxyXG4gICAgQGlmIChvdmVyYWxsU2VhcmNoRW5hYmxlZCkge1xyXG4gICAgPG1hdC1vcHRpb24+XHJcbiAgICAgIDxjbWF0LXNlbGVjdC1zZWFyY2ggW3Nob3dOb0ZvdW5kTGFiZWxdPVwic2hvd05vRm91bmRMYWJlbFwiIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJvdmVyYWxsRmlsdGVyQ29udHJvbFwiIFtjbGVhclNlYXJjaElucHV0XT1cInRydWVcIlxyXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCIgW3RvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwic2hvd1RvZ2dsZUFsbENoZWNrYm94JiZtdWx0aXBsZVwiICh0b2dnbGVBbGwpPVwidG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIj5cclxuICAgICAgPC9jbWF0LXNlbGVjdC1zZWFyY2g+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGNhbk51bGwmJnRyZWVEYXRhU291cmNlLmRhdGEubGVuZ3RoIT09MCkge1xyXG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJwbC0xMFwiIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCI+56m6PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG4gICAgQGZvciAoc2VsZWN0RGF0YSBvZiBtYXRTZWxlY3REYXRhIHwgYXN5bmMgOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiaGlkZGVuXCIgW3ZhbHVlXT1cInNlbGVjdERhdGFcIj57e3NlbGVjdERhdGEubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJ0cmVlRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxyXG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50LG5vZGUpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGUgdGV4dC1jdXJyZW50XCIgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiPnt7bm9kZS5uYW1lfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2V7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWN1cnJlbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCIgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk/J3NlbGVjdGVkJzonJ1wiIChjbGljayk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQsbm9kZSlcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIlxyXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJ0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ21hdF9vdXRsaW5lOmV4cGFuZF9tb3JlJyA6ICdtYXRfb3V0bGluZTpjaGV2cm9uX3JpZ2h0J1wiPlxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRleHQtY3VycmVudFwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIFtpbmRldGVybWluYXRlXT1cImRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY3VycmVudFwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICA8L21hdC10cmVlPlxyXG4gIDwvZGl2PlxyXG48L21hdC1zZWxlY3Q+XHJcbn0iXX0=
565
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFn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dUJBQXVCO2tCQVpuQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx5QkFBeUIsRUFBRSxDQUFDLFlBQ3pFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUseUJBQXlCO3dCQUMvRCxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDOzswQkEyRDNGLFFBQVE7OzBCQUFJLElBQUk7eUVBdER0QixFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQTZDK0MsU0FBUztzQkFBN0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBVS9DLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBNEkxQixXQUFXO3NCQURkLEtBQUs7Z0JBV0YsS0FBSztzQkFEUixLQUFLO2dCQStCRixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBBc3luY1BpcGUsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBTZWxmLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IGlzTmlsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnY21hdC9jb21wb25lbnRzL3NlbGVjdC1zZWFyY2gnO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIH0gZnJvbSAnLi9zZWxlY3QtdHJlZS5mbGF0bm9kZSc7XHJcbmltcG9ydCB7IENtYXRTZWxlY3RUcmVlTm9kZSB9IGZyb20gJy4vc2VsZWN0LXRyZWUubm9kZSc7XHJcblxyXG5sZXQgTkVYVF9JRCA9IDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1zZWxlY3QtdHJlZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IENtYXRTZWxlY3RUcmVlQ29tcG9uZW50IH1dLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0U2VsZWN0VHJlZScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgQ21hdFNlbGVjdFNlYXJjaENvbXBvbmVudCxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRUcmVlTW9kdWxlLCBOZ0NsYXNzLCBNYXRCdXR0b25Nb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBBc3luY1BpcGUsIE5nU3R5bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0U2VsZWN0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkID0gYGNtYXQtc2VsZWN0LXRyZWUtJHtORVhUX0lEKyt9YDtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhU291cmNlOiBDbWF0U2VsZWN0VHJlZU5vZGVbXTtcclxuXHJcbiAgICBASW5wdXQoKSBub0VudHJpZXNGb3VuZExhYmVsID0gJ+aXoOe7k+aenCc7XHJcblxyXG4gICAgQElucHV0KCkgc2hvd05vRm91bmRMYWJlbCA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBvdmVyYWxsU2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgY2FuTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIGN1c3RvbVRyaWdnZXJMYWJlbEZuOiAodmFsdWU6IENtYXRTZWxlY3RUcmVlTm9kZVtdKSA9PiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgY3VzdG9tVHJpZ2dlckxhYmVsVGVtcGxhdGU6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBleHBhbmRhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dUb2dnbGVBbGxDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGZsYXROb2RlTWFwID0gbmV3IE1hcDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlLCBDbWF0U2VsZWN0VHJlZU5vZGU+KCk7XHJcblxyXG4gICAgbmVzdGVkTm9kZU1hcCA9IG5ldyBNYXA8Q21hdFNlbGVjdFRyZWVOb2RlLCBDbWF0U2VsZWN0VHJlZUZsYXROb2RlPigpO1xyXG5cclxuICAgIHNlbGVjdGVkUGFyZW50OiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPjtcclxuXHJcbiAgICB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPENtYXRTZWxlY3RUcmVlTm9kZSwgQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZT47XHJcblxyXG4gICAgY2hlY2tsaXN0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPENtYXRTZWxlY3RUcmVlRmxhdE5vZGU+KHRydWUpO1xyXG5cclxuICAgIHRyZWVEYXRhU291cmNlOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8Q21hdFNlbGVjdFRyZWVOb2RlLCBDbWF0U2VsZWN0VHJlZUZsYXROb2RlPjtcclxuXHJcbiAgICBvdmVyYWxsRmlsdGVyQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIGlzQ2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNoZWNrQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgc2VsZWN0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgIG1hdFNlbGVjdERhdGE6IFJlcGxheVN1YmplY3Q8YW55W10+ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55W10+KDEpO1xyXG5cclxuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0b3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBjb250cm9sVHlwZTogc3RyaW5nID0gJ2NtYXQtc2VsZWN0LXRyZWUnO1xyXG5cclxuICAgIHByaXZhdGUgX21hdFNlbGVjdDogTWF0U2VsZWN0O1xyXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKHRoaXMudHJhbnNmb3JtZXIsIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLCB0aGlzLmdldENoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPih0aGlzLmdldExldmVsLCB0aGlzLmlzRXhwYW5kYWJsZSk7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdjb21wb25lbnRTZWxlY3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IG1hdFNlbGVjdChtOiBNYXRTZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBleGlzdHNTZWxlY3QgPSAhaXNVbmRlZmluZWQodGhpcy5fbWF0U2VsZWN0KTtcclxuICAgICAgICB0aGlzLl9tYXRTZWxlY3QgPSBtO1xyXG5cclxuICAgICAgICBpZiAoIWV4aXN0c1NlbGVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbml0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXHJcbiAgICBjbGlja2VkT3V0KCk6dm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9tYXRTZWxlY3Q/LnBhbmVsT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRMZXZlbCA9IChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogbnVtYmVyID0+IG5vZGUubGV2ZWw7XHJcblxyXG4gICAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgICBnZXRDaGlsZHJlbiA9IChub2RlOiBDbWF0U2VsZWN0VHJlZU5vZGUpOiBDbWF0U2VsZWN0VHJlZU5vZGVbXSB8IG51bGwgPT4gbm9kZS5jaGlsZHJlbjtcclxuXHJcbiAgICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IGJvb2xlYW4gPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcblxyXG4gICAgaGFzTm9Db250ZW50ID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiA9PiBfbm9kZURhdGEubmFtZSA9PT0gJyc7XHJcblxyXG4gICAgdHJhbnNmb3JtZXIgPSAobm9kZTogQ21hdFNlbGVjdFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdOb2RlID0gdGhpcy5uZXN0ZWROb2RlTWFwLmdldChub2RlKTtcclxuICAgICAgICBjb25zdCBmbGF0Tm9kZSA9IGV4aXN0aW5nTm9kZSAmJiBleGlzdGluZ05vZGUubmFtZSA9PT0gbm9kZS5uYW1lXHJcbiAgICAgICAgICAgID8gZXhpc3RpbmdOb2RlXHJcbiAgICAgICAgICAgIDogbmV3IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUoKTtcclxuICAgICAgICBmbGF0Tm9kZS5pZCA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmxhdE5vZGUubmFtZSA9IG5vZGUubmFtZTtcclxuICAgICAgICBmbGF0Tm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICAgIGZsYXROb2RlLmV4cGFuZGFibGUgPSAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgICAgIHRoaXMuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBub2RlKTtcclxuICAgICAgICB0aGlzLm5lc3RlZE5vZGVNYXAuc2V0KG5vZGUsIGZsYXROb2RlKTtcclxuICAgICAgICByZXR1cm4gZmxhdE5vZGU7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YVNvdXJjZSddKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZURhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3REYXRhLm5leHQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgcGFuZWxDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJhbGxTZWFyY2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3MgPSAnY21hdC1zZWxlY3Qtc2VhcmNoLXBhbmVsIG92ZXJmbG93LXktYXV0byBsZzpvdmVyZmxvdy15LWhpZGRlbiBsZzpob3ZlcjpvdmVyZmxvdy15LWF1dG8gc2Nyb2xsYmFyLWN1c3RvbSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgYXMgc3RyaW5nW10pLnB1c2gocGFuZWxDbGFzcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBbdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MsIHBhbmVsQ2xhc3NdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9tYXRTZWxlY3QucGFuZWxDbGFzcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzLmVudHJpZXNbcGFuZWxDbGFzc10gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3BlbmVkICYmIHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIW9wZW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZE91dE5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGVbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuX2dldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQocGFyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRPdXROb2RlLnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZE91dE5vZGUuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQgJiYgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0Ll9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBtZXJnZSh0aGlzLm92ZXJhbGxGaWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcylcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSwgZGVib3VuY2VUaW1lKDIwMCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hdFNlbGVjdC5wYW5lbE9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhQ2xvbmU6IENtYXRTZWxlY3RUcmVlTm9kZVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShbLi4udGhpcy5kYXRhU291cmNlXSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnI6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkYXRhQ2xvbmUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9hcHBseUNvbHVtbkxldmVsRmlsdGVycyhkYXRhQ2xvbmVbaV0sIHRoaXMub3ZlcmFsbEZpbHRlckNvbnRyb2wudmFsdWUudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFyci5mb3JFYWNoKCh2KSA9PiB7IGRhdGFDbG9uZS5zcGxpY2UodiwgMSk7IH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEYXRhU291cmNlLmRhdGEgPSBkYXRhQ2xvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3REYXRhLm5leHQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmRBbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gICAgfVxyXG4gICAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdmFsdWU6IGFueTtcclxuXHJcbiAgICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICByZXR1cm4gKHRoaXMudG91Y2hlZCAmJiB0aGlzLm5nQ29udHJvbD8uaW52YWxpZCkgPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cclxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaXNOaWwodGhpcy5uZ0NvbnRyb2w/LmRpc2FibGVkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICAgIH1cclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWF0U2VsZWN0Py5zZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tYXRTZWxlY3Q/LnNldERlc2NyaWJlZEJ5SWRzKGlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3Q/LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXNJbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX21hdFNlbGVjdC5wYW5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2luaXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNpbXBsZVRyaWdnZXJMYWJlbEZuKHZhbHVlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlW10pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG5vZGUpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05pbChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc05pbCh0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlKVxyXG4gICAgICAgICAgICAgICAgfHwgdHlwZW9mIHRoaXMuY3VzdG9tVHJpZ2dlckxhYmVsVGVtcGxhdGUgIT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICB8fCB0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtub2RlLmlkfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbjogc3RyaW5nID0gdGhpcy5jdXN0b21UcmlnZ2VyTGFiZWxUZW1wbGF0ZS5yZXBsYWNlKC9bJF1be10oW159XSspW31dL2csIChfLCBrZXkpID0+XHJcbiAgICAgICAgICAgICAgICAhaXNOaWwoKG5vZGUgYXMgYW55KVtrZXldKSAmJiAoYXRMZWFzdFBhcnRpYWxTdWJzdGl0dXRpb24gPSB0cnVlKSA/IChub2RlIGFzIGFueSlba2V5XSA6ICcnKTtcclxuICAgICAgICAgICAgaWYgKGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25vZGUuaWR9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uLnRyaW0oKTtcclxuICAgICAgICB9KS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBXaGV0aGVyIGFsbCB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIG5vZGUgYXJlIHNlbGVjdGVkLiAqL1xyXG4gICAgZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgIHJldHVybiBkZXNjZW5kYW50cy5ldmVyeShjaGlsZCA9PlxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgICBkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVzY2VuZGFudHMuc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiAhZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXHJcbiAgICB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShldmVudDogYW55LCBub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmQ291bnQgPSBkZXNjZW5kYW50cy5maWx0ZXIoY2hpbGQgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICAgICAgICAgICkubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0NvdW50ID0gdGhpcy5jaGVja0NvdW50ICsgMSArIGRlc2NlbmRhbnRzLmxlbmd0aCAtIGRpZmZDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrQ291bnQgLSAxIC0gZGVzY2VuZGFudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24obm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDaGVja1N0YXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUb2dnbGUgYSBsZWFmIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBDaGVjayBhbGwgdGhlIHBhcmVudHMgdG8gc2VlIGlmIHRoZXkgY2hhbmdlZCAqL1xyXG4gICAgdG9kb0xlYWZJdGVtU2VsZWN0aW9uVG9nZ2xlKGV2ZW50OiBhbnksIG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpID8gdGhpcy5jaGVja0NvdW50ICs9IDEgOiB0aGlzLmNoZWNrQ291bnQgLT0gMTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrQWxsUGFyZW50c1NlbGVjdGlvbihub2RlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoZWNrU3RhdGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5fb25DaGFuZ2UobnVsbCk7ICAgICAgICBcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRvZ2dsZVNlbGVjdEFsbChzZWxlY3RBbGxWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChzZWxlY3RBbGxWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbXBhcmVPYmplY3RzKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbzEgJiYgbzIgPyBvMT8ubmFtZSA9PT0gbzI/Lm5hbWUgJiYgbzE/LmlkID09PSBvMj8uaWQgOiBvMSA9PT0gbzI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gICAgcHJpdmF0ZSBfb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWRDaGFuZ2U6ICgpID0+IGFueSA9ICgpID0+IHsgfTtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaW5pdCh2OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDAgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMgJiYgdGhpcy5fbWF0U2VsZWN0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kQWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghaXNOaWwodikpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoZWNrbGlzdFNlbGVjdGlvbih2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZE91dE5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGVbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuX2dldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQocGFyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRPdXROb2RlLnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZmluZE91dE5vZGUuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2hlY2tTdGF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyogQ2hlY2tzIGFsbCB0aGUgcGFyZW50cyB3aGVuIGEgbGVhZiBub2RlIGlzIHNlbGVjdGVkL3Vuc2VsZWN0ZWQgKi9cclxuICAgIHByaXZhdGUgX2NoZWNrQWxsUGFyZW50c1NlbGVjdGlvbihub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHBhcmVudDogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSB8IG51bGwgPSB0aGlzLl9nZXRQYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50LmV4cGFuZGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChwYXJlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9jaGVja1Jvb3ROb2RlU2VsZWN0aW9uKHBhcmVudCk7XHJcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMuX2dldFBhcmVudE5vZGUocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENoZWNrIHJvb3Qgbm9kZSBjaGVja2VkIHN0YXRlIGFuZCBjaGFuZ2UgaXQgYWNjb3JkaW5nbHkgKi9cclxuICAgIHByaXZhdGUgX2NoZWNrUm9vdE5vZGVTZWxlY3Rpb24obm9kZTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5vZGVTZWxlY3RlZCA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XHJcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NBbGxTZWxlY3RlZCA9IGRlc2NlbmRhbnRzLmV2ZXJ5KGNoaWxkID0+XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobm9kZVNlbGVjdGVkICYmICFkZXNjQWxsU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3Qobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgLT0gMTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFub2RlU2VsZWN0ZWQgJiYgKGRlc2NBbGxTZWxlY3RlZCB8fCBkZXNjZW5kYW50cy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCArPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiBHZXQgdGhlIHBhcmVudCBub2RlIG9mIGEgbm9kZSAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0UGFyZW50Tm9kZShub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHRoaXMuZ2V0TGV2ZWwobm9kZSk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50TGV2ZWwgPCAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmluZGV4T2Yobm9kZSkgLSAxO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldExldmVsKGN1cnJlbnROb2RlKSA8IGN1cnJlbnRMZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3VwZGF0ZUNoZWNrbGlzdFNlbGVjdGlvbih2YWx1ZTogYW55W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIGlmICghaXNOaWwodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXJyYXk6IGFueVtdID0gIUFycmF5LmlzQXJyYXkodmFsdWUpID8gW3ZhbHVlXSA6IHZhbHVlO1xyXG4gICAgICAgICAgICB2YWx1ZUFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVGb3VuZCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc05pbChub2RlRm91bmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGVGb3VuZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF91cGRhdGVTZWxlY3QodmFsdWU6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVBcnJheTogYW55W10gPSAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbdmFsdWVdIDogdmFsdWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmFsbFNlYXJjaEVuYWJsZWQpLy/mnInmkJzntKLlip/og73vvIzovazljJbpgInkuK3oioLngrnkuLrlvZPliY3mlbDmja7mupDoioLngrlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVBcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUZvdW5kID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05pbChub2RlRm91bmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tDb3VudCArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChpdGVtKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGVGb3VuZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24oaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2hlY2tTdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseUNvbHVtbkxldmVsRmlsdGVycyhub2RlOiBDbWF0U2VsZWN0VHJlZU5vZGUsIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobm9kZT8uY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRUZW1wID0gdGhpcy5fYXBwbHlDb2x1bW5MZXZlbEZpbHRlcnMobm9kZS5jaGlsZHJlbltpXSwgZmlsdGVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFRlbXApIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRUZW1wIHx8IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5vZGU/LmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gbm9kZVsnbmFtZSddLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGNlbGxWYWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tTdGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93VG9nZ2xlQWxsQ2hlY2tib3ggJiYgdGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmNoZWNrQ291bnQgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGggJiYgdGhpcy5jaGVja0NvdW50ID4gMDtcclxuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSB0aGlzLmNoZWNrQ291bnQgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aCAmJiB0aGlzLmNoZWNrQ291bnQgPiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaWYobXVsdGlwbGUpe1xyXG48bWF0LXNlbGVjdCAjY29tcG9uZW50U2VsZWN0IG11bHRpcGxlIHBhbmVsQ2xhc3M9XCJvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gIFtmb3JtQ29udHJvbF09XCJzZWxlY3RDb250cm9sXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVPYmplY3RzXCJcclxuICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiPlxyXG4gIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICBAaWYgKCFjdXN0b21UcmlnZ2VyTGFiZWxGbikge1xyXG4gICAge3tzaW1wbGVUcmlnZ2VyTGFiZWxGbihjaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpfX1cclxuICAgIH1cclxuICAgIEBlbHNle1xyXG4gICAge3tjdXN0b21UcmlnZ2VyTGFiZWxGbn19XHJcbiAgICB9XHJcbiAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblxyXG4gIDxkaXYgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiPlxyXG4gICAgQGlmIChvdmVyYWxsU2VhcmNoRW5hYmxlZCkge1xyXG4gICAgPG1hdC1vcHRpb24+XHJcbiAgICAgIDxjbWF0LXNlbGVjdC1zZWFyY2ggW3Nob3dOb0ZvdW5kTGFiZWxdPVwic2hvd05vRm91bmRMYWJlbFwiIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJvdmVyYWxsRmlsdGVyQ29udHJvbFwiIFtjbGVhclNlYXJjaElucHV0XT1cInRydWVcIlxyXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCIgW3RvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwic2hvd1RvZ2dsZUFsbENoZWNrYm94JiZtdWx0aXBsZVwiICh0b2dnbGVBbGwpPVwidG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIj5cclxuICAgICAgPC9jbWF0LXNlbGVjdC1zZWFyY2g+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGNhbk51bGwmJnRyZWVEYXRhU291cmNlLmRhdGEubGVuZ3RoIT09MCkge1xyXG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJwbC0xMFwiIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCI+56m6PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG4gICAgQGZvciAoc2VsZWN0RGF0YSBvZiBtYXRTZWxlY3REYXRhIHwgYXN5bmMgOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiaGlkZGVuXCIgW3ZhbHVlXT1cInNlbGVjdERhdGFcIj57e3NlbGVjdERhdGEubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJ0cmVlRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxyXG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50LG5vZGUpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGUgdGV4dC1jdXJyZW50XCIgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiPnt7bm9kZS5uYW1lfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2V7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWN1cnJlbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCIgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk/J3NlbGVjdGVkJzonJ1wiIChjbGljayk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQsbm9kZSlcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIlxyXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJ0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ21hdF9vdXRsaW5lOmV4cGFuZF9tb3JlJyA6ICdtYXRfb3V0bGluZTpjaGV2cm9uX3JpZ2h0J1wiPlxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRleHQtY3VycmVudFwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIFtpbmRldGVybWluYXRlXT1cImRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY3VycmVudFwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICA8L21hdC10cmVlPlxyXG4gIDwvZGl2PlxyXG48L21hdC1zZWxlY3Q+XHJcbn1cclxuQGVsc2Uge1xyXG48bWF0LXNlbGVjdCAjY29tcG9uZW50U2VsZWN0IHBhbmVsQ2xhc3M9XCJvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gIFtmb3JtQ29udHJvbF09XCJzZWxlY3RDb250cm9sXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVPYmplY3RzXCJcclxuICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiPlxyXG4gIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICBAaWYgKCFjdXN0b21UcmlnZ2VyTGFiZWxGbikge1xyXG4gICAge3tzaW1wbGVUcmlnZ2VyTGFiZWxGbihjaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpfX1cclxuICAgIH1cclxuICAgIEBlbHNle1xyXG4gICAge3tjdXN0b21UcmlnZ2VyTGFiZWxGbn19XHJcbiAgICB9XHJcbiAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblxyXG4gIDxkaXYgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiPlxyXG4gICAgQGlmIChvdmVyYWxsU2VhcmNoRW5hYmxlZCkge1xyXG4gICAgPG1hdC1vcHRpb24+XHJcbiAgICAgIDxjbWF0LXNlbGVjdC1zZWFyY2ggW3Nob3dOb0ZvdW5kTGFiZWxdPVwic2hvd05vRm91bmRMYWJlbFwiIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJvdmVyYWxsRmlsdGVyQ29udHJvbFwiIFtjbGVhclNlYXJjaElucHV0XT1cInRydWVcIlxyXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCIgW3RvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwic2hvd1RvZ2dsZUFsbENoZWNrYm94JiZtdWx0aXBsZVwiICh0b2dnbGVBbGwpPVwidG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIj5cclxuICAgICAgPC9jbWF0LXNlbGVjdC1zZWFyY2g+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGNhbk51bGwmJnRyZWVEYXRhU291cmNlLmRhdGEubGVuZ3RoIT09MCkge1xyXG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJwbC0xMFwiIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCI+56m6PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG4gICAgQGZvciAoc2VsZWN0RGF0YSBvZiBtYXRTZWxlY3REYXRhIHwgYXN5bmMgOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiaGlkZGVuXCIgW3ZhbHVlXT1cInNlbGVjdERhdGFcIj57e3NlbGVjdERhdGEubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJ0cmVlRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxyXG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50LG5vZGUpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGUgdGV4dC1jdXJyZW50XCIgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiPnt7bm9kZS5uYW1lfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2V7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWN1cnJlbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCIgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk/J3NlbGVjdGVkJzonJ1wiIChjbGljayk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQsbm9kZSlcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIlxyXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJ0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ21hdF9vdXRsaW5lOmV4cGFuZF9tb3JlJyA6ICdtYXRfb3V0bGluZTpjaGV2cm9uX3JpZ2h0J1wiPlxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRleHQtY3VycmVudFwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIFtpbmRldGVybWluYXRlXT1cImRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY3VycmVudFwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICA8L21hdC10cmVlPlxyXG4gIDwvZGl2PlxyXG48L21hdC1zZWxlY3Q+XHJcbn0iXX0=
@@ -4,10 +4,10 @@ import { MatIconModule } from '@angular/material/icon';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/material/icon";
6
6
  export class CmatTimelineItemIconDirective {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: CmatTimelineItemIconDirective, isStandalone: true, selector: "ng-template[cmatTimelineItemIcon]", ngImport: i0 }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.10", type: CmatTimelineItemIconDirective, isStandalone: true, selector: "ng-template[cmatTimelineItemIcon]", ngImport: i0 }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemIconDirective, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemIconDirective, decorators: [{
11
11
  type: Directive,
12
12
  args: [{
13
13
  selector: 'ng-template[cmatTimelineItemIcon]',
@@ -15,10 +15,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
15
15
  }]
16
16
  }] });
17
17
  export class CmatTimelineItemLabelDirective {
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: CmatTimelineItemLabelDirective, isStandalone: true, selector: "ng-template[cmatTimelineItemLabel]", ngImport: i0 }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.10", type: CmatTimelineItemLabelDirective, isStandalone: true, selector: "ng-template[cmatTimelineItemLabel]", ngImport: i0 }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemLabelDirective, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemLabelDirective, decorators: [{
22
22
  type: Directive,
23
23
  args: [{
24
24
  selector: 'ng-template[cmatTimelineItemLabel]',
@@ -37,10 +37,10 @@ export class CmatTimelineItemComponent {
37
37
  this._fillEl.nativeElement.style.minHeight = this._contentEl.nativeElement.offsetHeight + 'px';
38
38
  this._fillEl.nativeElement.style.minWidth = 'unset';
39
39
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatTimelineItemComponent, isStandalone: true, selector: "cmat-timeline-item", inputs: { label: "label", icon: "icon", svgIcon: "svgIcon", iconUrl: "iconUrl" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "customIconTpl", first: true, predicate: CmatTimelineItemIconDirective, descendants: true, read: TemplateRef }, { propertyName: "customLabelTpl", first: true, predicate: CmatTimelineItemLabelDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_contentEl", first: true, predicate: ["contentEl"], descendants: true, static: true }, { propertyName: "_fillEl", first: true, predicate: ["fillEl"], descendants: true, static: true }], exportAs: ["cmatTimelineItem"], ngImport: i0, template: "<div #fillEl class=\"cmat-timeline-item-fill\"></div>\r\n\r\n<div class=\"cmat-timeline-item-timeline\">\r\n\r\n <ng-container *ngTemplateOutlet=\"customIconTpl ? customIconTpl : iconTpl\"></ng-container>\r\n\r\n <ng-template #iconTpl>\r\n @if (icon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\">{{ icon }}</mat-icon>\r\n } @else {\r\n @if (svgIcon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\r\n } @else {\r\n @if (iconUrl) {\r\n <img alt=\"icon\" class=\"cmat-timeline-item-icon\" [src]=\"iconUrl\" />\r\n }\r\n }\r\n }\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-container *ngTemplateOutlet=\"customLabelTpl ? customLabelTpl : labelTpl\"></ng-container>\r\n\r\n <ng-template #labelTpl>\r\n @if (label) {\r\n <div class=\"mat-caption cmat-timeline-item-label\">{{ label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <div class=\"cmat-timeline-item-line\"></div>\r\n\r\n</div>\r\n\r\n<div #contentEl class=\"cmat-timeline-item-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cmat-timeline-item{display:flex;gap:24px}.cmat-timeline-item:last-child .cmat-timeline-item-line{display:none}.cmat-timeline-item-timeline{display:flex;gap:8px}.cmat-timeline-item-icon{margin:0;padding:0;width:24px;height:24px;object-fit:cover;border-radius:50%}.cmat-timeline-item-line{flex:1;background-color:var(--cmat-divider)}.cmat-timeline-item-fill,.cmat-timeline-item-content{flex:1}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child){margin-bottom:8px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-timeline{min-width:48px;max-width:48px;flex-direction:column;justify-content:flex-start;align-items:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-label{width:100%;text-align:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-line{width:1px;height:auto;min-height:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-bottom:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:row}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child){margin-right:8px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-timeline{min-height:48px;max-height:48px;flex-direction:row;justify-content:flex-start;align-items:center}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-label{width:auto;text-align:left}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-line{width:auto;min-width:8px;height:1px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-right:8px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: CmatTimelineItemComponent, isStandalone: true, selector: "cmat-timeline-item", inputs: { label: "label", icon: "icon", svgIcon: "svgIcon", iconUrl: "iconUrl" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "customIconTpl", first: true, predicate: CmatTimelineItemIconDirective, descendants: true, read: TemplateRef }, { propertyName: "customLabelTpl", first: true, predicate: CmatTimelineItemLabelDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_contentEl", first: true, predicate: ["contentEl"], descendants: true, static: true }, { propertyName: "_fillEl", first: true, predicate: ["fillEl"], descendants: true, static: true }], exportAs: ["cmatTimelineItem"], ngImport: i0, template: "<div #fillEl class=\"cmat-timeline-item-fill\"></div>\r\n\r\n<div class=\"cmat-timeline-item-timeline\">\r\n\r\n <ng-container *ngTemplateOutlet=\"customIconTpl ? customIconTpl : iconTpl\"></ng-container>\r\n\r\n <ng-template #iconTpl>\r\n @if (icon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\">{{ icon }}</mat-icon>\r\n } @else {\r\n @if (svgIcon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\r\n } @else {\r\n @if (iconUrl) {\r\n <img alt=\"icon\" class=\"cmat-timeline-item-icon\" [src]=\"iconUrl\" />\r\n }\r\n }\r\n }\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-container *ngTemplateOutlet=\"customLabelTpl ? customLabelTpl : labelTpl\"></ng-container>\r\n\r\n <ng-template #labelTpl>\r\n @if (label) {\r\n <div class=\"mat-caption cmat-timeline-item-label\">{{ label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <div class=\"cmat-timeline-item-line\"></div>\r\n\r\n</div>\r\n\r\n<div #contentEl class=\"cmat-timeline-item-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cmat-timeline-item{display:flex;gap:24px}.cmat-timeline-item:last-child .cmat-timeline-item-line{display:none}.cmat-timeline-item-timeline{display:flex;gap:8px}.cmat-timeline-item-icon{margin:0;padding:0;width:24px;height:24px;object-fit:cover;border-radius:50%}.cmat-timeline-item-line{flex:1;background-color:var(--cmat-divider)}.cmat-timeline-item-fill,.cmat-timeline-item-content{flex:1}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child){margin-bottom:8px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-timeline{min-width:48px;max-width:48px;flex-direction:column;justify-content:flex-start;align-items:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-label{width:100%;text-align:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-line{width:1px;height:auto;min-height:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-bottom:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:row}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child){margin-right:8px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-timeline{min-height:48px;max-height:48px;flex-direction:row;justify-content:flex-start;align-items:center}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-label{width:auto;text-align:left}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-line{width:auto;min-width:8px;height:1px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-right:8px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTimelineItemComponent, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatTimelineItemComponent, decorators: [{
44
44
  type: Component,
45
45
  args: [{ selector: 'cmat-timeline-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTimelineItem', standalone: true, imports: [MatIconModule, NgTemplateOutlet], template: "<div #fillEl class=\"cmat-timeline-item-fill\"></div>\r\n\r\n<div class=\"cmat-timeline-item-timeline\">\r\n\r\n <ng-container *ngTemplateOutlet=\"customIconTpl ? customIconTpl : iconTpl\"></ng-container>\r\n\r\n <ng-template #iconTpl>\r\n @if (icon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\">{{ icon }}</mat-icon>\r\n } @else {\r\n @if (svgIcon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\r\n } @else {\r\n @if (iconUrl) {\r\n <img alt=\"icon\" class=\"cmat-timeline-item-icon\" [src]=\"iconUrl\" />\r\n }\r\n }\r\n }\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-container *ngTemplateOutlet=\"customLabelTpl ? customLabelTpl : labelTpl\"></ng-container>\r\n\r\n <ng-template #labelTpl>\r\n @if (label) {\r\n <div class=\"mat-caption cmat-timeline-item-label\">{{ label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <div class=\"cmat-timeline-item-line\"></div>\r\n\r\n</div>\r\n\r\n<div #contentEl class=\"cmat-timeline-item-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cmat-timeline-item{display:flex;gap:24px}.cmat-timeline-item:last-child .cmat-timeline-item-line{display:none}.cmat-timeline-item-timeline{display:flex;gap:8px}.cmat-timeline-item-icon{margin:0;padding:0;width:24px;height:24px;object-fit:cover;border-radius:50%}.cmat-timeline-item-line{flex:1;background-color:var(--cmat-divider)}.cmat-timeline-item-fill,.cmat-timeline-item-content{flex:1}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child){margin-bottom:8px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-timeline{min-width:48px;max-width:48px;flex-direction:column;justify-content:flex-start;align-items:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-label{width:100%;text-align:center}.cmat-timeline-vertical>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-line{width:1px;height:auto;min-height:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-bottom:8px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-bottom:48px}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-vertical.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-bottom:0}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:row}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:row}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{text-align:left;display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:row-reverse}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-vertical.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{text-align:right;display:flex;justify-content:flex-end;align-items:flex-start}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item{justify-content:flex-start;align-items:stretch}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child){margin-right:8px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-fill,.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item:not(:last-child) .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-timeline{min-height:48px;max-height:48px;flex-direction:row;justify-content:flex-start;align-items:center}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-label{width:auto;text-align:left}.cmat-timeline-horizontal .cmat-timeline-content>.cmat-timeline-item .cmat-timeline-item-line{width:auto;min-width:8px;height:1px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child{margin-right:8px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-line{display:block}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-fill,.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:last-child .cmat-timeline-item-content{margin-right:48px}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-line{display:none}.cmat-timeline-horizontal.cmat-timeline-reverse>.cmat-timeline-content .cmat-timeline-item:first-child .cmat-timeline-item-content{margin-right:0}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item{flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-start>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n){flex-direction:column}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(2n) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-start}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd){flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-center-alt>.cmat-timeline-content .cmat-timeline-item:nth-child(odd) .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item{flex-direction:column-reverse}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-content{display:flex;justify-content:flex-start;align-items:flex-end}.cmat-timeline-horizontal.cmat-timeline-end>.cmat-timeline-content .cmat-timeline-item .cmat-timeline-item-fill{display:none}\n"] }]
46
46
  }], propDecorators: { label: [{
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
67
67
  type: ViewChild,
68
68
  args: ['fillEl', { static: true }]
69
69
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS90aW1lbGluZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy90aW1lbGluZS90aW1lbGluZS1pdGVtL3RpbWVsaW5lLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBT3ZELE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFTRCxNQUFNLE9BQU8sOEJBQThCOzhHQUE5Qiw4QkFBOEI7a0dBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0NBQW9DO29CQUM5QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBZUQsTUFBTSxPQUFPLHlCQUF5QjtJQVZ0QztRQXdCd0IsVUFBSyxHQUFDLG9CQUFvQixDQUFDO0tBMEJsRDtJQVZDLDRCQUE0QjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUVELDhCQUE4QjtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDL0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDdEQsQ0FBQzs4R0F0Q1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsNFBBZ0J0Qiw2QkFBNkIsMkJBQVUsV0FBVyw4REFHbEQsOEJBQThCLDJCQUFVLFdBQVcsc1JDN0RuRSx1a0NBb0NNLG9uUURJTSxhQUFhLG9MQUFFLGdCQUFnQjs7MkZBRTlCLHlCQUF5QjtrQkFWckMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDOzhCQUsxQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBR2dCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFHcEIsYUFBYTtzQkFEWixZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJbEUsY0FBYztzQkFEYixZQUFZO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJM0QsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUloQyxPQUFPO3NCQURkLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2NtYXRUaW1lbGluZUl0ZW1JY29uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFRpbWVsaW5lSXRlbUljb25EaXJlY3RpdmUge1xyXG59XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtjbWF0VGltZWxpbmVJdGVtTGFiZWxdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGltZWxpbmVJdGVtTGFiZWxEaXJlY3RpdmUge1xyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbWF0LXRpbWVsaW5lLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBleHBvcnRBczogJ2NtYXRUaW1lbGluZUl0ZW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGltZWxpbmVJdGVtQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbj86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3ZnSWNvbj86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvblVybD86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcz0nY21hdC10aW1lbGluZS1pdGVtJztcclxuICBcclxuICBAQ29udGVudENoaWxkKENtYXRUaW1lbGluZUl0ZW1JY29uRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgY3VzdG9tSWNvblRwbD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ21hdFRpbWVsaW5lSXRlbUxhYmVsRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgY3VzdG9tTGFiZWxUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250ZW50RWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnRFbCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGxFbCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfZmlsbEVsITogRWxlbWVudFJlZjtcclxuXHJcbiBcclxuXHJcbiAgdXBkYXRlVmVydGljYWxDZW50ZXJlZExheW91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpbGxFbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbldpZHRoID0gdGhpcy5fY29udGVudEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAncHgnO1xyXG4gICAgdGhpcy5fZmlsbEVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWluSGVpZ2h0ID0gJ3Vuc2V0JztcclxuICB9XHJcblxyXG4gIHVwZGF0ZUhvcml6b250YWxDZW50ZXJlZExheW91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpbGxFbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2NvbnRlbnRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArICdweCc7XHJcbiAgICB0aGlzLl9maWxsRWwubmF0aXZlRWxlbWVudC5zdHlsZS5taW5XaWR0aCA9ICd1bnNldCc7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNmaWxsRWwgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tZmlsbFwiPjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImNtYXQtdGltZWxpbmUtaXRlbS10aW1lbGluZVwiPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSWNvblRwbCA/IGN1c3RvbUljb25UcGwgOiBpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaWNvblRwbD5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0taWNvblwiPnt7IGljb24gfX08L21hdC1pY29uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAoc3ZnSWNvbikge1xyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNtYXQtdGltZWxpbmUtaXRlbS1pY29uXCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBpZiAoaWNvblVybCkge1xyXG4gICAgICAgICAgPGltZyBhbHQ9XCJpY29uXCIgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0taWNvblwiIFtzcmNdPVwiaWNvblVybFwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tTGFiZWxUcGwgPyBjdXN0b21MYWJlbFRwbCA6IGxhYmVsVHBsXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbGFiZWxUcGw+XHJcbiAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtY2FwdGlvbiBjbWF0LXRpbWVsaW5lLWl0ZW0tbGFiZWxcIj57eyBsYWJlbCB9fTwvZGl2PlxyXG4gICAgfVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tbGluZVwiPjwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICNjb250ZW50RWwgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tY29udGVudFwiPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+Il19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS90aW1lbGluZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy90aW1lbGluZS90aW1lbGluZS1pdGVtL3RpbWVsaW5lLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBT3ZELE1BQU0sT0FBTyw2QkFBNkI7K0dBQTdCLDZCQUE2QjttR0FBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFTRCxNQUFNLE9BQU8sOEJBQThCOytHQUE5Qiw4QkFBOEI7bUdBQTlCLDhCQUE4Qjs7NEZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0NBQW9DO29CQUM5QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBZUQsTUFBTSxPQUFPLHlCQUF5QjtJQVZ0QztRQXdCd0IsVUFBSyxHQUFDLG9CQUFvQixDQUFDO0tBMEJsRDtJQVZDLDRCQUE0QjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUVELDhCQUE4QjtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDL0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDdEQsQ0FBQzsrR0F0Q1UseUJBQXlCO21HQUF6Qix5QkFBeUIsNFBBZ0J0Qiw2QkFBNkIsMkJBQVUsV0FBVyw4REFHbEQsOEJBQThCLDJCQUFVLFdBQVcsc1JDN0RuRSx1a0NBb0NNLG9uUURJTSxhQUFhLG9MQUFFLGdCQUFnQjs7NEZBRTlCLHlCQUF5QjtrQkFWckMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDOzhCQUsxQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBR2dCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFHcEIsYUFBYTtzQkFEWixZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJbEUsY0FBYztzQkFEYixZQUFZO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJM0QsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUloQyxPQUFPO3NCQURkLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2NtYXRUaW1lbGluZUl0ZW1JY29uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFRpbWVsaW5lSXRlbUljb25EaXJlY3RpdmUge1xyXG59XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtjbWF0VGltZWxpbmVJdGVtTGFiZWxdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGltZWxpbmVJdGVtTGFiZWxEaXJlY3RpdmUge1xyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbWF0LXRpbWVsaW5lLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBleHBvcnRBczogJ2NtYXRUaW1lbGluZUl0ZW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGltZWxpbmVJdGVtQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbj86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3ZnSWNvbj86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvblVybD86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcz0nY21hdC10aW1lbGluZS1pdGVtJztcclxuICBcclxuICBAQ29udGVudENoaWxkKENtYXRUaW1lbGluZUl0ZW1JY29uRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgY3VzdG9tSWNvblRwbD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ21hdFRpbWVsaW5lSXRlbUxhYmVsRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgY3VzdG9tTGFiZWxUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250ZW50RWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnRFbCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGxFbCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfZmlsbEVsITogRWxlbWVudFJlZjtcclxuXHJcbiBcclxuXHJcbiAgdXBkYXRlVmVydGljYWxDZW50ZXJlZExheW91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpbGxFbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbldpZHRoID0gdGhpcy5fY29udGVudEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAncHgnO1xyXG4gICAgdGhpcy5fZmlsbEVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWluSGVpZ2h0ID0gJ3Vuc2V0JztcclxuICB9XHJcblxyXG4gIHVwZGF0ZUhvcml6b250YWxDZW50ZXJlZExheW91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpbGxFbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2NvbnRlbnRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArICdweCc7XHJcbiAgICB0aGlzLl9maWxsRWwubmF0aXZlRWxlbWVudC5zdHlsZS5taW5XaWR0aCA9ICd1bnNldCc7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNmaWxsRWwgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tZmlsbFwiPjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImNtYXQtdGltZWxpbmUtaXRlbS10aW1lbGluZVwiPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSWNvblRwbCA/IGN1c3RvbUljb25UcGwgOiBpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaWNvblRwbD5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0taWNvblwiPnt7IGljb24gfX08L21hdC1pY29uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAoc3ZnSWNvbikge1xyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNtYXQtdGltZWxpbmUtaXRlbS1pY29uXCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBpZiAoaWNvblVybCkge1xyXG4gICAgICAgICAgPGltZyBhbHQ9XCJpY29uXCIgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0taWNvblwiIFtzcmNdPVwiaWNvblVybFwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tTGFiZWxUcGwgPyBjdXN0b21MYWJlbFRwbCA6IGxhYmVsVHBsXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbGFiZWxUcGw+XHJcbiAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtY2FwdGlvbiBjbWF0LXRpbWVsaW5lLWl0ZW0tbGFiZWxcIj57eyBsYWJlbCB9fTwvZGl2PlxyXG4gICAgfVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tbGluZVwiPjwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICNjb250ZW50RWwgY2xhc3M9XCJjbWF0LXRpbWVsaW5lLWl0ZW0tY29udGVudFwiPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+Il19