pdm-ui-kit 0.1.0 → 0.1.2

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 (245) hide show
  1. package/README.md +115 -59
  2. package/esm2020/lib/components/accordion/accordion.component.mjs +42 -0
  3. package/esm2020/lib/components/alert/alert.component.mjs +35 -0
  4. package/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +69 -0
  5. package/esm2020/lib/components/aspect-ratio/aspect-ratio.component.mjs +31 -0
  6. package/esm2020/lib/components/avatar/avatar.component.mjs +46 -0
  7. package/esm2020/lib/components/badge/badge.component.mjs +23 -0
  8. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +29 -0
  9. package/esm2020/lib/components/button/button.component.mjs +82 -0
  10. package/esm2020/lib/components/button-group/button-group.component.mjs +23 -0
  11. package/esm2020/lib/components/calendar/calendar.component.mjs +71 -0
  12. package/esm2020/lib/components/card/card.component.mjs +65 -0
  13. package/esm2020/lib/components/carousel/carousel.component.mjs +97 -0
  14. package/esm2020/lib/components/chart/chart.component.mjs +174 -0
  15. package/esm2020/lib/components/checkbox/checkbox.component.mjs +47 -0
  16. package/esm2020/lib/components/collapsible/collapsible.component.mjs +43 -0
  17. package/esm2020/lib/components/combobox/combobox.component.mjs +51 -0
  18. package/esm2020/lib/components/command/command.component.mjs +75 -0
  19. package/esm2020/lib/components/context-menu/context-menu.component.mjs +78 -0
  20. package/esm2020/lib/components/data-table/data-table.component.mjs +89 -0
  21. package/esm2020/lib/components/date-picker/date-picker.component.mjs +63 -0
  22. package/esm2020/lib/components/dialog/dialog.component.mjs +90 -0
  23. package/esm2020/lib/components/drawer/drawer.component.mjs +72 -0
  24. package/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +120 -0
  25. package/esm2020/lib/components/empty/empty.component.mjs +58 -0
  26. package/esm2020/lib/components/field/field.component.mjs +52 -0
  27. package/esm2020/lib/components/hover-card/hover-card.component.mjs +44 -0
  28. package/esm2020/lib/components/icon/icon.component.mjs +94 -0
  29. package/esm2020/lib/components/input/input.component.mjs +65 -0
  30. package/esm2020/lib/components/input-group/input-group.component.mjs +54 -0
  31. package/esm2020/lib/components/input-otp/input-otp.component.mjs +140 -0
  32. package/esm2020/lib/components/input-password/input-password.component.mjs +72 -0
  33. package/esm2020/lib/components/item/item.component.mjs +23 -0
  34. package/esm2020/lib/components/kbd/kbd.component.mjs +17 -0
  35. package/esm2020/lib/components/label/label.component.mjs +23 -0
  36. package/esm2020/lib/components/menubar/menubar.component.mjs +31 -0
  37. package/esm2020/lib/components/native-select/native-select.component.mjs +42 -0
  38. package/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +20 -0
  39. package/esm2020/lib/components/pagination/pagination.component.mjs +47 -0
  40. package/esm2020/lib/components/popover/popover.component.mjs +58 -0
  41. package/esm2020/lib/components/progress/progress.component.mjs +33 -0
  42. package/esm2020/lib/components/radio-group/radio-group.component.mjs +38 -0
  43. package/esm2020/lib/components/scroll-area/scroll-area.component.mjs +20 -0
  44. package/esm2020/lib/components/select/select.component.mjs +38 -0
  45. package/esm2020/lib/components/separator/separator.component.mjs +26 -0
  46. package/esm2020/lib/components/sheet/sheet.component.mjs +39 -0
  47. package/esm2020/lib/components/sidebar/sidebar.component.mjs +20 -0
  48. package/esm2020/lib/components/skeleton/skeleton.component.mjs +17 -0
  49. package/esm2020/lib/components/slider/slider.component.mjs +46 -0
  50. package/esm2020/lib/components/sonner/sonner.component.mjs +39 -0
  51. package/esm2020/lib/components/spinner/spinner.component.mjs +20 -0
  52. package/esm2020/lib/components/switch/switch.component.mjs +35 -0
  53. package/esm2020/lib/components/table/table.component.mjs +17 -0
  54. package/esm2020/lib/components/tabs/tabs.component.mjs +31 -0
  55. package/esm2020/lib/components/textarea/textarea.component.mjs +59 -0
  56. package/esm2020/lib/components/toggle/toggle.component.mjs +41 -0
  57. package/esm2020/lib/components/toggle-group/toggle-group.component.mjs +31 -0
  58. package/esm2020/lib/components/tooltip/tooltip.component.mjs +33 -0
  59. package/esm2020/lib/pdm-ui-kit.module.mjs +245 -0
  60. package/esm2020/pdm-ui-kit.mjs +5 -0
  61. package/esm2020/public-api.mjs +59 -0
  62. package/fesm2015/pdm-ui-kit.mjs +2959 -0
  63. package/fesm2015/pdm-ui-kit.mjs.map +1 -0
  64. package/fesm2020/pdm-ui-kit.mjs +2954 -0
  65. package/fesm2020/pdm-ui-kit.mjs.map +1 -0
  66. package/index.d.ts +5 -0
  67. package/lib/components/accordion/accordion.component.d.ts +19 -0
  68. package/lib/components/alert/alert.component.d.ts +13 -0
  69. package/lib/components/alert-dialog/alert-dialog.component.d.ts +21 -0
  70. package/lib/components/aspect-ratio/aspect-ratio.component.d.ts +10 -0
  71. package/lib/components/avatar/avatar.component.d.ts +20 -0
  72. package/lib/components/badge/badge.component.d.ts +9 -0
  73. package/lib/components/breadcrumb/breadcrumb.component.d.ts +10 -0
  74. package/lib/components/button/button.component.d.ts +24 -0
  75. package/lib/components/button-group/button-group.component.d.ts +9 -0
  76. package/lib/components/calendar/calendar.component.d.ts +28 -0
  77. package/lib/components/card/card.component.d.ts +24 -0
  78. package/lib/components/carousel/carousel.component.d.ts +25 -0
  79. package/lib/components/chart/chart.component.d.ts +41 -0
  80. package/lib/components/checkbox/checkbox.component.d.ts +17 -0
  81. package/lib/components/collapsible/collapsible.component.d.ts +14 -0
  82. package/lib/components/combobox/combobox.component.d.ts +18 -0
  83. package/lib/components/command/command.component.d.ts +33 -0
  84. package/lib/components/context-menu/context-menu.component.d.ts +26 -0
  85. package/lib/components/data-table/data-table.component.d.ts +36 -0
  86. package/lib/components/date-picker/date-picker.component.d.ts +23 -0
  87. package/lib/components/dialog/dialog.component.d.ts +30 -0
  88. package/lib/components/drawer/drawer.component.d.ts +27 -0
  89. package/lib/components/dropdown-menu/dropdown-menu.component.d.ts +34 -0
  90. package/lib/components/empty/empty.component.d.ts +19 -0
  91. package/lib/components/field/field.component.d.ts +18 -0
  92. package/lib/components/hover-card/hover-card.component.d.ts +14 -0
  93. package/lib/components/icon/icon.component.d.ts +18 -0
  94. package/lib/components/input/input.component.d.ts +23 -0
  95. package/lib/components/input-group/input-group.component.d.ts +19 -0
  96. package/lib/components/input-otp/input-otp.component.d.ts +26 -0
  97. package/lib/components/input-password/input-password.component.d.ts +25 -0
  98. package/lib/components/item/item.component.d.ts +8 -0
  99. package/lib/components/kbd/kbd.component.d.ts +6 -0
  100. package/lib/components/label/label.component.d.ts +8 -0
  101. package/lib/components/menubar/menubar.component.d.ts +17 -0
  102. package/lib/components/native-select/native-select.component.d.ts +20 -0
  103. package/lib/components/navigation-menu/navigation-menu.component.d.ts +12 -0
  104. package/lib/components/pagination/pagination.component.d.ts +13 -0
  105. package/lib/components/popover/popover.component.d.ts +17 -0
  106. package/lib/components/progress/progress.component.d.ts +10 -0
  107. package/lib/components/radio-group/radio-group.component.d.ts +19 -0
  108. package/lib/components/scroll-area/scroll-area.component.d.ts +7 -0
  109. package/lib/components/select/select.component.d.ts +19 -0
  110. package/lib/components/separator/separator.component.d.ts +9 -0
  111. package/lib/components/sheet/sheet.component.d.ts +13 -0
  112. package/lib/components/sidebar/sidebar.component.d.ts +7 -0
  113. package/lib/components/skeleton/skeleton.component.d.ts +6 -0
  114. package/lib/components/slider/slider.component.d.ts +15 -0
  115. package/lib/components/sonner/sonner.component.d.ts +13 -0
  116. package/lib/components/spinner/spinner.component.d.ts +7 -0
  117. package/lib/components/switch/switch.component.d.ts +13 -0
  118. package/lib/components/table/table.component.d.ts +6 -0
  119. package/lib/components/tabs/tabs.component.d.ts +16 -0
  120. package/lib/components/textarea/textarea.component.d.ts +21 -0
  121. package/lib/components/toggle/toggle.component.d.ts +14 -0
  122. package/lib/components/toggle-group/toggle-group.component.d.ts +16 -0
  123. package/lib/components/tooltip/tooltip.component.d.ts +10 -0
  124. package/lib/pdm-ui-kit.module.d.ts +64 -0
  125. package/package.json +25 -10
  126. package/FIGMA_COMPONENT_AUDIT.md +0 -154
  127. package/ng-package.json +0 -7
  128. package/src/lib/components/accordion/accordion.component.html +0 -34
  129. package/src/lib/components/accordion/accordion.component.ts +0 -38
  130. package/src/lib/components/alert/alert.component.html +0 -52
  131. package/src/lib/components/alert/alert.component.ts +0 -25
  132. package/src/lib/components/alert-dialog/alert-dialog.component.html +0 -41
  133. package/src/lib/components/alert-dialog/alert-dialog.component.ts +0 -45
  134. package/src/lib/components/aspect-ratio/aspect-ratio.component.html +0 -11
  135. package/src/lib/components/aspect-ratio/aspect-ratio.component.ts +0 -18
  136. package/src/lib/components/avatar/avatar.component.html +0 -21
  137. package/src/lib/components/avatar/avatar.component.ts +0 -32
  138. package/src/lib/components/badge/badge.component.html +0 -28
  139. package/src/lib/components/badge/badge.component.ts +0 -23
  140. package/src/lib/components/breadcrumb/breadcrumb.component.html +0 -39
  141. package/src/lib/components/breadcrumb/breadcrumb.component.ts +0 -26
  142. package/src/lib/components/button/button.component.html +0 -15
  143. package/src/lib/components/button/button.component.ts +0 -84
  144. package/src/lib/components/button-group/button-group.component.html +0 -39
  145. package/src/lib/components/button-group/button-group.component.ts +0 -15
  146. package/src/lib/components/calendar/calendar.component.html +0 -73
  147. package/src/lib/components/calendar/calendar.component.ts +0 -78
  148. package/src/lib/components/card/card.component.html +0 -77
  149. package/src/lib/components/card/card.component.ts +0 -39
  150. package/src/lib/components/carousel/carousel.component.html +0 -86
  151. package/src/lib/components/carousel/carousel.component.ts +0 -100
  152. package/src/lib/components/chart/chart.component.html +0 -143
  153. package/src/lib/components/chart/chart.component.ts +0 -147
  154. package/src/lib/components/checkbox/checkbox.component.html +0 -38
  155. package/src/lib/components/checkbox/checkbox.component.ts +0 -32
  156. package/src/lib/components/collapsible/collapsible.component.html +0 -26
  157. package/src/lib/components/collapsible/collapsible.component.ts +0 -29
  158. package/src/lib/components/combobox/combobox.component.html +0 -42
  159. package/src/lib/components/combobox/combobox.component.ts +0 -32
  160. package/src/lib/components/command/command.component.html +0 -55
  161. package/src/lib/components/command/command.component.ts +0 -67
  162. package/src/lib/components/context-menu/context-menu.component.html +0 -47
  163. package/src/lib/components/context-menu/context-menu.component.ts +0 -67
  164. package/src/lib/components/data-table/data-table.component.html +0 -63
  165. package/src/lib/components/data-table/data-table.component.ts +0 -78
  166. package/src/lib/components/date-picker/date-picker.component.html +0 -38
  167. package/src/lib/components/date-picker/date-picker.component.ts +0 -34
  168. package/src/lib/components/dialog/dialog.component.html +0 -78
  169. package/src/lib/components/dialog/dialog.component.ts +0 -55
  170. package/src/lib/components/drawer/drawer.component.html +0 -56
  171. package/src/lib/components/drawer/drawer.component.ts +0 -43
  172. package/src/lib/components/dropdown-menu/dropdown-menu.component.html +0 -56
  173. package/src/lib/components/dropdown-menu/dropdown-menu.component.ts +0 -126
  174. package/src/lib/components/empty/empty.component.html +0 -29
  175. package/src/lib/components/empty/empty.component.ts +0 -35
  176. package/src/lib/components/field/field.component.html +0 -22
  177. package/src/lib/components/field/field.component.ts +0 -28
  178. package/src/lib/components/hover-card/hover-card.component.html +0 -24
  179. package/src/lib/components/hover-card/hover-card.component.ts +0 -36
  180. package/src/lib/components/icon/icon.component.html +0 -286
  181. package/src/lib/components/icon/icon.component.ts +0 -133
  182. package/src/lib/components/input/input.component.html +0 -22
  183. package/src/lib/components/input/input.component.ts +0 -33
  184. package/src/lib/components/input-group/input-group.component.html +0 -31
  185. package/src/lib/components/input-group/input-group.component.ts +0 -26
  186. package/src/lib/components/input-otp/input-otp.component.html +0 -25
  187. package/src/lib/components/input-otp/input-otp.component.ts +0 -146
  188. package/src/lib/components/input-password/input-password.component.html +0 -64
  189. package/src/lib/components/input-password/input-password.component.ts +0 -46
  190. package/src/lib/components/item/item.component.html +0 -10
  191. package/src/lib/components/item/item.component.ts +0 -12
  192. package/src/lib/components/kbd/kbd.component.html +0 -3
  193. package/src/lib/components/kbd/kbd.component.ts +0 -10
  194. package/src/lib/components/label/label.component.html +0 -7
  195. package/src/lib/components/label/label.component.ts +0 -12
  196. package/src/lib/components/menubar/menubar.component.html +0 -16
  197. package/src/lib/components/menubar/menubar.component.ts +0 -29
  198. package/src/lib/components/native-select/native-select.component.html +0 -17
  199. package/src/lib/components/native-select/native-select.component.ts +0 -28
  200. package/src/lib/components/navigation-menu/navigation-menu.component.html +0 -15
  201. package/src/lib/components/navigation-menu/navigation-menu.component.ts +0 -17
  202. package/src/lib/components/pagination/pagination.component.html +0 -30
  203. package/src/lib/components/pagination/pagination.component.ts +0 -37
  204. package/src/lib/components/popover/popover.component.html +0 -6
  205. package/src/lib/components/popover/popover.component.ts +0 -40
  206. package/src/lib/components/progress/progress.component.html +0 -9
  207. package/src/lib/components/progress/progress.component.ts +0 -20
  208. package/src/lib/components/radio-group/radio-group.component.html +0 -25
  209. package/src/lib/components/radio-group/radio-group.component.ts +0 -30
  210. package/src/lib/components/scroll-area/scroll-area.component.html +0 -5
  211. package/src/lib/components/scroll-area/scroll-area.component.ts +0 -11
  212. package/src/lib/components/select/select.component.html +0 -14
  213. package/src/lib/components/select/select.component.ts +0 -27
  214. package/src/lib/components/separator/separator.component.html +0 -5
  215. package/src/lib/components/separator/separator.component.ts +0 -16
  216. package/src/lib/components/sheet/sheet.component.html +0 -10
  217. package/src/lib/components/sheet/sheet.component.ts +0 -28
  218. package/src/lib/components/sidebar/sidebar.component.html +0 -3
  219. package/src/lib/components/sidebar/sidebar.component.ts +0 -11
  220. package/src/lib/components/skeleton/skeleton.component.html +0 -1
  221. package/src/lib/components/skeleton/skeleton.component.ts +0 -10
  222. package/src/lib/components/slider/slider.component.html +0 -15
  223. package/src/lib/components/slider/slider.component.ts +0 -31
  224. package/src/lib/components/sonner/sonner.component.html +0 -10
  225. package/src/lib/components/sonner/sonner.component.ts +0 -25
  226. package/src/lib/components/spinner/spinner.component.html +0 -6
  227. package/src/lib/components/spinner/spinner.component.ts +0 -11
  228. package/src/lib/components/switch/switch.component.html +0 -14
  229. package/src/lib/components/switch/switch.component.ts +0 -20
  230. package/src/lib/components/table/table.component.html +0 -5
  231. package/src/lib/components/table/table.component.ts +0 -10
  232. package/src/lib/components/tabs/tabs.component.html +0 -21
  233. package/src/lib/components/tabs/tabs.component.ts +0 -26
  234. package/src/lib/components/textarea/textarea.component.html +0 -21
  235. package/src/lib/components/textarea/textarea.component.ts +0 -28
  236. package/src/lib/components/toggle/toggle.component.html +0 -16
  237. package/src/lib/components/toggle/toggle.component.ts +0 -29
  238. package/src/lib/components/toggle-group/toggle-group.component.html +0 -17
  239. package/src/lib/components/toggle-group/toggle-group.component.ts +0 -26
  240. package/src/lib/components/tooltip/tooltip.component.html +0 -6
  241. package/src/lib/components/tooltip/tooltip.component.ts +0 -20
  242. package/src/lib/pdm-ui-kit.module.ts +0 -126
  243. package/tsconfig.lib.json +0 -17
  244. package/tsconfig.lib.prod.json +0 -9
  245. /package/{src/public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,94 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmIconComponent {
5
+ constructor() {
6
+ this.name = 'check';
7
+ this.library = 'lucide';
8
+ this.assetUrl = null;
9
+ this.size = 16;
10
+ this.strokeWidth = 1.5;
11
+ this.className = '';
12
+ this.ariaLabel = null;
13
+ this.decorative = false;
14
+ this.aliasMapByLibrary = {
15
+ lucide: {},
16
+ tabler: {
17
+ 'alert-triangle': 'alert-circle',
18
+ 'chevron-down': 'chevron-down',
19
+ 'chevron-right': 'chevron-right',
20
+ 'user-circle': 'user',
21
+ 'settings-2': 'settings',
22
+ 'external-link': 'external-link'
23
+ },
24
+ hugeicons: {
25
+ 'alert-02': 'alert-circle',
26
+ 'user-circle': 'user',
27
+ 'search-01': 'search',
28
+ 'settings-01': 'settings',
29
+ 'arrow-right-01': 'chevron-right',
30
+ 'arrow-down-01': 'chevron-down'
31
+ },
32
+ phosphor: {
33
+ 'warning-circle': 'alert-circle',
34
+ 'caret-down': 'chevron-down',
35
+ 'caret-right': 'chevron-right',
36
+ 'user-circle': 'user',
37
+ gear: 'settings',
38
+ 'arrow-square-out': 'external-link'
39
+ },
40
+ remix: {
41
+ 'alert-line': 'alert-circle',
42
+ 'arrow-right-line': 'chevron-right',
43
+ 'arrow-down-s-line': 'chevron-down',
44
+ 'external-link-line': 'external-link',
45
+ 'user-line': 'user',
46
+ 'settings-3-line': 'settings'
47
+ }
48
+ };
49
+ }
50
+ get resolvedStrokeWidth() {
51
+ if (this.strokeWidth) {
52
+ return this.strokeWidth;
53
+ }
54
+ if (this.library === 'phosphor') {
55
+ return 1.6;
56
+ }
57
+ if (this.library === 'tabler') {
58
+ return 1.8;
59
+ }
60
+ return 1.5;
61
+ }
62
+ get iconKey() {
63
+ const raw = `${this.name || ''}`.trim();
64
+ if (!raw) {
65
+ return 'circle';
66
+ }
67
+ const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\//, '');
68
+ const aliases = this.aliasMapByLibrary[this.library] ?? {};
69
+ return aliases[trimmed] ?? trimmed;
70
+ }
71
+ }
72
+ PdmIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
+ PdmIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmIconComponent, selector: "pdm-icon", inputs: { name: "name", library: "library", assetUrl: "assetUrl", size: "size", strokeWidth: "strokeWidth", className: "className", ariaLabel: "ariaLabel", decorative: "decorative" }, ngImport: i0, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <svg\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <ng-container [ngSwitch]=\"iconKey\">\n <g *ngSwitchCase=\"'command'\">\n <path d=\"M9 9V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 9V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 9H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 15H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 9H7.5C6.12 9 5 7.88 5 6.5C5 5.12 6.12 4 7.5 4C8.88 4 10 5.12 10 6.5V8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 9H16.5C17.88 9 19 7.88 19 6.5C19 5.12 17.88 4 16.5 4C15.12 4 14 5.12 14 6.5V8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 15H7.5C6.12 15 5 16.12 5 17.5C5 18.88 6.12 20 7.5 20C8.88 20 10 18.88 10 17.5V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 15H16.5C17.88 15 19 16.12 19 17.5C19 18.88 17.88 20 16.5 20C15.12 20 14 18.88 14 17.5V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'check'\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'check-circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M8.5 12.2L11 14.7L15.8 9.9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'dot'\">\n <circle cx=\"12\" cy=\"12\" r=\"2.5\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'x'\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'alert-circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'info'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 11V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"8\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'loader-2'\">\n <path d=\"M12 3A9 9 0 1 0 21 12\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'menu'\">\n <path d=\"M4 7H20M4 12H20M4 17H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'search'\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'calendar'\">\n <path d=\"M8 3V6M16 3V6M4 10H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <rect x=\"4\" y=\"6\" width=\"16\" height=\"14\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n </g>\n\n <g *ngSwitchCase=\"'panel-left'\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M9 4V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></path>\n </g>\n\n <g *ngSwitchCase=\"'monitor'\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"13\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M8 20H16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M12 17V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'laptop'\">\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"10\" rx=\"1.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M3 18H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sun'\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 2V4M12 20V22M4 12H2M22 12H20M19.07 4.93L17.66 6.34M6.34 17.66L4.93 19.07M19.07 19.07L17.66 17.66M6.34 6.34L4.93 4.93\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'moon'\">\n <path d=\"M20 14.5C19.1 17.9 16 20.5 12.3 20.5C7.9 20.5 4.3 16.9 4.3 12.5C4.3 8.8 6.8 5.8 10.2 4.8C9.6 5.8 9.3 7 9.3 8.2C9.3 11.8 12.2 14.7 15.8 14.7C17 14.7 18.1 14.4 19.1 13.8C19.4 13.6 20.1 14 20 14.5Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-down'\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-up'\">\n <path d=\"M17 14L12 9L7 14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-left'\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-right'\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-left'\">\n <path d=\"M14 18L8 12L14 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M20 18L14 12L20 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-right'\">\n <path d=\"M10 18L16 12L10 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M4 18L10 12L4 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-up-down'\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'arrow-up-down'\">\n <path d=\"M12 4V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 8L12 4L16 8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M8 16L12 20L16 16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'ellipsis'\">\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'filter'\">\n <path d=\"M4 6H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M7 12H17\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M10 18H14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sort-asc'\">\n <path d=\"M7 18V6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M4 9L7 6L10 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 8H20M14 12H18M14 16H16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sort-desc'\">\n <path d=\"M7 6V18\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M4 15L7 18L10 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 8H16M14 12H18M14 16H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'plus'\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'minus'\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'copy'\">\n <rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <rect x=\"4\" y=\"4\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n </g>\n\n <g *ngSwitchCase=\"'pencil'\">\n <path d=\"M12 20H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M16.5 4.5C17.1 3.9 18 3.9 18.6 4.5L19.5 5.4C20.1 6 20.1 6.9 19.5 7.5L9 18L4 19L5 14L16.5 4.5Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'trash-2'\">\n <path d=\"M4 7H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 7V5C9 4.4 9.4 4 10 4H14C14.6 4 15 4.4 15 5V7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M7 7L8 19C8 19.6 8.4 20 9 20H15C15.6 20 16 19.6 16 19L17 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 11V17M14 11V17\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'download'\">\n <path d=\"M12 4V14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 10L12 14L16 10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M5 19H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'upload'\">\n <path d=\"M12 20V10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 14L12 10L16 14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M5 5H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'home'\">\n <path d=\"M4 10.5L12 4L20 10.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M6 9.5V20H18V9.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'mail'\">\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M4 7L12 13L20 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'phone'\">\n <path d=\"M8.8 4.6C9.2 3.8 10.2 3.5 11 4L13.3 5.2C14.1 5.6 14.4 6.6 14 7.4L13 9.2C12.8 9.6 12.9 10.1 13.2 10.4L14.9 12.1C15.2 12.4 15.7 12.5 16.1 12.3L17.9 11.3C18.7 10.9 19.7 11.2 20.1 12L21.3 14.3C21.8 15.1 21.5 16.1 20.7 16.5L18.8 17.5C16.9 18.5 14.5 18.1 12.9 16.5L7.5 11.1C5.9 9.5 5.5 7.1 6.5 5.2L8.8 4.6Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'log-in'\">\n <path d=\"M15 3H18C19.1 3 20 3.9 20 5V19C20 20.1 19.1 21 18 21H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M10 17L14 13L10 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 13H4\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'log-out'\">\n <path d=\"M9 3H6C4.9 3 4 3.9 4 5V19C4 20.1 4.9 21 6 21H9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M14 17L10 13L14 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 13H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'user'\">\n <circle cx=\"12\" cy=\"8\" r=\"3\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M6 19C6.8 16.7 8.9 15.5 12 15.5C15.1 15.5 17.2 16.7 18 19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'settings'\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M19 12A7 7 0 1 0 12 19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'credit-card'\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M3 10H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></path>\n </g>\n\n <g *ngSwitchCase=\"'smile'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M9 15C9.7 16 10.7 16.5 12 16.5C13.3 16.5 14.3 16 15 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"9\" cy=\"10\" r=\"1\" fill=\"currentColor\"></circle>\n <circle cx=\"15\" cy=\"10\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'calculator'\">\n <rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M9 7H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 12H10M14 12H15M9 16H10M14 16H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'external-link'\">\n <path d=\"M14 5H19V10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 14L19 5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M19 14V19H5V5H10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'folder'\">\n <path d=\"M3 7C3 5.9 3.9 5 5 5H9L11 7H19C20.1 7 21 7.9 21 9V17C21 18.1 20.1 19 19 19H5C3.9 19 3 18.1 3 17V7Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'arrow-up-right'\">\n <path d=\"M7 17L17 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 7H17V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchDefault>\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n </g>\n </ng-container>\n </svg>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmIconComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'pdm-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <svg\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <ng-container [ngSwitch]=\"iconKey\">\n <g *ngSwitchCase=\"'command'\">\n <path d=\"M9 9V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 9V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 9H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 15H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 9H7.5C6.12 9 5 7.88 5 6.5C5 5.12 6.12 4 7.5 4C8.88 4 10 5.12 10 6.5V8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 9H16.5C17.88 9 19 7.88 19 6.5C19 5.12 17.88 4 16.5 4C15.12 4 14 5.12 14 6.5V8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 15H7.5C6.12 15 5 16.12 5 17.5C5 18.88 6.12 20 7.5 20C8.88 20 10 18.88 10 17.5V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M15 15H16.5C17.88 15 19 16.12 19 17.5C19 18.88 17.88 20 16.5 20C15.12 20 14 18.88 14 17.5V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'check'\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'check-circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M8.5 12.2L11 14.7L15.8 9.9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'dot'\">\n <circle cx=\"12\" cy=\"12\" r=\"2.5\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'x'\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'alert-circle'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'info'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 11V16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"8\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'loader-2'\">\n <path d=\"M12 3A9 9 0 1 0 21 12\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'menu'\">\n <path d=\"M4 7H20M4 12H20M4 17H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'search'\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'calendar'\">\n <path d=\"M8 3V6M16 3V6M4 10H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <rect x=\"4\" y=\"6\" width=\"16\" height=\"14\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n </g>\n\n <g *ngSwitchCase=\"'panel-left'\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M9 4V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></path>\n </g>\n\n <g *ngSwitchCase=\"'monitor'\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"13\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M8 20H16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M12 17V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'laptop'\">\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"10\" rx=\"1.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M3 18H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sun'\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M12 2V4M12 20V22M4 12H2M22 12H20M19.07 4.93L17.66 6.34M6.34 17.66L4.93 19.07M19.07 19.07L17.66 17.66M6.34 6.34L4.93 4.93\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'moon'\">\n <path d=\"M20 14.5C19.1 17.9 16 20.5 12.3 20.5C7.9 20.5 4.3 16.9 4.3 12.5C4.3 8.8 6.8 5.8 10.2 4.8C9.6 5.8 9.3 7 9.3 8.2C9.3 11.8 12.2 14.7 15.8 14.7C17 14.7 18.1 14.4 19.1 13.8C19.4 13.6 20.1 14 20 14.5Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-down'\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-up'\">\n <path d=\"M17 14L12 9L7 14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-left'\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevron-right'\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-left'\">\n <path d=\"M14 18L8 12L14 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M20 18L14 12L20 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-right'\">\n <path d=\"M10 18L16 12L10 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M4 18L10 12L4 6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'chevrons-up-down'\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'arrow-up-down'\">\n <path d=\"M12 4V20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 8L12 4L16 8\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M8 16L12 20L16 16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'ellipsis'\">\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'filter'\">\n <path d=\"M4 6H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M7 12H17\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M10 18H14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sort-asc'\">\n <path d=\"M7 18V6\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M4 9L7 6L10 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 8H20M14 12H18M14 16H16\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'sort-desc'\">\n <path d=\"M7 6V18\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M4 15L7 18L10 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 8H16M14 12H18M14 16H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'plus'\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'minus'\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'copy'\">\n <rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <rect x=\"4\" y=\"4\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n </g>\n\n <g *ngSwitchCase=\"'pencil'\">\n <path d=\"M12 20H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M16.5 4.5C17.1 3.9 18 3.9 18.6 4.5L19.5 5.4C20.1 6 20.1 6.9 19.5 7.5L9 18L4 19L5 14L16.5 4.5Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'trash-2'\">\n <path d=\"M4 7H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 7V5C9 4.4 9.4 4 10 4H14C14.6 4 15 4.4 15 5V7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M7 7L8 19C8 19.6 8.4 20 9 20H15C15.6 20 16 19.6 16 19L17 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 11V17M14 11V17\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'download'\">\n <path d=\"M12 4V14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 10L12 14L16 10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M5 19H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'upload'\">\n <path d=\"M12 20V10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M8 14L12 10L16 14\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M5 5H19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'home'\">\n <path d=\"M4 10.5L12 4L20 10.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M6 9.5V20H18V9.5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'mail'\">\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M4 7L12 13L20 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'phone'\">\n <path d=\"M8.8 4.6C9.2 3.8 10.2 3.5 11 4L13.3 5.2C14.1 5.6 14.4 6.6 14 7.4L13 9.2C12.8 9.6 12.9 10.1 13.2 10.4L14.9 12.1C15.2 12.4 15.7 12.5 16.1 12.3L17.9 11.3C18.7 10.9 19.7 11.2 20.1 12L21.3 14.3C21.8 15.1 21.5 16.1 20.7 16.5L18.8 17.5C16.9 18.5 14.5 18.1 12.9 16.5L7.5 11.1C5.9 9.5 5.5 7.1 6.5 5.2L8.8 4.6Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'log-in'\">\n <path d=\"M15 3H18C19.1 3 20 3.9 20 5V19C20 20.1 19.1 21 18 21H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M10 17L14 13L10 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M14 13H4\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'log-out'\">\n <path d=\"M9 3H6C4.9 3 4 3.9 4 5V19C4 20.1 4.9 21 6 21H9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M14 17L10 13L14 9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 13H20\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'user'\">\n <circle cx=\"12\" cy=\"8\" r=\"3\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M6 19C6.8 16.7 8.9 15.5 12 15.5C15.1 15.5 17.2 16.7 18 19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'settings'\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M19 12A7 7 0 1 0 12 19\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'credit-card'\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M3 10H21\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></path>\n </g>\n\n <g *ngSwitchCase=\"'smile'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n <path d=\"M9 15C9.7 16 10.7 16.5 12 16.5C13.3 16.5 14.3 16 15 15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <circle cx=\"9\" cy=\"10\" r=\"1\" fill=\"currentColor\"></circle>\n <circle cx=\"15\" cy=\"10\" r=\"1\" fill=\"currentColor\"></circle>\n </g>\n\n <g *ngSwitchCase=\"'calculator'\">\n <rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></rect>\n <path d=\"M9 7H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 12H10M14 12H15M9 16H10M14 16H15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'external-link'\">\n <path d=\"M14 5H19V10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M10 14L19 5\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M19 14V19H5V5H10\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'folder'\">\n <path d=\"M3 7C3 5.9 3.9 5 5 5H9L11 7H19C20.1 7 21 7.9 21 9V17C21 18.1 20.1 19 19 19H5C3.9 19 3 18.1 3 17V7Z\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchCase=\"'arrow-up-right'\">\n <path d=\"M7 17L17 7\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\"></path>\n <path d=\"M9 7H17V15\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n\n <g *ngSwitchDefault>\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" [attr.stroke-width]=\"resolvedStrokeWidth\"></circle>\n </g>\n </ng-container>\n </svg>\n</ng-template>\n" }]
77
+ }], propDecorators: { name: [{
78
+ type: Input
79
+ }], library: [{
80
+ type: Input
81
+ }], assetUrl: [{
82
+ type: Input
83
+ }], size: [{
84
+ type: Input
85
+ }], strokeWidth: [{
86
+ type: Input
87
+ }], className: [{
88
+ type: Input
89
+ }], ariaLabel: [{
90
+ type: Input
91
+ }], decorative: [{
92
+ type: Input
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQTREMUUsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1XLFNBQUksR0FBeUIsT0FBTyxDQUFDO1FBQ3JDLFlBQU8sR0FBbUIsUUFBUSxDQUFDO1FBQ25DLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQTZCWCxzQkFBaUIsR0FBbUQ7WUFDbkYsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUU7Z0JBQ04sZ0JBQWdCLEVBQUUsY0FBYztnQkFDaEMsY0FBYyxFQUFFLGNBQWM7Z0JBQzlCLGVBQWUsRUFBRSxlQUFlO2dCQUNoQyxhQUFhLEVBQUUsTUFBTTtnQkFDckIsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLGVBQWUsRUFBRSxlQUFlO2FBQ2pDO1lBQ0QsU0FBUyxFQUFFO2dCQUNULFVBQVUsRUFBRSxjQUFjO2dCQUMxQixhQUFhLEVBQUUsTUFBTTtnQkFDckIsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLGFBQWEsRUFBRSxVQUFVO2dCQUN6QixnQkFBZ0IsRUFBRSxlQUFlO2dCQUNqQyxlQUFlLEVBQUUsY0FBYzthQUNoQztZQUNELFFBQVEsRUFBRTtnQkFDUixnQkFBZ0IsRUFBRSxjQUFjO2dCQUNoQyxZQUFZLEVBQUUsY0FBYztnQkFDNUIsYUFBYSxFQUFFLGVBQWU7Z0JBQzlCLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsa0JBQWtCLEVBQUUsZUFBZTthQUNwQztZQUNELEtBQUssRUFBRTtnQkFDTCxZQUFZLEVBQUUsY0FBYztnQkFDNUIsa0JBQWtCLEVBQUUsZUFBZTtnQkFDbkMsbUJBQW1CLEVBQUUsY0FBYztnQkFDbkMsb0JBQW9CLEVBQUUsZUFBZTtnQkFDckMsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLGlCQUFpQixFQUFFLFVBQVU7YUFDOUI7U0FDRixDQUFDO0tBQ0g7SUE5REMsSUFBSSxtQkFBbUI7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDL0IsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQztJQUNyQyxDQUFDOzs4R0FuQ1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0Isd09DNUQ3QiwyeWxCQThSQTs0RkRsT2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFVBQVUsbUJBRUgsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGRtSWNvbkxpYnJhcnkgPSAnbHVjaWRlJyB8ICd0YWJsZXInIHwgJ2h1Z2VpY29ucycgfCAncGhvc3Bob3InIHwgJ3JlbWl4JztcblxuZXhwb3J0IHR5cGUgUGRtSWNvbk5hbWUgPVxuICB8ICdjb21tYW5kJ1xuICB8ICdjaGVjaydcbiAgfCAnY2hlY2stY2lyY2xlJ1xuICB8ICdjaXJjbGUnXG4gIHwgJ2RvdCdcbiAgfCAneCdcbiAgfCAnYWxlcnQtY2lyY2xlJ1xuICB8ICdpbmZvJ1xuICB8ICdsb2FkZXItMidcbiAgfCAnbWVudSdcbiAgfCAnc2VhcmNoJ1xuICB8ICdjYWxlbmRhcidcbiAgfCAncGFuZWwtbGVmdCdcbiAgfCAnbW9uaXRvcidcbiAgfCAnbGFwdG9wJ1xuICB8ICdzdW4nXG4gIHwgJ21vb24nXG4gIHwgJ2NoZXZyb24tZG93bidcbiAgfCAnY2hldnJvbi11cCdcbiAgfCAnY2hldnJvbi1sZWZ0J1xuICB8ICdjaGV2cm9uLXJpZ2h0J1xuICB8ICdjaGV2cm9ucy1sZWZ0J1xuICB8ICdjaGV2cm9ucy1yaWdodCdcbiAgfCAnY2hldnJvbnMtdXAtZG93bidcbiAgfCAnYXJyb3ctdXAtZG93bidcbiAgfCAnZWxsaXBzaXMnXG4gIHwgJ2ZpbHRlcidcbiAgfCAnc29ydC1hc2MnXG4gIHwgJ3NvcnQtZGVzYydcbiAgfCAncGx1cydcbiAgfCAnbWludXMnXG4gIHwgJ2NvcHknXG4gIHwgJ3BlbmNpbCdcbiAgfCAndHJhc2gtMidcbiAgfCAnZG93bmxvYWQnXG4gIHwgJ3VwbG9hZCdcbiAgfCAnaG9tZSdcbiAgfCAnbWFpbCdcbiAgfCAncGhvbmUnXG4gIHwgJ2xvZy1pbidcbiAgfCAnbG9nLW91dCdcbiAgfCAndXNlcidcbiAgfCAnc2V0dGluZ3MnXG4gIHwgJ2NyZWRpdC1jYXJkJ1xuICB8ICdzbWlsZSdcbiAgfCAnY2FsY3VsYXRvcidcbiAgfCAnZXh0ZXJuYWwtbGluaydcbiAgfCAnZm9sZGVyJ1xuICB8ICdhcnJvdy11cC1yaWdodCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1JY29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbmFtZTogUGRtSWNvbk5hbWUgfCBzdHJpbmcgPSAnY2hlY2snO1xuICBASW5wdXQoKSBsaWJyYXJ5OiBQZG1JY29uTGlicmFyeSA9ICdsdWNpZGUnO1xuICBASW5wdXQoKSBhc3NldFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHNpemUgPSAxNjtcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGggPSAxLjU7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkZWNvcmF0aXZlID0gZmFsc2U7XG5cbiAgZ2V0IHJlc29sdmVkU3Ryb2tlV2lkdGgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5zdHJva2VXaWR0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGlicmFyeSA9PT0gJ3Bob3NwaG9yJykge1xuICAgICAgcmV0dXJuIDEuNjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5ID09PSAndGFibGVyJykge1xuICAgICAgcmV0dXJuIDEuODtcbiAgICB9XG5cbiAgICByZXR1cm4gMS41O1xuICB9XG5cbiAgZ2V0IGljb25LZXkoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXcgPSBgJHt0aGlzLm5hbWUgfHwgJyd9YC50cmltKCk7XG4gICAgaWYgKCFyYXcpIHtcbiAgICAgIHJldHVybiAnY2lyY2xlJztcbiAgICB9XG5cbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnJlcGxhY2UoL14obHVjaWRlfHRhYmxlcnxodWdlaWNvbnN8cGhvc3Bob3J8cmVtaXgpXFwvLywgJycpO1xuICAgIGNvbnN0IGFsaWFzZXMgPSB0aGlzLmFsaWFzTWFwQnlMaWJyYXJ5W3RoaXMubGlicmFyeV0gPz8ge307XG4gICAgcmV0dXJuIGFsaWFzZXNbdHJpbW1lZF0gPz8gdHJpbW1lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxpYXNNYXBCeUxpYnJhcnk6IFJlY29yZDxQZG1JY29uTGlicmFyeSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICAgbHVjaWRlOiB7fSxcbiAgICB0YWJsZXI6IHtcbiAgICAgICdhbGVydC10cmlhbmdsZSc6ICdhbGVydC1jaXJjbGUnLFxuICAgICAgJ2NoZXZyb24tZG93bic6ICdjaGV2cm9uLWRvd24nLFxuICAgICAgJ2NoZXZyb24tcmlnaHQnOiAnY2hldnJvbi1yaWdodCcsXG4gICAgICAndXNlci1jaXJjbGUnOiAndXNlcicsXG4gICAgICAnc2V0dGluZ3MtMic6ICdzZXR0aW5ncycsXG4gICAgICAnZXh0ZXJuYWwtbGluayc6ICdleHRlcm5hbC1saW5rJ1xuICAgIH0sXG4gICAgaHVnZWljb25zOiB7XG4gICAgICAnYWxlcnQtMDInOiAnYWxlcnQtY2lyY2xlJyxcbiAgICAgICd1c2VyLWNpcmNsZSc6ICd1c2VyJyxcbiAgICAgICdzZWFyY2gtMDEnOiAnc2VhcmNoJyxcbiAgICAgICdzZXR0aW5ncy0wMSc6ICdzZXR0aW5ncycsXG4gICAgICAnYXJyb3ctcmlnaHQtMDEnOiAnY2hldnJvbi1yaWdodCcsXG4gICAgICAnYXJyb3ctZG93bi0wMSc6ICdjaGV2cm9uLWRvd24nXG4gICAgfSxcbiAgICBwaG9zcGhvcjoge1xuICAgICAgJ3dhcm5pbmctY2lyY2xlJzogJ2FsZXJ0LWNpcmNsZScsXG4gICAgICAnY2FyZXQtZG93bic6ICdjaGV2cm9uLWRvd24nLFxuICAgICAgJ2NhcmV0LXJpZ2h0JzogJ2NoZXZyb24tcmlnaHQnLFxuICAgICAgJ3VzZXItY2lyY2xlJzogJ3VzZXInLFxuICAgICAgZ2VhcjogJ3NldHRpbmdzJyxcbiAgICAgICdhcnJvdy1zcXVhcmUtb3V0JzogJ2V4dGVybmFsLWxpbmsnXG4gICAgfSxcbiAgICByZW1peDoge1xuICAgICAgJ2FsZXJ0LWxpbmUnOiAnYWxlcnQtY2lyY2xlJyxcbiAgICAgICdhcnJvdy1yaWdodC1saW5lJzogJ2NoZXZyb24tcmlnaHQnLFxuICAgICAgJ2Fycm93LWRvd24tcy1saW5lJzogJ2NoZXZyb24tZG93bicsXG4gICAgICAnZXh0ZXJuYWwtbGluay1saW5lJzogJ2V4dGVybmFsLWxpbmsnLFxuICAgICAgJ3VzZXItbGluZSc6ICd1c2VyJyxcbiAgICAgICdzZXR0aW5ncy0zLWxpbmUnOiAnc2V0dGluZ3MnXG4gICAgfVxuICB9O1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzc2V0VXJsOyBlbHNlIGlubGluZUljb25cIj5cbiAgPGltZ1xuICAgIFtzcmNdPVwiYXNzZXRVcmxcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzaXplXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemVcIlxuICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXG4gICAgW2F0dHIucm9sZV09XCJkZWNvcmF0aXZlID8gbnVsbCA6ICdpbWcnXCJcbiAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJkZWNvcmF0aXZlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCIhZGVjb3JhdGl2ZSA/IGFyaWFMYWJlbCB8fCBuYW1lIDogbnVsbFwiXG4gICAgYWx0PVwiXCJcbiAgLz5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2lubGluZUljb24+XG4gIDxzdmdcbiAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcbiAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgICBbYXR0ci5yb2xlXT1cImRlY29yYXRpdmUgPyBudWxsIDogJ2ltZydcIlxuICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImRlY29yYXRpdmUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFkZWNvcmF0aXZlID8gYXJpYUxhYmVsIHx8IG5hbWUgOiBudWxsXCJcbiAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpY29uS2V5XCI+XG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjb21tYW5kJ1wiPlxuICAgICAgPHBhdGggZD1cIk05IDlWMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTE1IDlWMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTkgOUgxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOSAxNUgxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOSA5SDcuNUM2LjEyIDkgNSA3Ljg4IDUgNi41QzUgNS4xMiA2LjEyIDQgNy41IDRDOC44OCA0IDEwIDUuMTIgMTAgNi41VjhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTE1IDlIMTYuNUMxNy44OCA5IDE5IDcuODggMTkgNi41QzE5IDUuMTIgMTcuODggNCAxNi41IDRDMTUuMTIgNCAxNCA1LjEyIDE0IDYuNVY4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk05IDE1SDcuNUM2LjEyIDE1IDUgMTYuMTIgNSAxNy41QzUgMTguODggNi4xMiAyMCA3LjUgMjBDOC44OCAyMCAxMCAxOC44OCAxMCAxNy41VjE2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNSAxNUgxNi41QzE3Ljg4IDE1IDE5IDE2LjEyIDE5IDE3LjVDMTkgMTguODggMTcuODggMjAgMTYuNSAyMEMxNS4xMiAyMCAxNCAxOC44OCAxNCAxNy41VjE2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInY2hlY2snXCI+XG4gICAgICA8cGF0aCBkPVwiTTUgMTIuNUw5LjIgMTYuN0wxOSA3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjaGVjay1jaXJjbGUnXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvY2lyY2xlPlxuICAgICAgPHBhdGggZD1cIk04LjUgMTIuMkwxMSAxNC43TDE1LjggOS45XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjaXJjbGUnXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvY2lyY2xlPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInZG90J1wiPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIyLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9jaXJjbGU+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIid4J1wiPlxuICAgICAgPHBhdGggZD1cIk02IDZMMTggMThNMTggNkw2IDE4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInYWxlcnQtY2lyY2xlJ1wiPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIj48L2NpcmNsZT5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgOFYxMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L2NpcmNsZT5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2luZm8nXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvY2lyY2xlPlxuICAgICAgPHBhdGggZD1cIk0xMiAxMVYxNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiOFwiIHI9XCIxXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvY2lyY2xlPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbG9hZGVyLTInXCI+XG4gICAgICA8cGF0aCBkPVwiTTEyIDNBOSA5IDAgMSAwIDIxIDEyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbWVudSdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNCA3SDIwTTQgMTJIMjBNNCAxN0gyMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ3NlYXJjaCdcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBkPVwiTTIwIDIwTDE2LjYgMTYuNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NhbGVuZGFyJ1wiPlxuICAgICAgPHBhdGggZD1cIk04IDNWNk0xNiAzVjZNNCAxMEgyMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjZcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTRcIiByeD1cIjJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvcmVjdD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ3BhbmVsLWxlZnQnXCI+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCI0XCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE2XCIgcng9XCIyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIj48L3JlY3Q+XG4gICAgICA8cGF0aCBkPVwiTTkgNFYyMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbW9uaXRvcidcIj5cbiAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTNcIiByeD1cIjJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvcmVjdD5cbiAgICAgIDxwYXRoIGQ9XCJNOCAyMEgxNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMTdWMjBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidsYXB0b3AnXCI+XG4gICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjEwXCIgcng9XCIxLjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvcmVjdD5cbiAgICAgIDxwYXRoIGQ9XCJNMyAxOEgyMVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ3N1bidcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBkPVwiTTEyIDJWNE0xMiAyMFYyMk00IDEySDJNMjIgMTJIMjBNMTkuMDcgNC45M0wxNy42NiA2LjM0TTYuMzQgMTcuNjZMNC45MyAxOS4wN00xOS4wNyAxOS4wN0wxNy42NiAxNy42Nk02LjM0IDYuMzRMNC45MyA0LjkzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbW9vbidcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMjAgMTQuNUMxOS4xIDE3LjkgMTYgMjAuNSAxMi4zIDIwLjVDNy45IDIwLjUgNC4zIDE2LjkgNC4zIDEyLjVDNC4zIDguOCA2LjggNS44IDEwLjIgNC44QzkuNiA1LjggOS4zIDcgOS4zIDguMkM5LjMgMTEuOCAxMi4yIDE0LjcgMTUuOCAxNC43QzE3IDE0LjcgMTguMSAxNC40IDE5LjEgMTMuOEMxOS40IDEzLjYgMjAuMSAxNCAyMCAxNC41WlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInY2hldnJvbi1kb3duJ1wiPlxuICAgICAgPHBhdGggZD1cIk03IDEwTDEyIDE1TDE3IDEwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjaGV2cm9uLXVwJ1wiPlxuICAgICAgPHBhdGggZD1cIk0xNyAxNEwxMiA5TDcgMTRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NoZXZyb24tbGVmdCdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTUgMThMOSAxMkwxNSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjaGV2cm9uLXJpZ2h0J1wiPlxuICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInY2hldnJvbnMtbGVmdCdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTQgMThMOCAxMkwxNCA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTIwIDE4TDE0IDEyTDIwIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NoZXZyb25zLXJpZ2h0J1wiPlxuICAgICAgPHBhdGggZD1cIk0xMCAxOEwxNiAxMkwxMCA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTQgMThMMTAgMTJMNCA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjaGV2cm9ucy11cC1kb3duJ1wiPlxuICAgICAgPHBhdGggZD1cIk03IDE1TDEyIDIwTDE3IDE1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTE3IDlMMTIgNEw3IDlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2Fycm93LXVwLWRvd24nXCI+XG4gICAgICA8cGF0aCBkPVwiTTEyIDRWMjBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTggOEwxMiA0TDE2IDhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOCAxNkwxMiAyMEwxNiAxNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInZWxsaXBzaXMnXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiMTJcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvY2lyY2xlPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9jaXJjbGU+XG4gICAgICA8Y2lyY2xlIGN4PVwiMThcIiBjeT1cIjEyXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L2NpcmNsZT5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbHRlcidcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNCA2SDIwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk03IDEySDE3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xMCAxOEgxNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ3NvcnQtYXNjJ1wiPlxuICAgICAgPHBhdGggZD1cIk03IDE4VjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTQgOUw3IDZMMTAgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNCA4SDIwTTE0IDEySDE4TTE0IDE2SDE2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInc29ydC1kZXNjJ1wiPlxuICAgICAgPHBhdGggZD1cIk03IDZWMThcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTQgMTVMNyAxOEwxMCAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNCA4SDE2TTE0IDEySDE4TTE0IDE2SDIwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCIncGx1cydcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgNVYxOU01IDEySDE5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbWludXMnXCI+XG4gICAgICA8cGF0aCBkPVwiTTUgMTJIMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjb3B5J1wiPlxuICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiOVwiIHdpZHRoPVwiMTFcIiBoZWlnaHQ9XCIxMVwiIHJ4PVwiMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9yZWN0PlxuICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMTFcIiBoZWlnaHQ9XCIxMVwiIHJ4PVwiMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9yZWN0PlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCIncGVuY2lsJ1wiPlxuICAgICAgPHBhdGggZD1cIk0xMiAyMEgyMVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTYuNSA0LjVDMTcuMSAzLjkgMTggMy45IDE4LjYgNC41TDE5LjUgNS40QzIwLjEgNiAyMC4xIDYuOSAxOS41IDcuNUw5IDE4TDQgMTlMNSAxNEwxNi41IDQuNVpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCIndHJhc2gtMidcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNCA3SDIwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk05IDdWNUM5IDQuNCA5LjQgNCAxMCA0SDE0QzE0LjYgNCAxNSA0LjQgMTUgNVY3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk03IDdMOCAxOUM4IDE5LjYgOC40IDIwIDkgMjBIMTVDMTUuNiAyMCAxNiAxOS42IDE2IDE5TDE3IDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTAgMTFWMTdNMTQgMTFWMTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidkb3dubG9hZCdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgNFYxNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOCAxMEwxMiAxNEwxNiAxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk01IDE5SDE5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCIndXBsb2FkJ1wiPlxuICAgICAgPHBhdGggZD1cIk0xMiAyMFYxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOCAxNEwxMiAxMEwxNiAxNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk01IDVIMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidob21lJ1wiPlxuICAgICAgPHBhdGggZD1cIk00IDEwLjVMMTIgNEwyMCAxMC41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTYgOS41VjIwSDE4VjkuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbWFpbCdcIj5cbiAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjVcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTRcIiByeD1cIjJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiPjwvcmVjdD5cbiAgICAgIDxwYXRoIGQ9XCJNNCA3TDEyIDEzTDIwIDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ3Bob25lJ1wiPlxuICAgICAgPHBhdGggZD1cIk04LjggNC42QzkuMiAzLjggMTAuMiAzLjUgMTEgNEwxMy4zIDUuMkMxNC4xIDUuNiAxNC40IDYuNiAxNCA3LjRMMTMgOS4yQzEyLjggOS42IDEyLjkgMTAuMSAxMy4yIDEwLjRMMTQuOSAxMi4xQzE1LjIgMTIuNCAxNS43IDEyLjUgMTYuMSAxMi4zTDE3LjkgMTEuM0MxOC43IDEwLjkgMTkuNyAxMS4yIDIwLjEgMTJMMjEuMyAxNC4zQzIxLjggMTUuMSAyMS41IDE2LjEgMjAuNyAxNi41TDE4LjggMTcuNUMxNi45IDE4LjUgMTQuNSAxOC4xIDEyLjkgMTYuNUw3LjUgMTEuMUM1LjkgOS41IDUuNSA3LjEgNi41IDUuMkw4LjggNC42WlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidsb2ctaW4nXCI+XG4gICAgICA8cGF0aCBkPVwiTTE1IDNIMThDMTkuMSAzIDIwIDMuOSAyMCA1VjE5QzIwIDIwLjEgMTkuMSAyMSAxOCAyMUgxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTAgMTdMMTQgMTNMMTAgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNCAxM0g0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInbG9nLW91dCdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNOSAzSDZDNC45IDMgNCAzLjkgNCA1VjE5QzQgMjAuMSA0LjkgMjEgNiAyMUg5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNCAxN0wxMCAxM0wxNCA5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTEwIDEzSDIwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCIndXNlcidcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiOFwiIHI9XCIzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIj48L2NpcmNsZT5cbiAgICAgIDxwYXRoIGQ9XCJNNiAxOUM2LjggMTYuNyA4LjkgMTUuNSAxMiAxNS41QzE1LjEgMTUuNSAxNy4yIDE2LjcgMTggMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidzZXR0aW5ncydcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiM1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBkPVwiTTE5IDEyQTcgNyAwIDEgMCAxMiAxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NyZWRpdC1jYXJkJ1wiPlxuICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiNlwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMlwiIHJ4PVwiMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9yZWN0PlxuICAgICAgPHBhdGggZD1cIk0zIDEwSDIxXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidzbWlsZSdcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBkPVwiTTkgMTVDOS43IDE2IDEwLjcgMTYuNSAxMiAxNi41QzEzLjMgMTYuNSAxNC4zIDE2IDE1IDE1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEwXCIgcj1cIjFcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9jaXJjbGU+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEwXCIgcj1cIjFcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9jaXJjbGU+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidjYWxjdWxhdG9yJ1wiPlxuICAgICAgPHJlY3QgeD1cIjZcIiB5PVwiM1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9yZWN0PlxuICAgICAgPHBhdGggZD1cIk05IDdIMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8cGF0aCBkPVwiTTkgMTJIMTBNMTQgMTJIMTVNOSAxNkgxME0xNCAxNkgxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L2c+XG5cbiAgICA8ZyAqbmdTd2l0Y2hDYXNlPVwiJ2V4dGVybmFsLWxpbmsnXCI+XG4gICAgICA8cGF0aCBkPVwiTTE0IDVIMTlWMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTAgMTRMMTkgNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgMTRWMTlINVY1SDEwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoQ2FzZT1cIidmb2xkZXInXCI+XG4gICAgICA8cGF0aCBkPVwiTTMgN0MzIDUuOSAzLjkgNSA1IDVIOUwxMSA3SDE5QzIwLjEgNyAyMSA3LjkgMjEgOVYxN0MyMSAxOC4xIDIwLjEgMTkgMTkgMTlINUMzLjkgMTkgMyAxOC4xIDMgMTdWN1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwicmVzb2x2ZWRTdHJva2VXaWR0aFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvZz5cblxuICAgIDxnICpuZ1N3aXRjaENhc2U9XCInYXJyb3ctdXAtcmlnaHQnXCI+XG4gICAgICA8cGF0aCBkPVwiTTcgMTdMMTcgN1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNOSA3SDE3VjE1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInJlc29sdmVkU3Ryb2tlV2lkdGhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIFthdHRyLnN0cm9rZS13aWR0aF09XCJyZXNvbHZlZFN0cm9rZVdpZHRoXCI+PC9jaXJjbGU+XG4gICAgPC9nPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmInputComponent {
5
+ constructor() {
6
+ this.id = '';
7
+ this.type = 'text';
8
+ this.value = '';
9
+ this.placeholder = '';
10
+ this.disabled = false;
11
+ this.readonly = false;
12
+ this.required = false;
13
+ this.invalid = false;
14
+ this.className = '';
15
+ this.inputClassName = '';
16
+ this.label = '';
17
+ this.helperText = '';
18
+ this.errorText = '';
19
+ this.valueChange = new EventEmitter();
20
+ this.blurred = new EventEmitter();
21
+ }
22
+ onInput(event) {
23
+ this.valueChange.emit(event.target.value);
24
+ }
25
+ onBlur(event) {
26
+ this.blurred.emit(event);
27
+ }
28
+ }
29
+ PdmInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ PdmInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmInputComponent, selector: "pdm-input", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", className: "className", inputClassName: "inputClassName", label: "label", helperText: "helperText", errorText: "errorText" }, outputs: { valueChange: "valueChange", blurred: "blurred" }, ngImport: i0, template: "<div [ngClass]=\"['grid w-full gap-2', className]\">\n <label *ngIf=\"label\" [attr.for]=\"id\" class=\"text-sm font-medium leading-5 text-foreground\">{{ label }}</label>\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'flex h-9 w-full rounded-[8px] border bg-background px-3 py-2 text-sm leading-5 text-foreground shadow-[0_1px_2px_rgba(0,0,0,0.1)] outline-none ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus:outline-none focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-50',\n invalid ? 'border-destructive' : 'border-input',\n inputClassName\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"text-sm leading-5 text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"text-sm leading-5 text-destructive\">{{ errorText }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'pdm-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['grid w-full gap-2', className]\">\n <label *ngIf=\"label\" [attr.for]=\"id\" class=\"text-sm font-medium leading-5 text-foreground\">{{ label }}</label>\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'flex h-9 w-full rounded-[8px] border bg-background px-3 py-2 text-sm leading-5 text-foreground shadow-[0_1px_2px_rgba(0,0,0,0.1)] outline-none ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus:outline-none focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-50',\n invalid ? 'border-destructive' : 'border-input',\n inputClassName\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"text-sm leading-5 text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"text-sm leading-5 text-destructive\">{{ errorText }}</p>\n</div>\n" }]
34
+ }], propDecorators: { id: [{
35
+ type: Input
36
+ }], type: [{
37
+ type: Input
38
+ }], value: [{
39
+ type: Input
40
+ }], placeholder: [{
41
+ type: Input
42
+ }], disabled: [{
43
+ type: Input
44
+ }], readonly: [{
45
+ type: Input
46
+ }], required: [{
47
+ type: Input
48
+ }], invalid: [{
49
+ type: Input
50
+ }], className: [{
51
+ type: Input
52
+ }], inputClassName: [{
53
+ type: Input
54
+ }], label: [{
55
+ type: Input
56
+ }], helperText: [{
57
+ type: Input
58
+ }], errorText: [{
59
+ type: Input
60
+ }], valueChange: [{
61
+ type: Output
62
+ }], blurred: [{
63
+ type: Output
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQU1XLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixTQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2QsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7S0FTcEQ7SUFQQyxPQUFPLENBQUMsS0FBWTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7OytHQXhCVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnWkNQOUIscXNDQXNCQTs0RkRmYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVyxtQkFFSix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSB0eXBlID0gJ3RleHQnO1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICBASW5wdXQoKSBpbnB1dENsYXNzTmFtZSA9ICcnO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBoZWxwZXJUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yVGV4dCA9ICcnO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYmx1cnJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ2dyaWQgdy1mdWxsIGdhcC0yJywgY2xhc3NOYW1lXVwiPlxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFthdHRyLmZvcl09XCJpZFwiIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLTUgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8aW5wdXRcbiAgICBbaWRdPVwiaWRcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ2ZsZXggaC05IHctZnVsbCByb3VuZGVkLVs4cHhdIGJvcmRlciBiZy1iYWNrZ3JvdW5kIHB4LTMgcHktMiB0ZXh0LXNtIGxlYWRpbmctNSB0ZXh0LWZvcmVncm91bmQgc2hhZG93LVswXzFweF8ycHhfcmdiYSgwLDAsMCwwLjEpXSBvdXRsaW5lLW5vbmUgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmaWxlOmJvcmRlci0wIGZpbGU6YmctdHJhbnNwYXJlbnQgZmlsZTp0ZXh0LXNtIGZpbGU6Zm9udC1tZWRpdW0gcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeS8zMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICBpbnZhbGlkID8gJ2JvcmRlci1kZXN0cnVjdGl2ZScgOiAnYm9yZGVyLWlucHV0JyxcbiAgICAgIGlucHV0Q2xhc3NOYW1lXG4gICAgXVwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAvPlxuICA8cCAqbmdJZj1cIiFpbnZhbGlkICYmIGhlbHBlclRleHRcIiBjbGFzcz1cInRleHQtc20gbGVhZGluZy01IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGhlbHBlclRleHQgfX08L3A+XG4gIDxwICpuZ0lmPVwiaW52YWxpZCAmJiBlcnJvclRleHRcIiBjbGFzcz1cInRleHQtc20gbGVhZGluZy01IHRleHQtZGVzdHJ1Y3RpdmVcIj57eyBlcnJvclRleHQgfX08L3A+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../icon/icon.component";
5
+ export class PdmInputGroupComponent {
6
+ constructor() {
7
+ this.id = '';
8
+ this.type = 'text';
9
+ this.value = '';
10
+ this.placeholder = '';
11
+ this.disabled = false;
12
+ this.invalid = false;
13
+ this.prefixText = '';
14
+ this.suffixText = '';
15
+ this.prefixIcon = '';
16
+ this.suffixIcon = '';
17
+ this.className = '';
18
+ this.valueChange = new EventEmitter();
19
+ }
20
+ onInput(event) {
21
+ this.valueChange.emit(event.target.value);
22
+ }
23
+ }
24
+ PdmInputGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ PdmInputGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmInputGroupComponent, selector: "pdm-input-group", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", invalid: "invalid", prefixText: "prefixText", suffixText: "suffixText", prefixIcon: "prefixIcon", suffixIcon: "suffixIcon", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n [ngClass]=\"[\n 'flex h-9 w-full items-center rounded-[8px] border bg-[hsl(var(--background))] text-sm shadow-[0_1px_2px_rgba(0,0,0,0.1)] ring-offset-[hsl(var(--background))] focus-within:ring-1 focus-within:ring-[hsl(var(--foreground))]',\n invalid ? 'border-[hsl(var(--destructive))]' : 'border-[hsl(var(--input))]',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n>\n <div *ngIf=\"prefixText || prefixIcon\" class=\"inline-flex h-full items-center gap-2 border-r border-[hsl(var(--input))] pl-3 pr-2 text-[hsl(var(--muted-foreground))]\">\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\" class=\"text-sm leading-5\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n class=\"h-full min-w-0 flex-1 border-0 bg-transparent px-2 py-2 text-sm leading-5 outline-none placeholder:text-[hsl(var(--muted-foreground))]\"\n (input)=\"onInput($event)\"\n />\n\n <div *ngIf=\"suffixText || suffixIcon\" class=\"inline-flex h-full items-center gap-2 border-l border-[hsl(var(--input))] pl-2 pr-3 text-[hsl(var(--muted-foreground))]\">\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"text-sm font-medium leading-5\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputGroupComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'pdm-input-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"[\n 'flex h-9 w-full items-center rounded-[8px] border bg-[hsl(var(--background))] text-sm shadow-[0_1px_2px_rgba(0,0,0,0.1)] ring-offset-[hsl(var(--background))] focus-within:ring-1 focus-within:ring-[hsl(var(--foreground))]',\n invalid ? 'border-[hsl(var(--destructive))]' : 'border-[hsl(var(--input))]',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n>\n <div *ngIf=\"prefixText || prefixIcon\" class=\"inline-flex h-full items-center gap-2 border-r border-[hsl(var(--input))] pl-3 pr-2 text-[hsl(var(--muted-foreground))]\">\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\" class=\"text-sm leading-5\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n class=\"h-full min-w-0 flex-1 border-0 bg-transparent px-2 py-2 text-sm leading-5 outline-none placeholder:text-[hsl(var(--muted-foreground))]\"\n (input)=\"onInput($event)\"\n />\n\n <div *ngIf=\"suffixText || suffixIcon\" class=\"inline-flex h-full items-center gap-2 border-l border-[hsl(var(--input))] pl-2 pr-3 text-[hsl(var(--muted-foreground))]\">\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"text-sm font-medium leading-5\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n</div>\n" }]
29
+ }], propDecorators: { id: [{
30
+ type: Input
31
+ }], type: [{
32
+ type: Input
33
+ }], value: [{
34
+ type: Input
35
+ }], placeholder: [{
36
+ type: Input
37
+ }], disabled: [{
38
+ type: Input
39
+ }], invalid: [{
40
+ type: Input
41
+ }], prefixText: [{
42
+ type: Input
43
+ }], suffixText: [{
44
+ type: Input
45
+ }], prefixIcon: [{
46
+ type: Input
47
+ }], suffixIcon: [{
48
+ type: Input
49
+ }], className: [{
50
+ type: Input
51
+ }], valueChange: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT2hHLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNVyxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBS3BEO0lBSEMsT0FBTyxDQUFDLEtBQVk7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7b0hBakJVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLDBWQ1BuQyw2a0RBK0JBOzRGRHhCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWlucHV0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtSW5wdXRHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlkID0gJyc7XG4gIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJlZml4VGV4dCA9ICcnO1xuICBASW5wdXQoKSBzdWZmaXhUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHByZWZpeEljb24gPSAnJztcbiAgQElucHV0KCkgc3VmZml4SWNvbiA9ICcnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJbXG4gICAgJ2ZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIgcm91bmRlZC1bOHB4XSBib3JkZXIgYmctW2hzbCh2YXIoLS1iYWNrZ3JvdW5kKSldIHRleHQtc20gc2hhZG93LVswXzFweF8ycHhfcmdiYSgwLDAsMCwwLjEpXSByaW5nLW9mZnNldC1baHNsKHZhcigtLWJhY2tncm91bmQpKV0gZm9jdXMtd2l0aGluOnJpbmctMSBmb2N1cy13aXRoaW46cmluZy1baHNsKHZhcigtLWZvcmVncm91bmQpKV0nLFxuICAgIGludmFsaWQgPyAnYm9yZGVyLVtoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKV0nIDogJ2JvcmRlci1baHNsKHZhcigtLWlucHV0KSldJyxcbiAgICBkaXNhYmxlZCA/ICdvcGFjaXR5LTUwJyA6ICcnLFxuICAgIGNsYXNzTmFtZVxuICBdXCJcbj5cbiAgPGRpdiAqbmdJZj1cInByZWZpeFRleHQgfHwgcHJlZml4SWNvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXItciBib3JkZXItW2hzbCh2YXIoLS1pbnB1dCkpXSBwbC0zIHByLTIgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj5cbiAgICA8cGRtLWljb24gKm5nSWY9XCJwcmVmaXhJY29uXCIgW25hbWVdPVwicHJlZml4SWNvblwiIFtzaXplXT1cIjE2XCI+PC9wZG0taWNvbj5cbiAgICA8c3BhbiAqbmdJZj1cInByZWZpeFRleHRcIiBjbGFzcz1cInRleHQtc20gbGVhZGluZy01XCI+e3sgcHJlZml4VGV4dCB9fTwvc3Bhbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGRtSW5wdXRHcm91cFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxpbnB1dFxuICAgIFtpZF09XCJpZFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWRcIlxuICAgIGNsYXNzPVwiaC1mdWxsIG1pbi13LTAgZmxleC0xIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHB4LTIgcHktMiB0ZXh0LXNtIGxlYWRpbmctNSBvdXRsaW5lLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIlxuICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAvPlxuXG4gIDxkaXYgKm5nSWY9XCJzdWZmaXhUZXh0IHx8IHN1ZmZpeEljb25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTIgYm9yZGVyLWwgYm9yZGVyLVtoc2wodmFyKC0taW5wdXQpKV0gcGwtMiBwci0zIHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+XG4gICAgPHBkbS1pY29uICpuZ0lmPVwic3VmZml4SWNvblwiIFtuYW1lXT1cInN1ZmZpeEljb25cIiBbc2l6ZV09XCIxNlwiPjwvcGRtLWljb24+XG4gICAgPHNwYW4gKm5nSWY9XCJzdWZmaXhUZXh0XCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNVwiPnt7IHN1ZmZpeFRleHQgfX08L3NwYW4+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BkbUlucHV0R3JvdXBTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,140 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChildren } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmInputOtpComponent {
5
+ constructor() {
6
+ this.length = 6;
7
+ this.groupSize = 3;
8
+ this.disabled = false;
9
+ this.invalid = false;
10
+ this.className = '';
11
+ this.valueChange = new EventEmitter();
12
+ this.completed = new EventEmitter();
13
+ this.values = Array.from({ length: this.length }, () => '');
14
+ }
15
+ ngOnChanges() {
16
+ if (this.values.length !== this.length) {
17
+ this.values = Array.from({ length: this.length }, (_, index) => this.values[index] ?? '');
18
+ }
19
+ }
20
+ trackByIndex(index) {
21
+ return index;
22
+ }
23
+ onInput(index, event) {
24
+ const input = event.target;
25
+ const char = (input.value || '').replace(/\D+/g, '').slice(-1);
26
+ this.values[index] = char;
27
+ input.value = char;
28
+ this.emit();
29
+ if (char) {
30
+ this.focusInput(index + 1, true);
31
+ }
32
+ }
33
+ onKeyDown(index, event) {
34
+ if (event.key === 'Backspace' && !this.values[index]) {
35
+ this.focusInput(index - 1);
36
+ return;
37
+ }
38
+ if (event.key === 'ArrowLeft') {
39
+ event.preventDefault();
40
+ this.focusInput(index - 1);
41
+ return;
42
+ }
43
+ if (event.key === 'ArrowRight') {
44
+ event.preventDefault();
45
+ this.focusInput(index + 1);
46
+ }
47
+ }
48
+ onPaste(event) {
49
+ event.preventDefault();
50
+ const pastedText = (event.clipboardData?.getData('text') ?? '').replace(/\D+/g, '').slice(0, this.length);
51
+ if (!pastedText) {
52
+ return;
53
+ }
54
+ this.values = Array.from({ length: this.length }, (_, index) => pastedText[index] ?? '');
55
+ this.emit();
56
+ const nextIndex = Math.min(pastedText.length, this.length - 1);
57
+ this.focusInput(nextIndex);
58
+ }
59
+ getInputClasses(index) {
60
+ const classes = [
61
+ 'h-9 w-9 appearance-none border bg-background text-center text-sm font-normal text-foreground outline-none transition focus:outline-none focus-visible:outline-none',
62
+ 'shadow-[0_1px_2px_0_rgba(0,0,0,0.1)]',
63
+ 'focus:border-input focus:ring-1 focus:ring-primary/30',
64
+ 'disabled:cursor-not-allowed disabled:opacity-50',
65
+ ];
66
+ if (this.invalid) {
67
+ classes.push('border-destructive focus:border-destructive focus:ring-destructive');
68
+ }
69
+ else {
70
+ classes.push('border-input');
71
+ }
72
+ if (this.isGroupStart(index)) {
73
+ classes.push('rounded-l-md border-l');
74
+ }
75
+ else {
76
+ classes.push('border-l-0');
77
+ }
78
+ if (this.isGroupEnd(index)) {
79
+ classes.push('rounded-r-md');
80
+ }
81
+ return classes.join(' ');
82
+ }
83
+ shouldShowSeparator(index) {
84
+ return this.groupSize > 0 && (index + 1) % this.groupSize === 0 && index < this.length - 1;
85
+ }
86
+ isGroupStart(index) {
87
+ return this.groupSize <= 0 || index % this.groupSize === 0;
88
+ }
89
+ isGroupEnd(index) {
90
+ if (this.groupSize <= 0) {
91
+ return index === this.length - 1;
92
+ }
93
+ return (index + 1) % this.groupSize === 0 || index === this.length - 1;
94
+ }
95
+ emit() {
96
+ const value = this.values.join('');
97
+ this.valueChange.emit(value);
98
+ if (value.length === this.length && !this.values.includes('')) {
99
+ this.completed.emit(value);
100
+ }
101
+ }
102
+ focusInput(index, deferred = false) {
103
+ if (deferred) {
104
+ requestAnimationFrame(() => this.focusInput(index, false));
105
+ return;
106
+ }
107
+ if (!this.inputs || index < 0 || index >= this.length) {
108
+ return;
109
+ }
110
+ const input = this.inputs.get(index)?.nativeElement;
111
+ if (input) {
112
+ input.focus();
113
+ input.select();
114
+ }
115
+ }
116
+ }
117
+ PdmInputOtpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputOtpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
+ PdmInputOtpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmInputOtpComponent, selector: "pdm-input-otp", inputs: { length: "length", groupSize: "groupSize", disabled: "disabled", invalid: "invalid", className: "className" }, outputs: { valueChange: "valueChange", completed: "completed" }, viewQueries: [{ propertyName: "inputs", predicate: ["otpInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"['inline-flex items-center justify-center', className]\" (paste)=\"onPaste($event)\">\n <ng-container *ngFor=\"let value of values; let index = index; trackBy: trackByIndex\">\n <input\n #otpInput\n [class]=\"getInputClasses(index)\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.name]=\"'otp-digit-' + index\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-label]=\"'OTP digit ' + (index + 1)\"\n (input)=\"onInput(index, $event)\"\n (keydown)=\"onKeyDown(index, $event)\"\n />\n <span\n *ngIf=\"shouldShowSeparator(index)\"\n class=\"mx-2 mt-[-1px] h-px w-6 bg-foreground opacity-80\"\n aria-hidden=\"true\"\n ></span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmInputOtpComponent, decorators: [{
120
+ type: Component,
121
+ args: [{ selector: 'pdm-input-otp', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['inline-flex items-center justify-center', className]\" (paste)=\"onPaste($event)\">\n <ng-container *ngFor=\"let value of values; let index = index; trackBy: trackByIndex\">\n <input\n #otpInput\n [class]=\"getInputClasses(index)\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.name]=\"'otp-digit-' + index\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-label]=\"'OTP digit ' + (index + 1)\"\n (input)=\"onInput(index, $event)\"\n (keydown)=\"onKeyDown(index, $event)\"\n />\n <span\n *ngIf=\"shouldShowSeparator(index)\"\n class=\"mx-2 mt-[-1px] h-px w-6 bg-foreground opacity-80\"\n aria-hidden=\"true\"\n ></span>\n </ng-container>\n</div>\n" }]
122
+ }], propDecorators: { length: [{
123
+ type: Input
124
+ }], groupSize: [{
125
+ type: Input
126
+ }], disabled: [{
127
+ type: Input
128
+ }], invalid: [{
129
+ type: Input
130
+ }], className: [{
131
+ type: Input
132
+ }], valueChange: [{
133
+ type: Output
134
+ }], completed: [{
135
+ type: Output
136
+ }], inputs: [{
137
+ type: ViewChildren,
138
+ args: ['otpInput']
139
+ }] } });
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3RwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1vdHAvaW5wdXQtb3RwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1vdHAvaW5wdXQtb3RwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPckksTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJakQsV0FBTSxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBOEhsRTtJQTVIQyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsS0FBWTtRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxQixLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQW9CO1FBQzNDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxZQUFZLEVBQUU7WUFDOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFxQjtRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFHLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE1BQU0sT0FBTyxHQUFHO1lBQ2Qsb0tBQW9LO1lBQ3BLLHNDQUFzQztZQUN0Qyx1REFBdUQ7WUFDdkQsaURBQWlEO1NBQ2xELENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1NBQ3BGO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUN2QzthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRTtZQUN2QixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNsQztRQUNELE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxJQUFJO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQ2hELElBQUksUUFBUSxFQUFFO1lBQ1oscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3JELE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7O2tIQXpJVSxvQkFBb0I7c0dBQXBCLG9CQUFvQiwwVkNQakMsdTNCQXlCQTs0RkRsQmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRW9DLE1BQU07c0JBQWhELFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWlucHV0LW90cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1vdHAuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1JbnB1dE90cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxlbmd0aCA9IDY7XG4gIEBJbnB1dCgpIGdyb3VwU2l6ZSA9IDM7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkcmVuKCdvdHBJbnB1dCcpIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRzPzogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gIHZhbHVlczogc3RyaW5nW10gPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmxlbmd0aCB9LCAoKSA9PiAnJyk7XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWVzLmxlbmd0aCAhPT0gdGhpcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5sZW5ndGggfSwgKF8sIGluZGV4KSA9PiB0aGlzLnZhbHVlc1tpbmRleF0gPz8gJycpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBvbklucHV0KGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgY2hhciA9IChpbnB1dC52YWx1ZSB8fCAnJykucmVwbGFjZSgvXFxEKy9nLCAnJykuc2xpY2UoLTEpO1xuXG4gICAgdGhpcy52YWx1ZXNbaW5kZXhdID0gY2hhcjtcbiAgICBpbnB1dC52YWx1ZSA9IGNoYXI7XG4gICAgdGhpcy5lbWl0KCk7XG5cbiAgICBpZiAoY2hhcikge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KGluZGV4ICsgMSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25LZXlEb3duKGluZGV4OiBudW1iZXIsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgIXRoaXMudmFsdWVzW2luZGV4XSkge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KGluZGV4IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmZvY3VzSW5wdXQoaW5kZXggLSAxKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmZvY3VzSW5wdXQoaW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBwYXN0ZWRUZXh0ID0gKGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKSA/PyAnJykucmVwbGFjZSgvXFxEKy9nLCAnJykuc2xpY2UoMCwgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKCFwYXN0ZWRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmxlbmd0aCB9LCAoXywgaW5kZXgpID0+IHBhc3RlZFRleHRbaW5kZXhdID8/ICcnKTtcbiAgICB0aGlzLmVtaXQoKTtcblxuICAgIGNvbnN0IG5leHRJbmRleCA9IE1hdGgubWluKHBhc3RlZFRleHQubGVuZ3RoLCB0aGlzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMuZm9jdXNJbnB1dChuZXh0SW5kZXgpO1xuICB9XG5cbiAgZ2V0SW5wdXRDbGFzc2VzKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAnaC05IHctOSBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyIGJnLWJhY2tncm91bmQgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LWZvcmVncm91bmQgb3V0bGluZS1ub25lIHRyYW5zaXRpb24gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lJyxcbiAgICAgICdzaGFkb3ctWzBfMXB4XzJweF8wX3JnYmEoMCwwLDAsMC4xKV0nLFxuICAgICAgJ2ZvY3VzOmJvcmRlci1pbnB1dCBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1wcmltYXJ5LzMwJyxcbiAgICAgICdkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgXTtcblxuICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnYm9yZGVyLWRlc3RydWN0aXZlIGZvY3VzOmJvcmRlci1kZXN0cnVjdGl2ZSBmb2N1czpyaW5nLWRlc3RydWN0aXZlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnYm9yZGVyLWlucHV0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cFN0YXJ0KGluZGV4KSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdyb3VuZGVkLWwtbWQgYm9yZGVyLWwnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdib3JkZXItbC0wJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cEVuZChpbmRleCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgncm91bmRlZC1yLW1kJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgc2hvdWxkU2hvd1NlcGFyYXRvcihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBTaXplID4gMCAmJiAoaW5kZXggKyAxKSAlIHRoaXMuZ3JvdXBTaXplID09PSAwICYmIGluZGV4IDwgdGhpcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0dyb3VwU3RhcnQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwU2l6ZSA8PSAwIHx8IGluZGV4ICUgdGhpcy5ncm91cFNpemUgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzR3JvdXBFbmQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdyb3VwU2l6ZSA8PSAwKSB7XG4gICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMubGVuZ3RoIC0gMTtcbiAgICB9XG4gICAgcmV0dXJuIChpbmRleCArIDEpICUgdGhpcy5ncm91cFNpemUgPT09IDAgfHwgaW5kZXggPT09IHRoaXMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWVzLmpvaW4oJycpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSB0aGlzLmxlbmd0aCAmJiAhdGhpcy52YWx1ZXMuaW5jbHVkZXMoJycpKSB7XG4gICAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSW5wdXQoaW5kZXg6IG51bWJlciwgZGVmZXJyZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChkZWZlcnJlZCkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuZm9jdXNJbnB1dChpbmRleCwgZmFsc2UpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRzIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dHMuZ2V0KGluZGV4KT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiWydpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLCBjbGFzc05hbWVdXCIgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiB2YWx1ZXM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIj5cbiAgICA8aW5wdXRcbiAgICAgICNvdHBJbnB1dFxuICAgICAgW2NsYXNzXT1cImdldElucHV0Q2xhc3NlcyhpbmRleClcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgW2F0dHIubmFtZV09XCInb3RwLWRpZ2l0LScgKyBpbmRleFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09UUCBkaWdpdCAnICsgKGluZGV4ICsgMSlcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoaW5kZXgsICRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKGluZGV4LCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cInNob3VsZFNob3dTZXBhcmF0b3IoaW5kZXgpXCJcbiAgICAgIGNsYXNzPVwibXgtMiBtdC1bLTFweF0gaC1weCB3LTYgYmctZm9yZWdyb3VuZCBvcGFjaXR5LTgwXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPjwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==