@testgorilla/tgo-ui 1.7.0 → 1.9.0

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 (173) hide show
  1. package/components/accordion/accordion.component.d.ts +47 -0
  2. package/components/accordion/accordion.component.module.d.ts +12 -0
  3. package/components/autocomplete/autocomplete.component.d.ts +16 -4
  4. package/components/button/button.component.d.ts +19 -3
  5. package/components/button/button.model.d.ts +1 -0
  6. package/components/card/card.component.d.ts +9 -1
  7. package/components/card/card.model.d.ts +1 -0
  8. package/components/checkbox/checkbox.component.d.ts +2 -2
  9. package/components/confirm-dialog/confirm-dialog.component.d.ts +3 -3
  10. package/components/confirm-dialog/confirm-dialog.component.module.d.ts +2 -1
  11. package/components/datepicker/datepicker.component.d.ts +16 -3
  12. package/components/datepicker/datepicker.component.module.d.ts +2 -1
  13. package/components/dialog/dialog.component.d.ts +21 -2
  14. package/components/dialog/dialog.component.module.d.ts +2 -1
  15. package/components/divider/divider.component.d.ts +21 -0
  16. package/components/divider/divider.component.module.d.ts +9 -0
  17. package/components/divider/divider.model.d.ts +1 -0
  18. package/components/dropdown/dropdown.component.d.ts +12 -2
  19. package/components/dropdown/dropdown.component.module.d.ts +2 -1
  20. package/components/empty-state/empty-state.component.d.ts +14 -3
  21. package/components/field/field.component.d.ts +13 -2
  22. package/components/field/field.component.module.d.ts +2 -1
  23. package/components/file-upload/file-upload.component.d.ts +21 -2
  24. package/components/file-upload/file-upload.component.module.d.ts +2 -1
  25. package/components/icon/icon.config.d.ts +1 -1
  26. package/components/navbar/navbar.component.d.ts +16 -4
  27. package/components/navbar/navbar.component.module.d.ts +2 -1
  28. package/components/navigation/navigation.component.d.ts +3 -3
  29. package/components/navigation/navigation.component.module.d.ts +1 -2
  30. package/components/navigation/navigation.model.d.ts +12 -0
  31. package/components/page-header/page-header.component.d.ts +39 -0
  32. package/components/page-header/page-header.component.module.d.ts +10 -0
  33. package/components/progress-bar/progress-bar.component.d.ts +2 -2
  34. package/components/radio-button/radio-button.component.d.ts +2 -2
  35. package/components/side-sheet/side-sheet.component.d.ts +12 -2
  36. package/components/skeleton/skeleton.component.d.ts +9 -3
  37. package/components/skeleton/skeleton.model.d.ts +2 -0
  38. package/components/slider/slider.component.d.ts +97 -0
  39. package/components/slider/slider.component.module.d.ts +14 -0
  40. package/components/slider/slider.model.d.ts +4 -0
  41. package/components/snackbar/snackbar.component.module.d.ts +0 -2
  42. package/components/spinner/spinner.component.d.ts +10 -1
  43. package/components/spinner/spinner.model.d.ts +1 -0
  44. package/components/spinner/spinner.module.d.ts +2 -1
  45. package/components/stepper/stepper.component.d.ts +15 -4
  46. package/components/tabs/tab.directive.d.ts +18 -0
  47. package/components/tabs/tabs.component.d.ts +24 -0
  48. package/components/tabs/tabs.component.module.d.ts +11 -0
  49. package/components/tabs/tabs.model.d.ts +9 -0
  50. package/esm2022/components/accordion/accordion.component.mjs +74 -0
  51. package/esm2022/components/accordion/accordion.component.module.mjs +37 -0
  52. package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
  53. package/esm2022/components/autocomplete/autocomplete.component.mjs +48 -29
  54. package/esm2022/components/avatar/avatar.component.mjs +2 -2
  55. package/esm2022/components/badge/badge.component.mjs +2 -2
  56. package/esm2022/components/banner-action/banner-action.component.mjs +2 -2
  57. package/esm2022/components/button/button.component.mjs +61 -7
  58. package/esm2022/components/button/button.model.mjs +1 -1
  59. package/esm2022/components/card/card.component.mjs +17 -5
  60. package/esm2022/components/card/card.model.mjs +2 -0
  61. package/esm2022/components/checkbox/checkbox.component.mjs +6 -6
  62. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +7 -7
  63. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +23 -5
  64. package/esm2022/components/datepicker/datepicker.component.mjs +45 -24
  65. package/esm2022/components/datepicker/datepicker.component.module.mjs +29 -6
  66. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +2 -2
  67. package/esm2022/components/deprecated-table/deprecated-table.component.mjs +3 -3
  68. package/esm2022/components/dialog/dialog.component.mjs +41 -9
  69. package/esm2022/components/dialog/dialog.component.module.mjs +32 -6
  70. package/esm2022/components/divider/divider.component.mjs +37 -0
  71. package/esm2022/components/divider/divider.component.module.mjs +19 -0
  72. package/esm2022/components/divider/divider.model.mjs +2 -0
  73. package/esm2022/components/dropdown/dropdown.component.mjs +31 -13
  74. package/esm2022/components/dropdown/dropdown.component.module.mjs +29 -6
  75. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +2 -2
  76. package/esm2022/components/empty-state/empty-state.component.mjs +28 -10
  77. package/esm2022/components/field/field.component.mjs +32 -13
  78. package/esm2022/components/field/field.component.module.mjs +29 -6
  79. package/esm2022/components/file-upload/file-upload.component.mjs +43 -11
  80. package/esm2022/components/file-upload/file-upload.component.module.mjs +43 -6
  81. package/esm2022/components/icon/icon.component.mjs +2 -2
  82. package/esm2022/components/icon/icon.config.mjs +7 -1
  83. package/esm2022/components/navbar/navbar.component.mjs +34 -13
  84. package/esm2022/components/navbar/navbar.component.module.mjs +29 -6
  85. package/esm2022/components/navigation/navigation.component.mjs +3 -4
  86. package/esm2022/components/navigation/navigation.component.module.mjs +4 -5
  87. package/esm2022/components/navigation/navigation.model.mjs +7 -0
  88. package/esm2022/components/page-header/page-header.component.mjs +68 -0
  89. package/esm2022/components/page-header/page-header.component.module.mjs +39 -0
  90. package/esm2022/components/paginator/paginator.component.mjs +2 -2
  91. package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
  92. package/esm2022/components/radial-progress/radial-progress.component.mjs +2 -2
  93. package/esm2022/components/radio-button/radio-button.component.mjs +5 -5
  94. package/esm2022/components/rating/rating.component.mjs +2 -2
  95. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +2 -2
  96. package/esm2022/components/side-sheet/side-sheet.component.mjs +28 -11
  97. package/esm2022/components/skeleton/skeleton.component.mjs +34 -7
  98. package/esm2022/components/skeleton/skeleton.model.mjs +2 -0
  99. package/esm2022/components/slider/slider.component.mjs +181 -0
  100. package/esm2022/components/slider/slider.component.module.mjs +68 -0
  101. package/esm2022/components/slider/slider.model.mjs +2 -0
  102. package/esm2022/components/snackbar/snackbar.component.mjs +4 -3
  103. package/esm2022/components/snackbar/snackbar.component.module.mjs +2 -2
  104. package/esm2022/components/spinner/spinner.component.mjs +18 -5
  105. package/esm2022/components/spinner/spinner.model.mjs +2 -0
  106. package/esm2022/components/spinner/spinner.module.mjs +4 -2
  107. package/esm2022/components/step/step.component.mjs +2 -2
  108. package/esm2022/components/stepper/stepper.component.mjs +33 -14
  109. package/esm2022/components/table/table.component.mjs +2 -2
  110. package/esm2022/components/tabs/tab.directive.mjs +42 -0
  111. package/esm2022/components/tabs/tabs.component.mjs +43 -0
  112. package/esm2022/components/tabs/tabs.component.module.mjs +32 -0
  113. package/esm2022/components/tabs/tabs.model.mjs +2 -0
  114. package/esm2022/components/tag/tag.component.mjs +2 -2
  115. package/esm2022/components/toggle/toggle.component.mjs +2 -2
  116. package/esm2022/public-api.mjs +23 -21
  117. package/esm2022/utils/color-contrast.mjs +117 -0
  118. package/fesm2022/testgorilla-tgo-ui.mjs +1861 -1380
  119. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  120. package/package.json +1 -1
  121. package/public-api.d.ts +17 -15
  122. package/src/assets/i18n/en.json +64 -1
  123. package/src/assets/icons/Fire.svg +10 -0
  124. package/src/assets/icons/Gift.svg +7 -0
  125. package/src/assets/icons/Grab.svg +3 -0
  126. package/src/assets/icons/Share.svg +3 -0
  127. package/src/assets/icons/Sparkles.svg +18 -0
  128. package/src/assets/icons/Video-stop.svg +3 -0
  129. package/src/theme/_core.scss +1 -1
  130. package/src/theme/_variables.scss +52 -1
  131. package/utils/color-contrast.d.ts +9 -0
  132. package/components/confirm-dialog/confirm-dialog.constants.d.ts +0 -5
  133. package/components/create-account/create-account.component.d.ts +0 -75
  134. package/components/create-account/create-account.component.module.d.ts +0 -14
  135. package/components/create-account/create-account.constant.d.ts +0 -13
  136. package/components/create-account/create-account.model.d.ts +0 -17
  137. package/components/create-password/create-password.component.d.ts +0 -43
  138. package/components/create-password/create-password.component.module.d.ts +0 -13
  139. package/components/create-password/create-password.constant.d.ts +0 -5
  140. package/components/create-password/create-password.model.d.ts +0 -8
  141. package/components/forgot-password/forgot-password.component.d.ts +0 -48
  142. package/components/forgot-password/forgot-password.component.module.d.ts +0 -13
  143. package/components/forgot-password/forgot-password.constant.d.ts +0 -6
  144. package/components/forgot-password/forgot-password.model.d.ts +0 -9
  145. package/components/label/label.component.d.ts +0 -46
  146. package/components/label/label.component.module.d.ts +0 -8
  147. package/components/label/label.model.d.ts +0 -16
  148. package/components/login/login.component.d.ts +0 -57
  149. package/components/login/login.component.module.d.ts +0 -13
  150. package/components/login/login.constant.d.ts +0 -10
  151. package/components/login/login.model.d.ts +0 -15
  152. package/esm2022/components/confirm-dialog/confirm-dialog.constants.mjs +0 -6
  153. package/esm2022/components/create-account/create-account.component.mjs +0 -148
  154. package/esm2022/components/create-account/create-account.component.module.mjs +0 -48
  155. package/esm2022/components/create-account/create-account.constant.mjs +0 -14
  156. package/esm2022/components/create-account/create-account.model.mjs +0 -2
  157. package/esm2022/components/create-password/create-password.component.mjs +0 -83
  158. package/esm2022/components/create-password/create-password.component.module.mjs +0 -44
  159. package/esm2022/components/create-password/create-password.constant.mjs +0 -6
  160. package/esm2022/components/create-password/create-password.model.mjs +0 -2
  161. package/esm2022/components/forgot-password/forgot-password.component.mjs +0 -86
  162. package/esm2022/components/forgot-password/forgot-password.component.module.mjs +0 -44
  163. package/esm2022/components/forgot-password/forgot-password.constant.mjs +0 -7
  164. package/esm2022/components/forgot-password/forgot-password.model.mjs +0 -2
  165. package/esm2022/components/label/label.component.mjs +0 -64
  166. package/esm2022/components/label/label.component.module.mjs +0 -19
  167. package/esm2022/components/label/label.model.mjs +0 -9
  168. package/esm2022/components/login/login.component.mjs +0 -113
  169. package/esm2022/components/login/login.component.module.mjs +0 -44
  170. package/esm2022/components/login/login.constant.mjs +0 -11
  171. package/esm2022/components/login/login.model.mjs +0 -2
  172. package/esm2022/utils/validators.utils.mjs +0 -8
  173. package/utils/validators.utils.d.ts +0 -4
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).
3
+ * Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.
4
+ * Used to manage different colors based on application configuration
5
+ *
6
+ * @param hexColor color in hex format
7
+ * @param typeEvent interaction event
8
+ */
9
+ export const adjustLightness = (hexColor, typeEvent) => {
10
+ const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;
11
+ if (!hexRegex.test(hexColor)) {
12
+ throw new Error('Invalid HEX color format');
13
+ }
14
+ const hslColor = hexToHsl(hexColor);
15
+ const lightness = hslColor.l * 100;
16
+ if (lightness > 70 && typeEvent === 'hover') {
17
+ hslColor.l = clamp(hslColor.l - 10 / 100);
18
+ }
19
+ else if (lightness < 30 && typeEvent === 'hover') {
20
+ hslColor.l = clamp(hslColor.l + 10 / 100);
21
+ }
22
+ else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {
23
+ hslColor.l = clamp(hslColor.l - 10 / 100);
24
+ }
25
+ else if (lightness > 70 && typeEvent === 'pressed') {
26
+ hslColor.l = clamp(hslColor.l - 20 / 100);
27
+ }
28
+ else if (lightness < 30 && typeEvent === 'pressed') {
29
+ hslColor.l = clamp(hslColor.l + 30 / 100);
30
+ }
31
+ else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {
32
+ hslColor.l = clamp(hslColor.l - 20 / 100);
33
+ }
34
+ else if (lightness > 70 && typeEvent === 'disabled') {
35
+ hslColor.l = clamp(hslColor.l + 10 / 100);
36
+ }
37
+ else if (lightness < 30 && typeEvent === 'disabled') {
38
+ hslColor.l = clamp(hslColor.l + 50 / 100);
39
+ }
40
+ else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {
41
+ hslColor.l = clamp(hslColor.l + 20 / 100);
42
+ }
43
+ return hslToHex(hslColor);
44
+ };
45
+ /**
46
+ * Transforms hex color to HSL in object variation.
47
+ * @param hexColor string value with hex color
48
+ */
49
+ const hexToHsl = (hexColor) => {
50
+ const rgbColor = parseInt(hexColor.slice(1), 16);
51
+ const r = ((rgbColor >> 16) & 255) / 255;
52
+ const g = ((rgbColor >> 8) & 255) / 255;
53
+ const b = (rgbColor & 255) / 255;
54
+ const max = Math.max(r, g, b);
55
+ const min = Math.min(r, g, b);
56
+ let h = 0;
57
+ let s;
58
+ const l = (max + min) / 2;
59
+ if (max === min) {
60
+ h = s = 0; // grayscale
61
+ }
62
+ else {
63
+ const d = max - min;
64
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
65
+ switch (max) {
66
+ case r:
67
+ h = (g - b) / d + (g < b ? 6 : 0);
68
+ break;
69
+ case g:
70
+ h = (b - r) / d + 2;
71
+ break;
72
+ case b:
73
+ h = (r - g) / d + 4;
74
+ break;
75
+ }
76
+ h /= 6;
77
+ }
78
+ return { h, s, l };
79
+ };
80
+ /**
81
+ * Transforms HSL color, represented as an object and transforms it to hex string.
82
+ * @param hslColor accepts the HSL color like an object.
83
+ */
84
+ const hslToHex = (hslColor) => {
85
+ const { h, s, l } = hslColor;
86
+ const hueToRgb = (p, q, t) => {
87
+ if (t < 0) {
88
+ t += 1;
89
+ }
90
+ if (t > 1) {
91
+ t -= 1;
92
+ }
93
+ if (t < 1 / 6) {
94
+ return p + (q - p) * 6 * t;
95
+ }
96
+ if (t < 1 / 2) {
97
+ return q;
98
+ }
99
+ if (t < 2 / 3) {
100
+ return p + (q - p) * (2 / 3 - t) * 6;
101
+ }
102
+ return p;
103
+ };
104
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
105
+ const p = 2 * l - q;
106
+ const r = hueToRgb(p, q, h + 1 / 3);
107
+ const g = hueToRgb(p, q, h);
108
+ const b = hueToRgb(p, q, h - 1 / 3);
109
+ const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);
110
+ return `#${rgbColor.toString(16).padStart(6, '0')}`;
111
+ };
112
+ /**
113
+ * Restricts the value to be within the range [0, 1].
114
+ * @param value
115
+ */
116
+ const clamp = (value) => Math.min(Math.max(value, 0), 1);
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItY29udHJhc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvY29sb3ItY29udHJhc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsU0FBMkMsRUFBVSxFQUFFO0lBQ3ZHLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDO0lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUVuQyxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRTtRQUMzQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO1FBQ2xELFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRTtRQUNwRSxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQ3BELFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7UUFDcEQsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7U0FBTSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQ3RFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7UUFDckQsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7U0FBTSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUNyRCxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7UUFDdkUsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7SUFFRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFD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QUFDLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRnVuY3Rpb24gZm9yIGFkanVzdGluZyB0aGUgbGlnaHRuZXNzIG9mIGEgY29sb3IgYmFzZWQgb24gZGlmZmVyZW50IGV2ZW50cyAoaG92ZXIsIHByZXNzZWQsIGRpc2FibGVkKS5cbiAqIEFjY2VwdHMgYSBoZXggY29sb3IsIHRyYW5zZm9ybXMgaXQgdG8gSFNMLCBhbmQgYmFzZWQgb24gY29sb3IncyBMIGFuZCBldmVudCBkYXJrZW5zIG9yIGxpZ2h0ZW5zIGl0LlxuICogVXNlZCB0byBtYW5hZ2UgZGlmZmVyZW50IGNvbG9ycyBiYXNlZCBvbiBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXG4gKlxuICogQHBhcmFtIGhleENvbG9yIGNvbG9yIGluIGhleCBmb3JtYXRcbiAqIEBwYXJhbSB0eXBlRXZlbnQgaW50ZXJhY3Rpb24gZXZlbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGFkanVzdExpZ2h0bmVzcyA9IChoZXhDb2xvcjogc3RyaW5nLCB0eXBlRXZlbnQ6ICdob3ZlcicgfCAncHJlc3NlZCcgfCAnZGlzYWJsZWQnKTogc3RyaW5nID0+IHtcbiAgY29uc3QgaGV4UmVnZXggPSAvXiMoWzAtOUEtRl17M30pezEsMn0kL2k7XG4gIGlmICghaGV4UmVnZXgudGVzdChoZXhDb2xvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSEVYIGNvbG9yIGZvcm1hdCcpO1xuICB9XG5cbiAgY29uc3QgaHNsQ29sb3IgPSBoZXhUb0hzbChoZXhDb2xvcik7XG4gIGNvbnN0IGxpZ2h0bmVzcyA9IGhzbENvbG9yLmwgKiAxMDA7XG5cbiAgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDMwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDcwICYmIGxpZ2h0bmVzcyA+IDMwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ3ByZXNzZWQnKSB7XG4gICAgaHNsQ29sb3IubCA9IGNsYW1wKGhzbENvbG9yLmwgLSAyMCAvIDEwMCk7XG4gIH0gZWxzZSBpZiAobGlnaHRuZXNzIDwgMzAgJiYgdHlwZUV2ZW50ID09PSAncHJlc3NlZCcpIHtcbiAgICBoc2xDb2xvci5sID0gY2xhbXAoaHNsQ29sb3IubCArIDMwIC8gMTAwKTtcbiAgfSBlbHNlIGlmIChsaWdodG5lc3MgPCA3MCAmJiBsaWdodG5lc3MgPiAzMCAmJiB0eXBlRXZlbnQgPT09ICdwcmVzc2VkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMjAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDMwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgNTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDcwICYmIGxpZ2h0bmVzcyA+IDMwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMjAgLyAxMDApO1xuICB9XG5cbiAgcmV0dXJuIGhzbFRvSGV4KGhzbENvbG9yKTtcbn07XG5cbi8qKlxuICogVHJhbnNmb3JtcyBoZXggY29sb3IgdG8gSFNMIGluIG9iamVjdCB2YXJpYXRpb24uXG4gKiBAcGFyYW0gaGV4Q29sb3Igc3RyaW5nIHZhbHVlIHdpdGggaGV4IGNvbG9yXG4gKi9cbmNvbnN0IGhleFRvSHNsID0gKGhleENvbG9yOiBzdHJpbmcpOiB7IGg6IG51bWJlcjsgczogbnVtYmVyOyBsOiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IHJnYkNvbG9yID0gcGFyc2VJbnQoaGV4Q29sb3Iuc2xpY2UoMSksIDE2KTtcbiAgY29uc3QgciA9ICgocmdiQ29sb3IgPj4gMTYpICYgMjU1KSAvIDI1NTtcbiAgY29uc3QgZyA9ICgocmdiQ29sb3IgPj4gOCkgJiAyNTUpIC8gMjU1O1xuICBjb25zdCBiID0gKHJnYkNvbG9yICYgMjU1KSAvIDI1NTtcblxuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cbiAgbGV0IGggPSAwO1xuICBsZXQgcztcbiAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcblxuICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICBoID0gcyA9IDA7IC8vIGdyYXlzY2FsZVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGQgPSBtYXggLSBtaW47XG4gICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuXG4gICAgc3dpdGNoIChtYXgpIHtcbiAgICAgIGNhc2UgcjpcbiAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZzpcbiAgICAgICAgaCA9IChiIC0gcikgLyBkICsgMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGI6XG4gICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGggLz0gNjtcbiAgfVxuXG4gIHJldHVybiB7IGgsIHMsIGwgfTtcbn07XG5cbi8qKlxuICogVHJhbnNmb3JtcyBIU0wgY29sb3IsIHJlcHJlc2VudGVkIGFzIGFuIG9iamVjdCBhbmQgdHJhbnNmb3JtcyBpdCB0byBoZXggc3RyaW5nLlxuICogQHBhcmFtIGhzbENvbG9yIGFjY2VwdHMgdGhlIEhTTCBjb2xvciBsaWtlIGFuIG9iamVjdC5cbiAqL1xuY29uc3QgaHNsVG9IZXggPSAoaHNsQ29sb3I6IHsgaDogbnVtYmVyOyBzOiBudW1iZXI7IGw6IG51bWJlciB9KTogc3RyaW5nID0+IHtcbiAgY29uc3QgeyBoLCBzLCBsIH0gPSBoc2xDb2xvcjtcblxuICBjb25zdCBodWVUb1JnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAodCA8IDApIHtcbiAgICAgIHQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHQgPiAxKSB7XG4gICAgICB0IC09IDE7XG4gICAgfVxuICAgIGlmICh0IDwgMSAvIDYpIHtcbiAgICAgIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgIH1cbiAgICBpZiAodCA8IDEgLyAyKSB7XG4gICAgICByZXR1cm4gcTtcbiAgICB9XG4gICAgaWYgKHQgPCAyIC8gMykge1xuICAgICAgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfTtcblxuICBjb25zdCBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgY29uc3QgcCA9IDIgKiBsIC0gcTtcblxuICBjb25zdCByID0gaHVlVG9SZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgY29uc3QgZyA9IGh1ZVRvUmdiKHAsIHEsIGgpO1xuICBjb25zdCBiID0gaHVlVG9SZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICBjb25zdCByZ2JDb2xvciA9IChNYXRoLnJvdW5kKHIgKiAyNTUpIDw8IDE2KSB8IChNYXRoLnJvdW5kKGcgKiAyNTUpIDw8IDgpIHwgTWF0aC5yb3VuZChiICogMjU1KTtcblxuICByZXR1cm4gYCMke3JnYkNvbG9yLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCAnMCcpfWA7XG59O1xuXG4vKipcbiAqIFJlc3RyaWN0cyB0aGUgdmFsdWUgdG8gYmUgd2l0aGluIHRoZSByYW5nZSBbMCwgMV0uXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuY29uc3QgY2xhbXAgPSAodmFsdWU6IG51bWJlcik6IG51bWJlciA9PiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgMCksIDEpO1xuIl19