@angular/material 19.0.0-next.1 → 19.0.0-next.3

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 (642) hide show
  1. package/_index.scss +3 -4
  2. package/button/_button-base.scss +2 -2
  3. package/button/index.d.ts +2 -10
  4. package/checkbox/_checkbox-common.scss +4 -4
  5. package/checkbox/index.d.ts +0 -7
  6. package/chips/index.d.ts +1 -10
  7. package/core/_core.scss +1 -7
  8. package/core/focus-indicators/_private.scss +21 -82
  9. package/core/index.d.ts +10 -167
  10. package/core/ripple/_ripple.scss +1 -1
  11. package/core/style/_elevation.scss +1 -1
  12. package/core/style/_menu-common.scss +1 -1
  13. package/core/style/_sass-utils.scss +4 -0
  14. package/core/theming/_palettes.scss +132 -45
  15. package/core/tokens/_m3-system.scss +93 -20
  16. package/core/tokens/m3/definitions/_md-sys-color.scss +6 -6
  17. package/core/tokens/m3/mat/_sidenav.scss +0 -1
  18. package/fesm2022/autocomplete.mjs +14 -14
  19. package/fesm2022/autocomplete.mjs.map +1 -1
  20. package/fesm2022/badge.mjs +11 -11
  21. package/fesm2022/badge.mjs.map +1 -1
  22. package/fesm2022/bottom-sheet.mjs +11 -11
  23. package/fesm2022/bottom-sheet.mjs.map +1 -1
  24. package/fesm2022/button-toggle.mjs +11 -11
  25. package/fesm2022/button-toggle.mjs.map +1 -1
  26. package/fesm2022/button.mjs +42 -53
  27. package/fesm2022/button.mjs.map +1 -1
  28. package/fesm2022/card.mjs +46 -46
  29. package/fesm2022/checkbox.mjs +16 -19
  30. package/fesm2022/checkbox.mjs.map +1 -1
  31. package/fesm2022/chips.mjs +46 -57
  32. package/fesm2022/chips.mjs.map +1 -1
  33. package/fesm2022/core.mjs +122 -256
  34. package/fesm2022/core.mjs.map +1 -1
  35. package/fesm2022/datepicker.mjs +87 -87
  36. package/fesm2022/datepicker.mjs.map +1 -1
  37. package/fesm2022/dialog.mjs +26 -26
  38. package/fesm2022/dialog.mjs.map +1 -1
  39. package/fesm2022/divider.mjs +7 -7
  40. package/fesm2022/expansion.mjs +28 -28
  41. package/fesm2022/expansion.mjs.map +1 -1
  42. package/fesm2022/form-field.mjs +36 -36
  43. package/fesm2022/form-field.mjs.map +1 -1
  44. package/fesm2022/grid-list.mjs +22 -22
  45. package/fesm2022/icon/testing.mjs +7 -7
  46. package/fesm2022/icon.mjs +10 -10
  47. package/fesm2022/input.mjs +7 -7
  48. package/fesm2022/list.mjs +59 -59
  49. package/fesm2022/list.mjs.map +1 -1
  50. package/fesm2022/menu.mjs +18 -18
  51. package/fesm2022/menu.mjs.map +1 -1
  52. package/fesm2022/paginator.mjs +11 -11
  53. package/fesm2022/paginator.mjs.map +1 -1
  54. package/fesm2022/progress-bar.mjs +8 -8
  55. package/fesm2022/progress-bar.mjs.map +1 -1
  56. package/fesm2022/progress-spinner.mjs +8 -8
  57. package/fesm2022/progress-spinner.mjs.map +1 -1
  58. package/fesm2022/radio.mjs +11 -11
  59. package/fesm2022/radio.mjs.map +1 -1
  60. package/fesm2022/select.mjs +12 -12
  61. package/fesm2022/select.mjs.map +1 -1
  62. package/fesm2022/sidenav.mjs +26 -26
  63. package/fesm2022/sidenav.mjs.map +1 -1
  64. package/fesm2022/slide-toggle.mjs +16 -16
  65. package/fesm2022/slide-toggle.mjs.map +1 -1
  66. package/fesm2022/slider.mjs +18 -18
  67. package/fesm2022/slider.mjs.map +1 -1
  68. package/fesm2022/snack-bar.mjs +23 -23
  69. package/fesm2022/snack-bar.mjs.map +1 -1
  70. package/fesm2022/sort.mjs +14 -14
  71. package/fesm2022/sort.mjs.map +1 -1
  72. package/fesm2022/stepper.mjs +33 -33
  73. package/fesm2022/stepper.mjs.map +1 -1
  74. package/fesm2022/table.mjs +57 -57
  75. package/fesm2022/table.mjs.map +1 -1
  76. package/fesm2022/tabs.mjs +48 -48
  77. package/fesm2022/tabs.mjs.map +1 -1
  78. package/fesm2022/toolbar.mjs +11 -11
  79. package/fesm2022/toolbar.mjs.map +1 -1
  80. package/fesm2022/tooltip.mjs +26 -17
  81. package/fesm2022/tooltip.mjs.map +1 -1
  82. package/fesm2022/tree.mjs +25 -25
  83. package/form-field/_form-field-high-contrast.scss +4 -4
  84. package/form-field/_mdc-text-field-structure.scss +2 -2
  85. package/list/_list-inherited-structure.scss +1 -1
  86. package/list/_list-item-hcm-indicator.scss +1 -1
  87. package/package.json +2 -146
  88. package/prebuilt-themes/azure-blue.css +1 -1
  89. package/prebuilt-themes/cyan-orange.css +1 -1
  90. package/prebuilt-themes/deeppurple-amber.css +1 -1
  91. package/prebuilt-themes/indigo-pink.css +1 -1
  92. package/prebuilt-themes/magenta-violet.css +1 -1
  93. package/prebuilt-themes/pink-bluegrey.css +1 -1
  94. package/prebuilt-themes/purple-green.css +1 -1
  95. package/prebuilt-themes/rose-red.css +1 -1
  96. package/schematics/ng-add/index.js +1 -1
  97. package/schematics/ng-add/index.mjs +1 -1
  98. package/schematics/ng-generate/m3-theme/index_bundled.js +2 -2
  99. package/schematics/ng-update/index_bundled.js +27 -27
  100. package/tabs/_tabs-common.scss +2 -2
  101. package/tree/index.d.ts +2 -2
  102. package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
  103. package/core/focus-indicators/_focus-indicators.scss +0 -6
  104. package/esm2022/autocomplete/animations.mjs +0 -24
  105. package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
  106. package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
  107. package/esm2022/autocomplete/autocomplete.mjs +0 -238
  108. package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
  109. package/esm2022/autocomplete/index.mjs +0 -9
  110. package/esm2022/autocomplete/module.mjs +0 -61
  111. package/esm2022/autocomplete/public-api.mjs +0 -14
  112. package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  113. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
  114. package/esm2022/autocomplete/testing/index.mjs +0 -9
  115. package/esm2022/autocomplete/testing/public-api.mjs +0 -10
  116. package/esm2022/badge/badge-module.mjs +0 -27
  117. package/esm2022/badge/badge.mjs +0 -288
  118. package/esm2022/badge/badge_public_index.mjs +0 -5
  119. package/esm2022/badge/index.mjs +0 -9
  120. package/esm2022/badge/public-api.mjs +0 -10
  121. package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
  122. package/esm2022/badge/testing/badge-harness.mjs +0 -71
  123. package/esm2022/badge/testing/index.mjs +0 -9
  124. package/esm2022/badge/testing/public-api.mjs +0 -10
  125. package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
  126. package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
  127. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
  128. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
  129. package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
  130. package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
  131. package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
  132. package/esm2022/bottom-sheet/index.mjs +0 -9
  133. package/esm2022/bottom-sheet/public-api.mjs +0 -14
  134. package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
  135. package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
  136. package/esm2022/bottom-sheet/testing/index.mjs +0 -9
  137. package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
  138. package/esm2022/button/button-base.mjs +0 -230
  139. package/esm2022/button/button.mjs +0 -67
  140. package/esm2022/button/button_public_index.mjs +0 -5
  141. package/esm2022/button/fab.mjs +0 -166
  142. package/esm2022/button/icon-button.mjs +0 -56
  143. package/esm2022/button/index.mjs +0 -9
  144. package/esm2022/button/module.mjs +0 -65
  145. package/esm2022/button/public-api.mjs +0 -13
  146. package/esm2022/button/testing/button-harness-filters.mjs +0 -9
  147. package/esm2022/button/testing/button-harness.mjs +0 -80
  148. package/esm2022/button/testing/index.mjs +0 -9
  149. package/esm2022/button/testing/public-api.mjs +0 -10
  150. package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
  151. package/esm2022/button-toggle/button-toggle.mjs +0 -651
  152. package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
  153. package/esm2022/button-toggle/index.mjs +0 -9
  154. package/esm2022/button-toggle/public-api.mjs +0 -10
  155. package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
  156. package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
  157. package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
  158. package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
  159. package/esm2022/button-toggle/testing/index.mjs +0 -9
  160. package/esm2022/button-toggle/testing/public-api.mjs +0 -12
  161. package/esm2022/card/card.mjs +0 -273
  162. package/esm2022/card/card_public_index.mjs +0 -5
  163. package/esm2022/card/index.mjs +0 -9
  164. package/esm2022/card/module.mjs +0 -67
  165. package/esm2022/card/public-api.mjs +0 -10
  166. package/esm2022/card/testing/card-harness-filters.mjs +0 -9
  167. package/esm2022/card/testing/card-harness.mjs +0 -50
  168. package/esm2022/card/testing/index.mjs +0 -9
  169. package/esm2022/card/testing/public-api.mjs +0 -10
  170. package/esm2022/checkbox/checkbox-config.mjs +0 -22
  171. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
  172. package/esm2022/checkbox/checkbox.mjs +0 -443
  173. package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
  174. package/esm2022/checkbox/index.mjs +0 -9
  175. package/esm2022/checkbox/module.mjs +0 -41
  176. package/esm2022/checkbox/public-api.mjs +0 -12
  177. package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
  178. package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
  179. package/esm2022/checkbox/testing/index.mjs +0 -9
  180. package/esm2022/checkbox/testing/public-api.mjs +0 -9
  181. package/esm2022/chips/chip-action.mjs +0 -113
  182. package/esm2022/chips/chip-edit-input.mjs +0 -61
  183. package/esm2022/chips/chip-grid.mjs +0 -420
  184. package/esm2022/chips/chip-icons.mjs +0 -107
  185. package/esm2022/chips/chip-input.mjs +0 -192
  186. package/esm2022/chips/chip-listbox.mjs +0 -369
  187. package/esm2022/chips/chip-option.mjs +0 -190
  188. package/esm2022/chips/chip-row.mjs +0 -173
  189. package/esm2022/chips/chip-set.mjs +0 -283
  190. package/esm2022/chips/chip-text-control.mjs +0 -9
  191. package/esm2022/chips/chip.mjs +0 -322
  192. package/esm2022/chips/chips_public_index.mjs +0 -5
  193. package/esm2022/chips/index.mjs +0 -9
  194. package/esm2022/chips/module.mjs +0 -85
  195. package/esm2022/chips/public-api.mjs +0 -20
  196. package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
  197. package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
  198. package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
  199. package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
  200. package/esm2022/chips/testing/chip-harness.mjs +0 -62
  201. package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
  202. package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
  203. package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
  204. package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
  205. package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
  206. package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
  207. package/esm2022/chips/testing/index.mjs +0 -9
  208. package/esm2022/chips/testing/public-api.mjs +0 -19
  209. package/esm2022/chips/tokens.mjs +0 -39
  210. package/esm2022/core/animation/animation.mjs +0 -21
  211. package/esm2022/core/common-behaviors/color.mjs +0 -33
  212. package/esm2022/core/common-behaviors/common-module.mjs +0 -127
  213. package/esm2022/core/common-behaviors/constructor.mjs +0 -9
  214. package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
  215. package/esm2022/core/common-behaviors/disabled.mjs +0 -23
  216. package/esm2022/core/common-behaviors/error-state.mjs +0 -66
  217. package/esm2022/core/common-behaviors/index.mjs +0 -15
  218. package/esm2022/core/common-behaviors/initialized.mjs +0 -62
  219. package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
  220. package/esm2022/core/core_public_index.mjs +0 -5
  221. package/esm2022/core/datetime/date-adapter.mjs +0 -109
  222. package/esm2022/core/datetime/date-formats.mjs +0 -10
  223. package/esm2022/core/datetime/index.mjs +0 -46
  224. package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
  225. package/esm2022/core/datetime/native-date-formats.mjs +0 -19
  226. package/esm2022/core/error/error-options.mjs +0 -33
  227. package/esm2022/core/index.mjs +0 -9
  228. package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
  229. package/esm2022/core/line/line.mjs +0 -64
  230. package/esm2022/core/option/index.mjs +0 -30
  231. package/esm2022/core/option/optgroup.mjs +0 -71
  232. package/esm2022/core/option/option-parent.mjs +0 -13
  233. package/esm2022/core/option/option.mjs +0 -283
  234. package/esm2022/core/private/index.mjs +0 -9
  235. package/esm2022/core/private/ripple-loader.mjs +0 -160
  236. package/esm2022/core/public-api.mjs +0 -19
  237. package/esm2022/core/ripple/index.mjs +0 -27
  238. package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
  239. package/esm2022/core/ripple/ripple-ref.mjs +0 -39
  240. package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
  241. package/esm2022/core/ripple/ripple.mjs +0 -156
  242. package/esm2022/core/selection/index.mjs +0 -10
  243. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
  244. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
  245. package/esm2022/core/testing/index.mjs +0 -9
  246. package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
  247. package/esm2022/core/testing/optgroup-harness.mjs +0 -43
  248. package/esm2022/core/testing/option-harness-filters.mjs +0 -9
  249. package/esm2022/core/testing/option-harness.mjs +0 -53
  250. package/esm2022/core/testing/public-api.mjs +0 -12
  251. package/esm2022/core/version.mjs +0 -11
  252. package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
  253. package/esm2022/datepicker/calendar-body.mjs +0 -509
  254. package/esm2022/datepicker/calendar.mjs +0 -426
  255. package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
  256. package/esm2022/datepicker/date-range-input.mjs +0 -369
  257. package/esm2022/datepicker/date-range-picker.mjs +0 -51
  258. package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
  259. package/esm2022/datepicker/date-selection-model.mjs +0 -188
  260. package/esm2022/datepicker/datepicker-actions.mjs +0 -91
  261. package/esm2022/datepicker/datepicker-animations.mjs +0 -35
  262. package/esm2022/datepicker/datepicker-base.mjs +0 -609
  263. package/esm2022/datepicker/datepicker-errors.mjs +0 -14
  264. package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
  265. package/esm2022/datepicker/datepicker-input.mjs +0 -200
  266. package/esm2022/datepicker/datepicker-intl.mjs +0 -69
  267. package/esm2022/datepicker/datepicker-module.mjs +0 -138
  268. package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
  269. package/esm2022/datepicker/datepicker.mjs +0 -38
  270. package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
  271. package/esm2022/datepicker/index.mjs +0 -9
  272. package/esm2022/datepicker/month-view.mjs +0 -460
  273. package/esm2022/datepicker/multi-year-view.mjs +0 -330
  274. package/esm2022/datepicker/public-api.mjs +0 -27
  275. package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
  276. package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
  277. package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
  278. package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
  279. package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
  280. package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
  281. package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
  282. package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
  283. package/esm2022/datepicker/testing/index.mjs +0 -9
  284. package/esm2022/datepicker/testing/public-api.mjs +0 -14
  285. package/esm2022/datepicker/year-view.mjs +0 -324
  286. package/esm2022/dialog/dialog-animations.mjs +0 -38
  287. package/esm2022/dialog/dialog-config.mjs +0 -59
  288. package/esm2022/dialog/dialog-container.mjs +0 -253
  289. package/esm2022/dialog/dialog-content-directives.mjs +0 -212
  290. package/esm2022/dialog/dialog-ref.mjs +0 -177
  291. package/esm2022/dialog/dialog.mjs +0 -212
  292. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  293. package/esm2022/dialog/index.mjs +0 -9
  294. package/esm2022/dialog/module.mjs +0 -45
  295. package/esm2022/dialog/public-api.mjs +0 -15
  296. package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
  297. package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
  298. package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
  299. package/esm2022/dialog/testing/index.mjs +0 -10
  300. package/esm2022/dialog/testing/public-api.mjs +0 -10
  301. package/esm2022/divider/divider-module.mjs +0 -24
  302. package/esm2022/divider/divider.mjs +0 -48
  303. package/esm2022/divider/divider_public_index.mjs +0 -5
  304. package/esm2022/divider/index.mjs +0 -9
  305. package/esm2022/divider/public-api.mjs +0 -10
  306. package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
  307. package/esm2022/divider/testing/divider-harness.mjs +0 -22
  308. package/esm2022/divider/testing/index.mjs +0 -9
  309. package/esm2022/divider/testing/public-api.mjs +0 -10
  310. package/esm2022/expansion/accordion-base.mjs +0 -14
  311. package/esm2022/expansion/accordion.mjs +0 -96
  312. package/esm2022/expansion/expansion-animations.mjs +0 -51
  313. package/esm2022/expansion/expansion-module.mjs +0 -65
  314. package/esm2022/expansion/expansion-panel-base.mjs +0 -14
  315. package/esm2022/expansion/expansion-panel-content.mjs +0 -35
  316. package/esm2022/expansion/expansion-panel-header.mjs +0 -218
  317. package/esm2022/expansion/expansion-panel.mjs +0 -211
  318. package/esm2022/expansion/expansion_public_index.mjs +0 -5
  319. package/esm2022/expansion/index.mjs +0 -9
  320. package/esm2022/expansion/public-api.mjs +0 -16
  321. package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
  322. package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
  323. package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
  324. package/esm2022/expansion/testing/index.mjs +0 -9
  325. package/esm2022/expansion/testing/public-api.mjs +0 -11
  326. package/esm2022/form-field/directives/error.mjs +0 -48
  327. package/esm2022/form-field/directives/floating-label.mjs +0 -135
  328. package/esm2022/form-field/directives/hint.mjs +0 -40
  329. package/esm2022/form-field/directives/label.mjs +0 -22
  330. package/esm2022/form-field/directives/line-ripple.mjs +0 -60
  331. package/esm2022/form-field/directives/notched-outline.mjs +0 -66
  332. package/esm2022/form-field/directives/prefix.mjs +0 -38
  333. package/esm2022/form-field/directives/suffix.mjs +0 -38
  334. package/esm2022/form-field/form-field-animations.mjs +0 -24
  335. package/esm2022/form-field/form-field-control.mjs +0 -11
  336. package/esm2022/form-field/form-field-errors.mjs +0 -20
  337. package/esm2022/form-field/form-field.mjs +0 -620
  338. package/esm2022/form-field/form-field_public_index.mjs +0 -5
  339. package/esm2022/form-field/index.mjs +0 -9
  340. package/esm2022/form-field/module.mjs +0 -51
  341. package/esm2022/form-field/public-api.mjs +0 -18
  342. package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
  343. package/esm2022/form-field/testing/control/index.mjs +0 -9
  344. package/esm2022/form-field/testing/error-harness.mjs +0 -29
  345. package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
  346. package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
  347. package/esm2022/form-field/testing/index.mjs +0 -9
  348. package/esm2022/form-field/testing/public-api.mjs +0 -15
  349. package/esm2022/grid-list/grid-list-base.mjs +0 -14
  350. package/esm2022/grid-list/grid-list-module.mjs +0 -59
  351. package/esm2022/grid-list/grid-list.mjs +0 -146
  352. package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
  353. package/esm2022/grid-list/grid-tile.mjs +0 -128
  354. package/esm2022/grid-list/index.mjs +0 -9
  355. package/esm2022/grid-list/public-api.mjs +0 -14
  356. package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
  357. package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
  358. package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
  359. package/esm2022/grid-list/testing/index.mjs +0 -9
  360. package/esm2022/grid-list/testing/public-api.mjs +0 -11
  361. package/esm2022/grid-list/tile-coordinator.mjs +0 -145
  362. package/esm2022/grid-list/tile-styler.mjs +0 -231
  363. package/esm2022/icon/fake-svgs.mjs +0 -62
  364. package/esm2022/icon/icon-module.mjs +0 -24
  365. package/esm2022/icon/icon-registry.mjs +0 -592
  366. package/esm2022/icon/icon.mjs +0 -379
  367. package/esm2022/icon/icon_public_index.mjs +0 -5
  368. package/esm2022/icon/index.mjs +0 -9
  369. package/esm2022/icon/public-api.mjs +0 -11
  370. package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
  371. package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
  372. package/esm2022/icon/testing/icon-harness.mjs +0 -60
  373. package/esm2022/icon/testing/index.mjs +0 -9
  374. package/esm2022/icon/testing/public-api.mjs +0 -11
  375. package/esm2022/icon/testing/testing_public_index.mjs +0 -5
  376. package/esm2022/icon/trusted-types.mjs +0 -43
  377. package/esm2022/index.mjs +0 -14
  378. package/esm2022/input/index.mjs +0 -9
  379. package/esm2022/input/input-errors.mjs +0 -12
  380. package/esm2022/input/input-value-accessor.mjs +0 -16
  381. package/esm2022/input/input.mjs +0 -524
  382. package/esm2022/input/input_public_index.mjs +0 -5
  383. package/esm2022/input/module.mjs +0 -26
  384. package/esm2022/input/public-api.mjs +0 -14
  385. package/esm2022/input/testing/index.mjs +0 -9
  386. package/esm2022/input/testing/input-harness-filters.mjs +0 -9
  387. package/esm2022/input/testing/input-harness.mjs +0 -119
  388. package/esm2022/input/testing/native-option-harness.mjs +0 -42
  389. package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
  390. package/esm2022/input/testing/native-select-harness.mjs +0 -79
  391. package/esm2022/input/testing/public-api.mjs +0 -13
  392. package/esm2022/list/action-list.mjs +0 -31
  393. package/esm2022/list/index.mjs +0 -9
  394. package/esm2022/list/list-base.mjs +0 -284
  395. package/esm2022/list/list-item-sections.mjs +0 -144
  396. package/esm2022/list/list-module.mjs +0 -97
  397. package/esm2022/list/list-option-types.mjs +0 -16
  398. package/esm2022/list/list-option.mjs +0 -295
  399. package/esm2022/list/list.mjs +0 -103
  400. package/esm2022/list/list_public_index.mjs +0 -5
  401. package/esm2022/list/nav-list.mjs +0 -37
  402. package/esm2022/list/public-api.mjs +0 -18
  403. package/esm2022/list/selection-list.mjs +0 -391
  404. package/esm2022/list/subheader.mjs +0 -28
  405. package/esm2022/list/testing/action-list-harness.mjs +0 -59
  406. package/esm2022/list/testing/index.mjs +0 -9
  407. package/esm2022/list/testing/list-harness-base.mjs +0 -95
  408. package/esm2022/list/testing/list-harness-filters.mjs +0 -9
  409. package/esm2022/list/testing/list-harness.mjs +0 -41
  410. package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
  411. package/esm2022/list/testing/nav-list-harness.mjs +0 -69
  412. package/esm2022/list/testing/public-api.mjs +0 -14
  413. package/esm2022/list/testing/selection-list-harness.mjs +0 -122
  414. package/esm2022/list/tokens.mjs +0 -11
  415. package/esm2022/menu/index.mjs +0 -9
  416. package/esm2022/menu/menu-animations.mjs +0 -61
  417. package/esm2022/menu/menu-content.mjs +0 -87
  418. package/esm2022/menu/menu-errors.mjs +0 -35
  419. package/esm2022/menu/menu-item.mjs +0 -148
  420. package/esm2022/menu/menu-panel.mjs +0 -14
  421. package/esm2022/menu/menu-positions.mjs +0 -9
  422. package/esm2022/menu/menu-trigger.mjs +0 -542
  423. package/esm2022/menu/menu.mjs +0 -405
  424. package/esm2022/menu/menu_public_index.mjs +0 -5
  425. package/esm2022/menu/module.mjs +0 -63
  426. package/esm2022/menu/public-api.mjs +0 -16
  427. package/esm2022/menu/testing/index.mjs +0 -9
  428. package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
  429. package/esm2022/menu/testing/menu-harness.mjs +0 -166
  430. package/esm2022/menu/testing/public-api.mjs +0 -10
  431. package/esm2022/paginator/index.mjs +0 -9
  432. package/esm2022/paginator/module.mjs +0 -28
  433. package/esm2022/paginator/paginator-intl.mjs +0 -62
  434. package/esm2022/paginator/paginator.mjs +0 -266
  435. package/esm2022/paginator/paginator_public_index.mjs +0 -5
  436. package/esm2022/paginator/public-api.mjs +0 -11
  437. package/esm2022/paginator/testing/index.mjs +0 -9
  438. package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
  439. package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
  440. package/esm2022/paginator/testing/public-api.mjs +0 -10
  441. package/esm2022/progress-bar/index.mjs +0 -9
  442. package/esm2022/progress-bar/module.mjs +0 -24
  443. package/esm2022/progress-bar/progress-bar.mjs +0 -181
  444. package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
  445. package/esm2022/progress-bar/public-api.mjs +0 -10
  446. package/esm2022/progress-bar/testing/index.mjs +0 -9
  447. package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
  448. package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
  449. package/esm2022/progress-bar/testing/public-api.mjs +0 -10
  450. package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
  451. package/esm2022/progress-spinner/index.mjs +0 -9
  452. package/esm2022/progress-spinner/module.mjs +0 -25
  453. package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
  454. package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
  455. package/esm2022/progress-spinner/public-api.mjs +0 -10
  456. package/esm2022/progress-spinner/testing/index.mjs +0 -9
  457. package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
  458. package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
  459. package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
  460. package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
  461. package/esm2022/radio/index.mjs +0 -9
  462. package/esm2022/radio/module.mjs +0 -25
  463. package/esm2022/radio/public-api.mjs +0 -10
  464. package/esm2022/radio/radio.mjs +0 -680
  465. package/esm2022/radio/radio_public_index.mjs +0 -5
  466. package/esm2022/radio/testing/index.mjs +0 -9
  467. package/esm2022/radio/testing/public-api.mjs +0 -10
  468. package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
  469. package/esm2022/radio/testing/radio-harness.mjs +0 -228
  470. package/esm2022/select/index.mjs +0 -9
  471. package/esm2022/select/module.mjs +0 -59
  472. package/esm2022/select/public-api.mjs +0 -15
  473. package/esm2022/select/select-animations.mjs +0 -38
  474. package/esm2022/select/select-errors.mjs +0 -35
  475. package/esm2022/select/select.mjs +0 -1160
  476. package/esm2022/select/select_public_index.mjs +0 -5
  477. package/esm2022/select/testing/index.mjs +0 -9
  478. package/esm2022/select/testing/public-api.mjs +0 -10
  479. package/esm2022/select/testing/select-harness-filters.mjs +0 -9
  480. package/esm2022/select/testing/select-harness.mjs +0 -129
  481. package/esm2022/sidenav/drawer-animations.mjs +0 -33
  482. package/esm2022/sidenav/drawer.mjs +0 -863
  483. package/esm2022/sidenav/index.mjs +0 -9
  484. package/esm2022/sidenav/public-api.mjs +0 -12
  485. package/esm2022/sidenav/sidenav-module.mjs +0 -60
  486. package/esm2022/sidenav/sidenav.mjs +0 -148
  487. package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
  488. package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
  489. package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
  490. package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
  491. package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
  492. package/esm2022/sidenav/testing/index.mjs +0 -9
  493. package/esm2022/sidenav/testing/public-api.mjs +0 -15
  494. package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
  495. package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
  496. package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
  497. package/esm2022/slide-toggle/index.mjs +0 -9
  498. package/esm2022/slide-toggle/module.mjs +0 -41
  499. package/esm2022/slide-toggle/public-api.mjs +0 -12
  500. package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
  501. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
  502. package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
  503. package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
  504. package/esm2022/slide-toggle/testing/index.mjs +0 -9
  505. package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
  506. package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
  507. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
  508. package/esm2022/slider/index.mjs +0 -9
  509. package/esm2022/slider/module.mjs +0 -39
  510. package/esm2022/slider/public-api.mjs +0 -13
  511. package/esm2022/slider/slider-input.mjs +0 -701
  512. package/esm2022/slider/slider-interface.mjs +0 -56
  513. package/esm2022/slider/slider-thumb.mjs +0 -231
  514. package/esm2022/slider/slider.mjs +0 -746
  515. package/esm2022/slider/slider_public_index.mjs +0 -5
  516. package/esm2022/slider/testing/index.mjs +0 -9
  517. package/esm2022/slider/testing/public-api.mjs +0 -11
  518. package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
  519. package/esm2022/slider/testing/slider-harness.mjs +0 -67
  520. package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
  521. package/esm2022/snack-bar/index.mjs +0 -9
  522. package/esm2022/snack-bar/module.mjs +0 -47
  523. package/esm2022/snack-bar/public-api.mjs +0 -16
  524. package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
  525. package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
  526. package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
  527. package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
  528. package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
  529. package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
  530. package/esm2022/snack-bar/snack-bar.mjs +0 -267
  531. package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
  532. package/esm2022/snack-bar/testing/index.mjs +0 -9
  533. package/esm2022/snack-bar/testing/public-api.mjs +0 -10
  534. package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
  535. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
  536. package/esm2022/sort/index.mjs +0 -9
  537. package/esm2022/sort/public-api.mjs +0 -14
  538. package/esm2022/sort/sort-animations.mjs +0 -69
  539. package/esm2022/sort/sort-direction.mjs +0 -9
  540. package/esm2022/sort/sort-errors.mjs +0 -24
  541. package/esm2022/sort/sort-header-intl.mjs +0 -41
  542. package/esm2022/sort/sort-header.mjs +0 -317
  543. package/esm2022/sort/sort-module.mjs +0 -27
  544. package/esm2022/sort/sort.mjs +0 -155
  545. package/esm2022/sort/sort_public_index.mjs +0 -5
  546. package/esm2022/sort/testing/index.mjs +0 -9
  547. package/esm2022/sort/testing/public-api.mjs +0 -11
  548. package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
  549. package/esm2022/sort/testing/sort-harness.mjs +0 -36
  550. package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
  551. package/esm2022/stepper/index.mjs +0 -9
  552. package/esm2022/stepper/public-api.mjs +0 -17
  553. package/esm2022/stepper/step-content.mjs +0 -27
  554. package/esm2022/stepper/step-header.mjs +0 -105
  555. package/esm2022/stepper/step-label.mjs +0 -22
  556. package/esm2022/stepper/stepper-animations.mjs +0 -47
  557. package/esm2022/stepper/stepper-button.mjs +0 -43
  558. package/esm2022/stepper/stepper-icon.mjs +0 -30
  559. package/esm2022/stepper/stepper-intl.mjs +0 -43
  560. package/esm2022/stepper/stepper-module.mjs +0 -88
  561. package/esm2022/stepper/stepper.mjs +0 -205
  562. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  563. package/esm2022/stepper/testing/index.mjs +0 -9
  564. package/esm2022/stepper/testing/public-api.mjs +0 -12
  565. package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
  566. package/esm2022/stepper/testing/step-harness.mjs +0 -90
  567. package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
  568. package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
  569. package/esm2022/table/cell.mjs +0 -147
  570. package/esm2022/table/index.mjs +0 -9
  571. package/esm2022/table/module.mjs +0 -93
  572. package/esm2022/table/public-api.mjs +0 -14
  573. package/esm2022/table/row.mjs +0 -163
  574. package/esm2022/table/table-data-source.mjs +0 -317
  575. package/esm2022/table/table.mjs +0 -122
  576. package/esm2022/table/table_public_index.mjs +0 -5
  577. package/esm2022/table/testing/cell-harness.mjs +0 -77
  578. package/esm2022/table/testing/index.mjs +0 -9
  579. package/esm2022/table/testing/public-api.mjs +0 -12
  580. package/esm2022/table/testing/row-harness.mjs +0 -84
  581. package/esm2022/table/testing/table-harness-filters.mjs +0 -2
  582. package/esm2022/table/testing/table-harness.mjs +0 -86
  583. package/esm2022/table/text-column.mjs +0 -60
  584. package/esm2022/tabs/index.mjs +0 -9
  585. package/esm2022/tabs/ink-bar.mjs +0 -149
  586. package/esm2022/tabs/module.mjs +0 -60
  587. package/esm2022/tabs/paginated-tab-header.mjs +0 -539
  588. package/esm2022/tabs/public-api.mjs +0 -21
  589. package/esm2022/tabs/tab-body.mjs +0 -199
  590. package/esm2022/tabs/tab-config.mjs +0 -11
  591. package/esm2022/tabs/tab-content.mjs +0 -32
  592. package/esm2022/tabs/tab-group.mjs +0 -469
  593. package/esm2022/tabs/tab-header.mjs +0 -86
  594. package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
  595. package/esm2022/tabs/tab-label.mjs +0 -44
  596. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
  597. package/esm2022/tabs/tab.mjs +0 -128
  598. package/esm2022/tabs/tabs-animations.mjs +0 -45
  599. package/esm2022/tabs/tabs_public_index.mjs +0 -5
  600. package/esm2022/tabs/testing/index.mjs +0 -9
  601. package/esm2022/tabs/testing/public-api.mjs +0 -13
  602. package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
  603. package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
  604. package/esm2022/tabs/testing/tab-harness.mjs +0 -66
  605. package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
  606. package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
  607. package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
  608. package/esm2022/toolbar/index.mjs +0 -9
  609. package/esm2022/toolbar/public-api.mjs +0 -10
  610. package/esm2022/toolbar/testing/index.mjs +0 -9
  611. package/esm2022/toolbar/testing/public-api.mjs +0 -10
  612. package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
  613. package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
  614. package/esm2022/toolbar/toolbar-module.mjs +0 -24
  615. package/esm2022/toolbar/toolbar.mjs +0 -84
  616. package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
  617. package/esm2022/tooltip/index.mjs +0 -9
  618. package/esm2022/tooltip/module.mjs +0 -29
  619. package/esm2022/tooltip/public-api.mjs +0 -11
  620. package/esm2022/tooltip/testing/index.mjs +0 -9
  621. package/esm2022/tooltip/testing/public-api.mjs +0 -10
  622. package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
  623. package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
  624. package/esm2022/tooltip/tooltip-animations.mjs +0 -24
  625. package/esm2022/tooltip/tooltip.mjs +0 -920
  626. package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
  627. package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
  628. package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
  629. package/esm2022/tree/index.mjs +0 -9
  630. package/esm2022/tree/node.mjs +0 -220
  631. package/esm2022/tree/outlet.mjs +0 -46
  632. package/esm2022/tree/padding.mjs +0 -46
  633. package/esm2022/tree/public-api.mjs +0 -16
  634. package/esm2022/tree/testing/index.mjs +0 -9
  635. package/esm2022/tree/testing/node-harness.mjs +0 -73
  636. package/esm2022/tree/testing/public-api.mjs +0 -11
  637. package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
  638. package/esm2022/tree/testing/tree-harness.mjs +0 -123
  639. package/esm2022/tree/toggle.mjs +0 -27
  640. package/esm2022/tree/tree-module.mjs +0 -50
  641. package/esm2022/tree/tree.mjs +0 -34
  642. package/esm2022/tree/tree_public_index.mjs +0 -5
@@ -1,56 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { InjectionToken } from '@angular/core';
9
- /**
10
- * Thumb types: range slider has two thumbs (START, END) whereas single point
11
- * slider only has one thumb (END).
12
- */
13
- export var _MatThumb;
14
- (function (_MatThumb) {
15
- _MatThumb[_MatThumb["START"] = 1] = "START";
16
- _MatThumb[_MatThumb["END"] = 2] = "END";
17
- })(_MatThumb || (_MatThumb = {}));
18
- /** Tick mark enum, for discrete sliders. */
19
- export var _MatTickMark;
20
- (function (_MatTickMark) {
21
- _MatTickMark[_MatTickMark["ACTIVE"] = 0] = "ACTIVE";
22
- _MatTickMark[_MatTickMark["INACTIVE"] = 1] = "INACTIVE";
23
- })(_MatTickMark || (_MatTickMark = {}));
24
- /**
25
- * Injection token that can be used for a `MatSlider` to provide itself as a
26
- * parent to the `MatSliderThumb` and `MatSliderRangeThumb`.
27
- * Used primarily to avoid circular imports.
28
- * @docs-private
29
- */
30
- export const MAT_SLIDER = new InjectionToken('_MatSlider');
31
- /**
32
- * Injection token that can be used to query for a `MatSliderThumb`.
33
- * Used primarily to avoid circular imports.
34
- * @docs-private
35
- */
36
- export const MAT_SLIDER_THUMB = new InjectionToken('_MatSliderThumb');
37
- /**
38
- * Injection token that can be used to query for a `MatSliderRangeThumb`.
39
- * Used primarily to avoid circular imports.
40
- * @docs-private
41
- */
42
- export const MAT_SLIDER_RANGE_THUMB = new InjectionToken('_MatSliderRangeThumb');
43
- /**
44
- * Injection token that can be used to query for a `MatSliderVisualThumb`.
45
- * Used primarily to avoid circular imports.
46
- * @docs-private
47
- */
48
- export const MAT_SLIDER_VISUAL_THUMB = new InjectionToken('_MatSliderVisualThumb');
49
- /**
50
- * A simple change event emitted by the MatSlider component.
51
- * @deprecated Use event bindings directly on the MatSliderThumbs for `change` and `input` events. See https://v17.material.angular.io/guide/mdc-migration for information about migrating.
52
- * @breaking-change 17.0.0
53
- */
54
- export class MatSliderChange {
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zbGlkZXIvc2xpZGVyLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUdoRjs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDJDQUFTLENBQUE7SUFDVCx1Q0FBTyxDQUFBO0FBQ1QsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBRUQsNENBQTRDO0FBQzVDLE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDdEIsbURBQVUsQ0FBQTtJQUNWLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBSyxZQUFZLENBQUMsQ0FBQztBQUUvRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQUssaUJBQWlCLENBQUMsQ0FBQztBQUUxRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQUssc0JBQXNCLENBQUMsQ0FBQztBQUVyRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQUssdUJBQXVCLENBQUMsQ0FBQztBQWN2Rjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7Q0FTM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFdyaXRhYmxlU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0UmlwcGxlLCBSaXBwbGVHbG9iYWxPcHRpb25zfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuLyoqXG4gKiBUaHVtYiB0eXBlczogcmFuZ2Ugc2xpZGVyIGhhcyB0d28gdGh1bWJzIChTVEFSVCwgRU5EKSB3aGVyZWFzIHNpbmdsZSBwb2ludFxuICogc2xpZGVyIG9ubHkgaGFzIG9uZSB0aHVtYiAoRU5EKS5cbiAqL1xuZXhwb3J0IGVudW0gX01hdFRodW1iIHtcbiAgU1RBUlQgPSAxLFxuICBFTkQgPSAyLFxufVxuXG4vKiogVGljayBtYXJrIGVudW0sIGZvciBkaXNjcmV0ZSBzbGlkZXJzLiAqL1xuZXhwb3J0IGVudW0gX01hdFRpY2tNYXJrIHtcbiAgQUNUSVZFID0gMCxcbiAgSU5BQ1RJVkUgPSAxLFxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIGZvciBhIGBNYXRTbGlkZXJgIHRvIHByb3ZpZGUgaXRzZWxmIGFzIGFcbiAqIHBhcmVudCB0byB0aGUgYE1hdFNsaWRlclRodW1iYCBhbmQgYE1hdFNsaWRlclJhbmdlVGh1bWJgLlxuICogVXNlZCBwcmltYXJpbHkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9TTElERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZm9yIGEgYE1hdFNsaWRlclRodW1iYC5cbiAqIFVzZWQgcHJpbWFyaWx5IHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydHMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfU0xJREVSX1RIVU1CID0gbmV3IEluamVjdGlvblRva2VuPHt9PignX01hdFNsaWRlclRodW1iJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZm9yIGEgYE1hdFNsaWRlclJhbmdlVGh1bWJgLlxuICogVXNlZCBwcmltYXJpbHkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9TTElERVJfUkFOR0VfVEhVTUIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyUmFuZ2VUaHVtYicpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IGZvciBhIGBNYXRTbGlkZXJWaXN1YWxUaHVtYmAuXG4gKiBVc2VkIHByaW1hcmlseSB0byBhdm9pZCBjaXJjdWxhciBpbXBvcnRzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgTUFUX1NMSURFUl9WSVNVQUxfVEhVTUIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyVmlzdWFsVGh1bWInKTtcblxuLyoqIFJlcHJlc2VudHMgYSBkcmFnIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIE1hdFNsaWRlciBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdFNsaWRlckRyYWdFdmVudCB7XG4gIC8qKiBUaGUgTWF0U2xpZGVyVGh1bWIgdGhhdCB3YXMgaW50ZXJhY3RlZCB3aXRoLiAqL1xuICBzb3VyY2U6IF9NYXRTbGlkZXJUaHVtYjtcblxuICAvKiogVGhlIE1hdFNsaWRlciB0aGF0IHdhcyBpbnRlcmFjdGVkIHdpdGguICovXG4gIHBhcmVudDogX01hdFNsaWRlcjtcblxuICAvKiogVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNsaWRlci4gKi9cbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSBjaGFuZ2UgZXZlbnQgZW1pdHRlZCBieSB0aGUgTWF0U2xpZGVyIGNvbXBvbmVudC5cbiAqIEBkZXByZWNhdGVkIFVzZSBldmVudCBiaW5kaW5ncyBkaXJlY3RseSBvbiB0aGUgTWF0U2xpZGVyVGh1bWJzIGZvciBgY2hhbmdlYCBhbmQgYGlucHV0YCBldmVudHMuIFNlZSBodHRwczovL3YxNy5tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL21kYy1taWdyYXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IG1pZ3JhdGluZy5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTcuMC4wXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRTbGlkZXJDaGFuZ2Uge1xuICAvKiogVGhlIE1hdFNsaWRlclRodW1iIHRoYXQgd2FzIGludGVyYWN0ZWQgd2l0aC4gKi9cbiAgc291cmNlOiBfTWF0U2xpZGVyVGh1bWI7XG5cbiAgLyoqIFRoZSBNYXRTbGlkZXIgdGhhdCB3YXMgaW50ZXJhY3RlZCB3aXRoLiAqL1xuICBwYXJlbnQ6IF9NYXRTbGlkZXI7XG5cbiAgLyoqIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNvdXJjZSBzbGlkZXIuICovXG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgX01hdFNsaWRlciB7XG4gIC8qKiBXaGV0aGVyIHRoZSBnaXZlbiBwb2ludGVyIGV2ZW50IG9jY3VycmVkIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBzbGlkZXIgcG9pbnRlcidzIERPTSBSZWN0LiAqL1xuICBfaXNDdXJzb3JPblNsaWRlclRodW1iKGV2ZW50OiBQb2ludGVyRXZlbnQsIHJlY3Q6IERPTVJlY3QpOiBib29sZWFuO1xuXG4gIC8qKiBHZXRzIHRoZSBzbGlkZXIgdGh1bWIgaW5wdXQgb2YgdGhlIGdpdmVuIHRodW1iIHBvc2l0aW9uLiAqL1xuICBfZ2V0SW5wdXQodGh1bWJQb3NpdGlvbjogX01hdFRodW1iKTogX01hdFNsaWRlclRodW1iIHwgX01hdFNsaWRlclJhbmdlVGh1bWIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIEdldHMgdGhlIHNsaWRlciB0aHVtYiBIVE1MIGlucHV0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHRodW1iIHBvc2l0aW9uLiAqL1xuICBfZ2V0VGh1bWIodGh1bWJQb3NpdGlvbjogX01hdFRodW1iKTogX01hdFNsaWRlclZpc3VhbFRodW1iO1xuXG4gIC8qKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1pbjogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1heDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgYW1vdW50IHRoYXQgc2xpZGVyIHZhbHVlcyBjYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS4gKi9cbiAgc3RlcDogbnVtYmVyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgYSByYW5nZSBzbGlkZXIuICovXG4gIF9pc1JhbmdlOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgcnRsLiAqL1xuICBfaXNSdGw6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBzdG9yZWQgd2lkdGggb2YgdGhlIGhvc3QgZWxlbWVudCdzIGJvdW5kaW5nIGNsaWVudCByZWN0LiAqL1xuICBfY2FjaGVkV2lkdGg6IG51bWJlcjtcblxuICAvKiogVGhlIHN0b3JlZCB3aWR0aCBvZiB0aGUgaG9zdCBlbGVtZW50J3MgYm91bmRpbmcgY2xpZW50IHJlY3QuICovXG4gIF9jYWNoZWRMZWZ0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWRkaW5nIG9mIHRoZSBuYXRpdmUgc2xpZGVyIGlucHV0LiBUaGlzIGlzIGFkZGVkIGluIG9yZGVyIHRvIG1ha2UgdGhlIHJlZ2lvbiB3aGVyZSB0aGVcbiAgICogdGh1bWIgcmlwcGxlIGV4dGVuZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBzbGlkZXIgdHJhY2sgY2xpY2thYmxlLlxuICAgKi9cbiAgX2lucHV0UGFkZGluZzogbnVtYmVyO1xuXG4gIC8qKiBUaGUgcmFkaXVzIG9mIHRoZSB2aXN1YWwgc2xpZGVyJ3MgcmlwcGxlLiAqL1xuICBfcmlwcGxlUmFkaXVzOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgYG1hdFJpcHBsZWAgaW5zdGFuY2VzLiAqL1xuICByZWFkb25seSBfZ2xvYmFsUmlwcGxlT3B0aW9ucz86IFJpcHBsZUdsb2JhbE9wdGlvbnM7XG5cbiAgLyoqIFdoZXRoZXIgYW5pbWF0aW9ucyBoYXZlIGJlZW4gZGlzYWJsZWQuICovXG4gIF9ub29wQW5pbWF0aW9uczogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHNsaWRlciBzaG91bGQgdXNlIGFuaW1hdGlvbnMuICovXG4gIF9oYXNBbmltYXRpb246IGJvb2xlYW47XG5cbiAgLyoqIFRyaWdnZXJzIFVJIHVwZGF0ZXMgdGhhdCBhcmUgbmVlZGVkIGFmdGVyIGEgc2xpZGVyIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkLiAqL1xuICBfb25WYWx1ZUNoYW5nZTogKHNvdXJjZTogX01hdFNsaWRlclRodW1iKSA9PiB2b2lkO1xuXG4gIC8qKiBUcmlnZ2VycyBVSSB1cGRhdGVzIHRoYXQgYXJlIG5lZWRlZCBhZnRlciB0aGUgc2xpZGVyIHRodW1iIHBvc2l0aW9uIGhhcyBjaGFuZ2VkLiAqL1xuICBfb25UcmFuc2xhdGVYQ2hhbmdlOiAoc291cmNlOiBfTWF0U2xpZGVyVGh1bWIpID0+IHZvaWQ7XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIHN0b3JlZCBzbGlkZXIgZGltZW5zaW9ucyB1c2luZyB0aGUgY3VycmVudCBib3VuZGluZyBjbGllbnQgcmVjdC4gKi9cbiAgX3VwZGF0ZURpbWVuc2lvbnM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIHNjYWxlIG9uIHRoZSBhY3RpdmUgcG9ydGlvbiBvZiB0aGUgdHJhY2suICovXG4gIF91cGRhdGVUcmFja1VJOiAoc291cmNlOiBfTWF0U2xpZGVyVGh1bWIpID0+IHZvaWQ7XG5cbiAgLyoqIFVzZWQgdG8gc2V0IHRoZSB0cmFuc2l0aW9uIGR1cmF0aW9uIGZvciB0aHVtYiBhbmQgdHJhY2sgYW5pbWF0aW9ucy4gKi9cbiAgX3NldFRyYW5zaXRpb246ICh3aXRoQW5pbWF0aW9uOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIF9jZHI6IENoYW5nZURldGVjdG9yUmVmO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIF9NYXRTbGlkZXJUaHVtYiB7XG4gIC8qKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1pbjogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1heDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgYW1vdW50IHRoYXQgc2xpZGVyIHZhbHVlcyBjYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS4gKi9cbiAgc3RlcDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIHNsaWRlciBpbnB1dC4gKi9cbiAgdmFsdWU6IG51bWJlcjtcblxuICAvKiogVGhlIGN1cnJlbnQgdHJhbnNsYXRlWCBpbiBweCBvZiB0aGUgc2xpZGVyIHZpc3VhbCB0aHVtYi4gKi9cbiAgdHJhbnNsYXRlWDogbnVtYmVyO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHRodW1iIGlzIHRoZSBzdGFydCBvciBlbmQgdGh1bWIuICovXG4gIHRodW1iUG9zaXRpb246IF9NYXRUaHVtYjtcblxuICAvKiogU2ltaWxhciB0byBwZXJjZW50YWdlIGJ1dCBjYWxjdWFsdGVkIHVzaW5nIHRyYW5zbGF0ZVggcmVsYXRpdmUgdG8gdGhlIHRvdGFsIHRyYWNrIHdpZHRoLiAqL1xuICBmaWxsUGVyY2VudGFnZTogbnVtYmVyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgaG9zdCBuYXRpdmUgSFRNTCBpbnB1dCBlbGVtZW50LiAqL1xuICBfaG9zdEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGN1cnJlbnRseSBmb2N1c2VkIChlaXRoZXIgYnkgdGFiIG9yIGFmdGVyIGNsaWNraW5nKS4gKi9cbiAgX2lzRm9jdXNlZDogYm9vbGVhbjtcblxuICAvKiogVGhlIGFyaWEtdmFsdWV0ZXh0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQncyB2YWx1ZS4gKi9cbiAgX3ZhbHVldGV4dDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgVUkgdXBkYXRlcyBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogVGhpcyBmbGFnIGlzIHVzZWQgdG8gYXZvaWQgZmxpY2tlcmluZ1xuICAgKiB3aGVuIGNvcnJlY3RpbmcgdmFsdWVzIG9uIHBvaW50ZXIgdXAvZG93bi5cbiAgICovXG4gIF9za2lwVUlVcGRhdGU6IGJvb2xlYW47XG5cbiAgLyoqIEhhbmRsZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIHByb3BlcnRpZXMgZm9yIHRoZSBzbGlkZXIgaW5wdXQuICovXG4gIGluaXRQcm9wczogKCkgPT4gdm9pZDtcblxuICAvKiogSGFuZGxlcyBVSSBpbml0aWFsaXphdGlvbiBjb250cm9sbGVkIGJ5IHRoaXMgc2xpZGVyIGlucHV0LiAqL1xuICBpbml0VUk6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIHZpc3VhbCB0aHVtYidzIHRyYW5zbGF0ZVggYmFzZWQgb24gdGhlIHNsaWRlciBpbnB1dCdzIGN1cnJlbnQgdmFsdWUuICovXG4gIF9jYWxjVHJhbnNsYXRlWEJ5VmFsdWU6ICgpID0+IG51bWJlcjtcblxuICAvKiogVXBkYXRlcyB0aGUgdmlzdWFsIHRodW1iIGJhc2VkIG9uIHRoZSBzbGlkZXIgaW5wdXQncyBjdXJyZW50IHZhbHVlLiAqL1xuICBfdXBkYXRlVGh1bWJVSUJ5VmFsdWU6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNsaWRlciBpbnB1dCB0byBkaXNwcm9wb3J0aW9uYXRlIGRpbWVuc2lvbnMgdG8gYWxsb3cgZm9yIHRvdWNoXG4gICAqIGV2ZW50cyB0byBiZSBjYXB0dXJlZCBvbiB0b3VjaCBkZXZpY2VzLlxuICAgKi9cbiAgX3VwZGF0ZVdpZHRoSW5hY3RpdmU6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHRoZSBzbGlkZXIgd2lkdGggdG8gdGhlIGNvcnJlY3RcbiAgICogZGltZW5zaW9ucyB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy5cbiAgICovXG4gIF91cGRhdGVXaWR0aEFjdGl2ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBfTWF0U2xpZGVyUmFuZ2VUaHVtYiBleHRlbmRzIF9NYXRTbGlkZXJUaHVtYiB7XG4gIC8qKiBXaGV0aGVyIHRoaXMgc2xpZGVyIGNvcnJlc3BvbmRzIHRvIHRoZSBpbnB1dCBvbiB0aGUgbGVmdCBoYW5kIHNpZGUuICovXG4gIF9pc0xlZnRUaHVtYjogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgc2libGluZyBNYXRTbGlkZXJSYW5nZVRodW1iLlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBpdCBpcyB0b28gZWFybHkgaW4gQW5ndWxhcidzIGxpZmUgY3ljbGUuXG4gICAqL1xuICBnZXRTaWJsaW5nOiAoKSA9PiBfTWF0U2xpZGVyUmFuZ2VUaHVtYiB8IHVuZGVmaW5lZDtcblxuICAvKiogVXNlZCB0byBjYWNoZSB3aGV0aGVyIHRoaXMgc2xpZGVyIGlucHV0IGNvcnJlc3BvbmRzIHRvIHRoZSB2aXN1YWwgbGVmdCB0aHVtYi4gKi9cbiAgX3NldElzTGVmdFRodW1iOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBVcGRhdGVzIHRoZSBpbnB1dCBzdHlsZXMgdG8gY29udHJvbCB3aGV0aGVyIGl0IGlzIHBpbm5lZCB0byB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSBtYXQtc2xpZGVyLiAqL1xuICBfdXBkYXRlU3RhdGljU3R5bGVzOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBVcGRhdGVzIHRoZSBtaW4gYW5kIG1heCBwcm9wZXJ0aWVzIG9mIHRoaXMgc2xpZGVyIGlucHV0IGFjY29yZGluZyB0byBpdCdzIHNpYmxpbmcuICovXG4gIF91cGRhdGVNaW5NYXg6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgX01hdFNsaWRlclZpc3VhbFRodW1iIHtcbiAgLyoqIFRoZSBNYXRSaXBwbGUgZm9yIHRoaXMgc2xpZGVyIHRodW1iLiAqL1xuICBfcmlwcGxlOiBNYXRSaXBwbGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciB0aHVtYiBpcyBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZC4gKi9cbiAgX2lzQWN0aXZlOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgaG9zdCBuYXRpdmUgSFRNTCBpbnB1dCBlbGVtZW50LiAqL1xuICBfaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBTaG93cyB0aGUgdmFsdWUgaW5kaWNhdG9yIHVpLiAqL1xuICBfc2hvd1ZhbHVlSW5kaWNhdG9yOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBIaWRlcyB0aGUgdmFsdWUgaW5kaWNhdG9yIHVpLiAqL1xuICBfaGlkZVZhbHVlSW5kaWNhdG9yOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgdmlzdWFsIHRodW1iIGlzIGN1cnJlbnRseSBzaG93aW5nIGFueSByaXBwbGUuICovXG4gIF9pc1Nob3dpbmdBbnlSaXBwbGU6ICgpID0+IGJvb2xlYW47XG59XG4iXX0=
@@ -1,231 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, NgZone, ViewChild, ViewEncapsulation, inject, } from '@angular/core';
9
- import { MatRipple, RippleState } from '@angular/material/core';
10
- import { _MatThumb, MAT_SLIDER, MAT_SLIDER_VISUAL_THUMB, } from './slider-interface';
11
- import { Platform } from '@angular/cdk/platform';
12
- import * as i0 from "@angular/core";
13
- /**
14
- * The visual slider thumb.
15
- *
16
- * Handles the slider thumb ripple states (hover, focus, and active),
17
- * and displaying the value tooltip on discrete sliders.
18
- * @docs-private
19
- */
20
- export class MatSliderVisualThumb {
21
- constructor(_cdr, _ngZone, _elementRef, _slider) {
22
- this._cdr = _cdr;
23
- this._ngZone = _ngZone;
24
- this._slider = _slider;
25
- /** Whether the slider thumb is currently being hovered. */
26
- this._isHovered = false;
27
- /** Whether the slider thumb is currently being pressed. */
28
- this._isActive = false;
29
- /** Whether the value indicator tooltip is visible. */
30
- this._isValueIndicatorVisible = false;
31
- this._platform = inject(Platform);
32
- this._onPointerMove = (event) => {
33
- if (this._sliderInput._isFocused) {
34
- return;
35
- }
36
- const rect = this._hostElement.getBoundingClientRect();
37
- const isHovered = this._slider._isCursorOnSliderThumb(event, rect);
38
- this._isHovered = isHovered;
39
- if (isHovered) {
40
- this._showHoverRipple();
41
- }
42
- else {
43
- this._hideRipple(this._hoverRippleRef);
44
- }
45
- };
46
- this._onMouseLeave = () => {
47
- this._isHovered = false;
48
- this._hideRipple(this._hoverRippleRef);
49
- };
50
- this._onFocus = () => {
51
- // We don't want to show the hover ripple on top of the focus ripple.
52
- // Happen when the users cursor is over a thumb and then the user tabs to it.
53
- this._hideRipple(this._hoverRippleRef);
54
- this._showFocusRipple();
55
- this._hostElement.classList.add('mdc-slider__thumb--focused');
56
- };
57
- this._onBlur = () => {
58
- // Happens when the user tabs away while still dragging a thumb.
59
- if (!this._isActive) {
60
- this._hideRipple(this._focusRippleRef);
61
- }
62
- // Happens when the user tabs away from a thumb but their cursor is still over it.
63
- if (this._isHovered) {
64
- this._showHoverRipple();
65
- }
66
- this._hostElement.classList.remove('mdc-slider__thumb--focused');
67
- };
68
- this._onDragStart = (event) => {
69
- if (event.button !== 0) {
70
- return;
71
- }
72
- this._isActive = true;
73
- this._showActiveRipple();
74
- };
75
- this._onDragEnd = () => {
76
- this._isActive = false;
77
- this._hideRipple(this._activeRippleRef);
78
- // Happens when the user starts dragging a thumb, tabs away, and then stops dragging.
79
- if (!this._sliderInput._isFocused) {
80
- this._hideRipple(this._focusRippleRef);
81
- }
82
- // On Safari we need to immediately re-show the hover ripple because
83
- // sliders do not retain focus from pointer events on that platform.
84
- if (this._platform.SAFARI) {
85
- this._showHoverRipple();
86
- }
87
- };
88
- this._hostElement = _elementRef.nativeElement;
89
- }
90
- ngAfterViewInit() {
91
- this._ripple.radius = 24;
92
- this._sliderInput = this._slider._getInput(this.thumbPosition);
93
- this._sliderInputEl = this._sliderInput._hostElement;
94
- const input = this._sliderInputEl;
95
- // These listeners don't update any data bindings so we bind them outside
96
- // of the NgZone to prevent Angular from needlessly running change detection.
97
- this._ngZone.runOutsideAngular(() => {
98
- input.addEventListener('pointermove', this._onPointerMove);
99
- input.addEventListener('pointerdown', this._onDragStart);
100
- input.addEventListener('pointerup', this._onDragEnd);
101
- input.addEventListener('pointerleave', this._onMouseLeave);
102
- input.addEventListener('focus', this._onFocus);
103
- input.addEventListener('blur', this._onBlur);
104
- });
105
- }
106
- ngOnDestroy() {
107
- const input = this._sliderInputEl;
108
- if (input) {
109
- input.removeEventListener('pointermove', this._onPointerMove);
110
- input.removeEventListener('pointerdown', this._onDragStart);
111
- input.removeEventListener('pointerup', this._onDragEnd);
112
- input.removeEventListener('pointerleave', this._onMouseLeave);
113
- input.removeEventListener('focus', this._onFocus);
114
- input.removeEventListener('blur', this._onBlur);
115
- }
116
- }
117
- /** Handles displaying the hover ripple. */
118
- _showHoverRipple() {
119
- if (!this._isShowingRipple(this._hoverRippleRef)) {
120
- this._hoverRippleRef = this._showRipple({ enterDuration: 0, exitDuration: 0 });
121
- this._hoverRippleRef?.element.classList.add('mat-mdc-slider-hover-ripple');
122
- }
123
- }
124
- /** Handles displaying the focus ripple. */
125
- _showFocusRipple() {
126
- // Show the focus ripple event if noop animations are enabled.
127
- if (!this._isShowingRipple(this._focusRippleRef)) {
128
- this._focusRippleRef = this._showRipple({ enterDuration: 0, exitDuration: 0 }, true);
129
- this._focusRippleRef?.element.classList.add('mat-mdc-slider-focus-ripple');
130
- }
131
- }
132
- /** Handles displaying the active ripple. */
133
- _showActiveRipple() {
134
- if (!this._isShowingRipple(this._activeRippleRef)) {
135
- this._activeRippleRef = this._showRipple({ enterDuration: 225, exitDuration: 400 });
136
- this._activeRippleRef?.element.classList.add('mat-mdc-slider-active-ripple');
137
- }
138
- }
139
- /** Whether the given rippleRef is currently fading in or visible. */
140
- _isShowingRipple(rippleRef) {
141
- return rippleRef?.state === RippleState.FADING_IN || rippleRef?.state === RippleState.VISIBLE;
142
- }
143
- /** Manually launches the slider thumb ripple using the specified ripple animation config. */
144
- _showRipple(animation, ignoreGlobalRippleConfig) {
145
- if (this._slider.disabled) {
146
- return;
147
- }
148
- this._showValueIndicator();
149
- if (this._slider._isRange) {
150
- const sibling = this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);
151
- sibling._showValueIndicator();
152
- }
153
- if (this._slider._globalRippleOptions?.disabled && !ignoreGlobalRippleConfig) {
154
- return;
155
- }
156
- return this._ripple.launch({
157
- animation: this._slider._noopAnimations ? { enterDuration: 0, exitDuration: 0 } : animation,
158
- centered: true,
159
- persistent: true,
160
- });
161
- }
162
- /**
163
- * Fades out the given ripple.
164
- * Also hides the value indicator if no ripple is showing.
165
- */
166
- _hideRipple(rippleRef) {
167
- rippleRef?.fadeOut();
168
- if (this._isShowingAnyRipple()) {
169
- return;
170
- }
171
- if (!this._slider._isRange) {
172
- this._hideValueIndicator();
173
- }
174
- const sibling = this._getSibling();
175
- if (!sibling._isShowingAnyRipple()) {
176
- this._hideValueIndicator();
177
- sibling._hideValueIndicator();
178
- }
179
- }
180
- /** Shows the value indicator ui. */
181
- _showValueIndicator() {
182
- this._hostElement.classList.add('mdc-slider__thumb--with-indicator');
183
- }
184
- /** Hides the value indicator ui. */
185
- _hideValueIndicator() {
186
- this._hostElement.classList.remove('mdc-slider__thumb--with-indicator');
187
- }
188
- _getSibling() {
189
- return this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);
190
- }
191
- /** Gets the value indicator container's native HTML element. */
192
- _getValueIndicatorContainer() {
193
- return this._valueIndicatorContainer?.nativeElement;
194
- }
195
- /** Gets the native HTML element of the slider thumb knob. */
196
- _getKnob() {
197
- return this._knob.nativeElement;
198
- }
199
- _isShowingAnyRipple() {
200
- return (this._isShowingRipple(this._hoverRippleRef) ||
201
- this._isShowingRipple(this._focusRippleRef) ||
202
- this._isShowingRipple(this._activeRippleRef));
203
- }
204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatSliderVisualThumb, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: MAT_SLIDER }], target: i0.ɵɵFactoryTarget.Component }); }
205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0-next.2", type: MatSliderVisualThumb, isStandalone: true, selector: "mat-slider-visual-thumb", inputs: { discrete: "discrete", thumbPosition: "thumbPosition", valueIndicatorText: "valueIndicatorText" }, host: { classAttribute: "mdc-slider__thumb mat-mdc-slider-visual-thumb" }, providers: [{ provide: MAT_SLIDER_VISUAL_THUMB, useExisting: MatSliderVisualThumb }], viewQueries: [{ propertyName: "_ripple", first: true, predicate: MatRipple, descendants: true }, { propertyName: "_knob", first: true, predicate: ["knob"], descendants: true }, { propertyName: "_valueIndicatorContainer", first: true, predicate: ["valueIndicatorContainer"], descendants: true }], ngImport: i0, template: "@if (discrete) {\n <div class=\"mdc-slider__value-indicator-container\" #valueIndicatorContainer>\n <div class=\"mdc-slider__value-indicator\">\n <span class=\"mdc-slider__value-indicator-text\">{{valueIndicatorText}}</span>\n </div>\n </div>\n}\n<div class=\"mdc-slider__thumb-knob\" #knob></div>\n<div matRipple class=\"mat-mdc-focus-indicator\" [matRippleDisabled]=\"true\"></div>\n", styles: [".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}"], dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
206
- }
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatSliderVisualThumb, decorators: [{
208
- type: Component,
209
- args: [{ selector: 'mat-slider-visual-thumb', host: {
210
- 'class': 'mdc-slider__thumb mat-mdc-slider-visual-thumb',
211
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MAT_SLIDER_VISUAL_THUMB, useExisting: MatSliderVisualThumb }], standalone: true, imports: [MatRipple], template: "@if (discrete) {\n <div class=\"mdc-slider__value-indicator-container\" #valueIndicatorContainer>\n <div class=\"mdc-slider__value-indicator\">\n <span class=\"mdc-slider__value-indicator-text\">{{valueIndicatorText}}</span>\n </div>\n </div>\n}\n<div class=\"mdc-slider__thumb-knob\" #knob></div>\n<div matRipple class=\"mat-mdc-focus-indicator\" [matRippleDisabled]=\"true\"></div>\n", styles: [".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}"] }]
212
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: undefined, decorators: [{
213
- type: Inject,
214
- args: [MAT_SLIDER]
215
- }] }], propDecorators: { discrete: [{
216
- type: Input
217
- }], thumbPosition: [{
218
- type: Input
219
- }], valueIndicatorText: [{
220
- type: Input
221
- }], _ripple: [{
222
- type: ViewChild,
223
- args: [MatRipple]
224
- }], _knob: [{
225
- type: ViewChild,
226
- args: ['knob']
227
- }], _valueIndicatorContainer: [{
228
- type: ViewChild,
229
- args: ['valueIndicatorContainer']
230
- }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRodW1iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NsaWRlci9zbGlkZXItdGh1bWIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2xpZGVyL3NsaWRlci10aHVtYi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBb0MsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUNMLFNBQVMsRUFJVCxVQUFVLEVBQ1YsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUUvQzs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8sb0JBQW9CO0lBaUQvQixZQUNXLElBQXVCLEVBQ2YsT0FBZSxFQUNoQyxXQUFvQyxFQUNSLE9BQW1CO1FBSHRDLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUVKLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFsQmpELDJEQUEyRDtRQUNuRCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXBDLDJEQUEyRDtRQUMzRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHNEQUFzRDtRQUN0RCw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFLbEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQTBDN0IsbUJBQWMsR0FBRyxDQUFDLEtBQW1CLEVBQVEsRUFBRTtZQUNyRCxJQUFJLElB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aWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRSaXBwbGUsIFJpcHBsZUFuaW1hdGlvbkNvbmZpZywgUmlwcGxlUmVmLCBSaXBwbGVTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1xuICBfTWF0VGh1bWIsXG4gIF9NYXRTbGlkZXIsXG4gIF9NYXRTbGlkZXJUaHVtYixcbiAgX01hdFNsaWRlclZpc3VhbFRodW1iLFxuICBNQVRfU0xJREVSLFxuICBNQVRfU0xJREVSX1ZJU1VBTF9USFVNQixcbn0gZnJvbSAnLi9zbGlkZXItaW50ZXJmYWNlJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5cbi8qKlxuICogVGhlIHZpc3VhbCBzbGlkZXIgdGh1bWIuXG4gKlxuICogSGFuZGxlcyB0aGUgc2xpZGVyIHRodW1iIHJpcHBsZSBzdGF0ZXMgKGhvdmVyLCBmb2N1cywgYW5kIGFjdGl2ZSksXG4gKiBhbmQgZGlzcGxheWluZyB0aGUgdmFsdWUgdG9vbHRpcCBvbiBkaXNjcmV0ZSBzbGlkZXJzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtc2xpZGVyLXZpc3VhbC10aHVtYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXItdGh1bWIuaHRtbCcsXG4gIHN0eWxlVXJsOiAnc2xpZGVyLXRodW1iLmNzcycsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWRjLXNsaWRlcl9fdGh1bWIgbWF0LW1kYy1zbGlkZXItdmlzdWFsLXRodW1iJyxcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfU0xJREVSX1ZJU1VBTF9USFVNQiwgdXNlRXhpc3Rpbmc6IE1hdFNsaWRlclZpc3VhbFRodW1ifV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRSaXBwbGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRTbGlkZXJWaXN1YWxUaHVtYiBpbXBsZW1lbnRzIF9NYXRTbGlkZXJWaXN1YWxUaHVtYiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciBkaXNwbGF5cyBhIG51bWVyaWMgdmFsdWUgbGFiZWwgdXBvbiBwcmVzc2luZyB0aGUgdGh1bWIuICovXG4gIEBJbnB1dCgpIGRpc2NyZXRlOiBib29sZWFuO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hpY2ggc2xpZGVyIHRodW1iIHRoaXMgaW5wdXQgY29ycmVzcG9uZHMgdG8uICovXG4gIEBJbnB1dCgpIHRodW1iUG9zaXRpb246IF9NYXRUaHVtYjtcblxuICAvKiogVGhlIGRpc3BsYXkgdmFsdWUgb2YgdGhlIHNsaWRlciB0aHVtYi4gKi9cbiAgQElucHV0KCkgdmFsdWVJbmRpY2F0b3JUZXh0OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBNYXRSaXBwbGUgZm9yIHRoaXMgc2xpZGVyIHRodW1iLiAqL1xuICBAVmlld0NoaWxkKE1hdFJpcHBsZSkgcmVhZG9ubHkgX3JpcHBsZTogTWF0UmlwcGxlO1xuXG4gIC8qKiBUaGUgc2xpZGVyIHRodW1iIGtub2IuICovXG4gIEBWaWV3Q2hpbGQoJ2tub2InKSBfa25vYjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqIFRoZSBzbGlkZXIgdGh1bWIgdmFsdWUgaW5kaWNhdG9yIGNvbnRhaW5lci4gKi9cbiAgQFZpZXdDaGlsZCgndmFsdWVJbmRpY2F0b3JDb250YWluZXInKVxuICBfdmFsdWVJbmRpY2F0b3JDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBUaGUgc2xpZGVyIGlucHV0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBzbGlkZXIgdGh1bWIuICovXG4gIHByaXZhdGUgX3NsaWRlcklucHV0OiBfTWF0U2xpZGVyVGh1bWI7XG5cbiAgLyoqIFRoZSBuYXRpdmUgaHRtbCBlbGVtZW50IG9mIHRoZSBzbGlkZXIgaW5wdXQgY29ycmVzcG9uZGluZyB0byB0aGlzIHRodW1iLiAqL1xuICBwcml2YXRlIF9zbGlkZXJJbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGUgUmlwcGxlUmVmIGZvciB0aGUgc2xpZGVyIHRodW1icyBob3ZlciBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfaG92ZXJSaXBwbGVSZWY6IFJpcHBsZVJlZiB8IHVuZGVmaW5lZDtcblxuICAvKiogVGhlIFJpcHBsZVJlZiBmb3IgdGhlIHNsaWRlciB0aHVtYnMgZm9jdXMgc3RhdGUuICovXG4gIHByaXZhdGUgX2ZvY3VzUmlwcGxlUmVmOiBSaXBwbGVSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFRoZSBSaXBwbGVSZWYgZm9yIHRoZSBzbGlkZXIgdGh1bWJzIGFjdGl2ZSBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfYWN0aXZlUmlwcGxlUmVmOiBSaXBwbGVSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciB0aHVtYiBpcyBjdXJyZW50bHkgYmVpbmcgaG92ZXJlZC4gKi9cbiAgcHJpdmF0ZSBfaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciB0aHVtYiBpcyBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZC4gKi9cbiAgX2lzQWN0aXZlID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHZhbHVlIGluZGljYXRvciB0b29sdGlwIGlzIHZpc2libGUuICovXG4gIF9pc1ZhbHVlSW5kaWNhdG9yVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgaG9zdCBuYXRpdmUgSFRNTCBpbnB1dCBlbGVtZW50LiAqL1xuICBfaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgX3BsYXRmb3JtID0gaW5qZWN0KFBsYXRmb3JtKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQEluamVjdChNQVRfU0xJREVSKSBwcml2YXRlIF9zbGlkZXI6IF9NYXRTbGlkZXIsXG4gICkge1xuICAgIHRoaXMuX2hvc3RFbGVtZW50ID0gX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9yaXBwbGUucmFkaXVzID0gMjQ7XG4gICAgdGhpcy5fc2xpZGVySW5wdXQgPSB0aGlzLl9zbGlkZXIuX2dldElucHV0KHRoaXMudGh1bWJQb3NpdGlvbikhO1xuICAgIHRoaXMuX3NsaWRlcklucHV0RWwgPSB0aGlzLl9zbGlkZXJJbnB1dC5faG9zdEVsZW1lbnQ7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9zbGlkZXJJbnB1dEVsO1xuXG4gICAgLy8gVGhlc2UgbGlzdGVuZXJzIGRvbid0IHVwZGF0ZSBhbnkgZGF0YSBiaW5kaW5ncyBzbyB3ZSBiaW5kIHRoZW0gb3V0c2lkZVxuICAgIC8vIG9mIHRoZSBOZ1pvbmUgdG8gcHJldmVudCBBbmd1bGFyIGZyb20gbmVlZGxlc3NseSBydW5uaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Qb2ludGVyTW92ZSk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX29uRHJhZ1N0YXJ0KTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX29uRHJhZ0VuZCk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCB0aGlzLl9vbk1vdXNlTGVhdmUpO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLl9vbkZvY3VzKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl9vbkJsdXIpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9zbGlkZXJJbnB1dEVsO1xuXG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIHRoaXMuX29uUG9pbnRlck1vdmUpO1xuICAgICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLl9vbkRyYWdTdGFydCk7XG4gICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLl9vbkRyYWdFbmQpO1xuICAgICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgdGhpcy5fb25Nb3VzZUxlYXZlKTtcbiAgICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5fb25Gb2N1cyk7XG4gICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5fb25CbHVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5fc2xpZGVySW5wdXQuX2lzRm9jdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9ob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBpc0hvdmVyZWQgPSB0aGlzLl9zbGlkZXIuX2lzQ3Vyc29yT25TbGlkZXJUaHVtYihldmVudCwgcmVjdCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gaXNIb3ZlcmVkO1xuXG4gICAgaWYgKGlzSG92ZXJlZCkge1xuICAgICAgdGhpcy5fc2hvd0hvdmVyUmlwcGxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vbk1vdXNlTGVhdmUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5faGlkZVJpcHBsZSh0aGlzLl9ob3ZlclJpcHBsZVJlZik7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25Gb2N1cyA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBXZSBkb24ndCB3YW50IHRvIHNob3cgdGhlIGhvdmVyIHJpcHBsZSBvbiB0b3Agb2YgdGhlIGZvY3VzIHJpcHBsZS5cbiAgICAvLyBIYXBwZW4gd2hlbiB0aGUgdXNlcnMgY3Vyc29yIGlzIG92ZXIgYSB0aHVtYiBhbmQgdGhlbiB0aGUgdXNlciB0YWJzIHRvIGl0LlxuICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpO1xuICAgIHRoaXMuX3Nob3dGb2N1c1JpcHBsZSgpO1xuICAgIHRoaXMuX2hvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21kYy1zbGlkZXJfX3RodW1iLS1mb2N1c2VkJyk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25CbHVyID0gKCk6IHZvaWQgPT4ge1xuICAgIC8vIEhhcHBlbnMgd2hlbiB0aGUgdXNlciB0YWJzIGF3YXkgd2hpbGUgc3RpbGwgZHJhZ2dpbmcgYSB0aHVtYi5cbiAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICB0aGlzLl9oaWRlUmlwcGxlKHRoaXMuX2ZvY3VzUmlwcGxlUmVmKTtcbiAgICB9XG4gICAgLy8gSGFwcGVucyB3aGVuIHRoZSB1c2VyIHRhYnMgYXdheSBmcm9tIGEgdGh1bWIgYnV0IHRoZWlyIGN1cnNvciBpcyBzdGlsbCBvdmVyIGl0LlxuICAgIGlmICh0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgIHRoaXMuX3Nob3dIb3ZlclJpcHBsZSgpO1xuICAgIH1cbiAgICB0aGlzLl9ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtc2xpZGVyX190aHVtYi0tZm9jdXNlZCcpO1xuICB9O1xuXG4gIHByaXZhdGUgX29uRHJhZ1N0YXJ0ID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLl9zaG93QWN0aXZlUmlwcGxlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25EcmFnRW5kID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5faGlkZVJpcHBsZSh0aGlzLl9hY3RpdmVSaXBwbGVSZWYpO1xuICAgIC8vIEhhcHBlbnMgd2hlbiB0aGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYSB0aHVtYiwgdGFicyBhd2F5LCBhbmQgdGhlbiBzdG9wcyBkcmFnZ2luZy5cbiAgICBpZiAoIXRoaXMuX3NsaWRlcklucHV0Ll9pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5fZm9jdXNSaXBwbGVSZWYpO1xuICAgIH1cblxuICAgIC8vIE9uIFNhZmFyaSB3ZSBuZWVkIHRvIGltbWVkaWF0ZWx5IHJlLXNob3cgdGhlIGhvdmVyIHJpcHBsZSBiZWNhdXNlXG4gICAgLy8gc2xpZGVycyBkbyBub3QgcmV0YWluIGZvY3VzIGZyb20gcG9pbnRlciBldmVudHMgb24gdGhhdCBwbGF0Zm9ybS5cbiAgICBpZiAodGhpcy5fcGxhdGZvcm0uU0FGQVJJKSB7XG4gICAgICB0aGlzLl9zaG93SG92ZXJSaXBwbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqIEhhbmRsZXMgZGlzcGxheWluZyB0aGUgaG92ZXIgcmlwcGxlLiAqL1xuICBwcml2YXRlIF9zaG93SG92ZXJSaXBwbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3dpbmdSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpKSB7XG4gICAgICB0aGlzLl9ob3ZlclJpcHBsZVJlZiA9IHRoaXMuX3Nob3dSaXBwbGUoe2VudGVyRHVyYXRpb246IDAsIGV4aXREdXJhdGlvbjogMH0pO1xuICAgICAgdGhpcy5faG92ZXJSaXBwbGVSZWY/LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbWF0LW1kYy1zbGlkZXItaG92ZXItcmlwcGxlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgZGlzcGxheWluZyB0aGUgZm9jdXMgcmlwcGxlLiAqL1xuICBwcml2YXRlIF9zaG93Rm9jdXNSaXBwbGUoKTogdm9pZCB7XG4gICAgLy8gU2hvdyB0aGUgZm9jdXMgcmlwcGxlIGV2ZW50IGlmIG5vb3AgYW5pbWF0aW9ucyBhcmUgZW5hYmxlZC5cbiAgICBpZiAoIXRoaXMuX2lzU2hvd2luZ1JpcHBsZSh0aGlzLl9mb2N1c1JpcHBsZVJlZikpIHtcbiAgICAgIHRoaXMuX2ZvY3VzUmlwcGxlUmVmID0gdGhpcy5fc2hvd1JpcHBsZSh7ZW50ZXJEdXJhdGlvbjogMCwgZXhpdER1cmF0aW9uOiAwfSwgdHJ1ZSk7XG4gICAgICB0aGlzLl9mb2N1c1JpcHBsZVJlZj8uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtbWRjLXNsaWRlci1mb2N1cy1yaXBwbGUnKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBkaXNwbGF5aW5nIHRoZSBhY3RpdmUgcmlwcGxlLiAqL1xuICBwcml2YXRlIF9zaG93QWN0aXZlUmlwcGxlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNTaG93aW5nUmlwcGxlKHRoaXMuX2FjdGl2ZVJpcHBsZVJlZikpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVJpcHBsZVJlZiA9IHRoaXMuX3Nob3dSaXBwbGUoe2VudGVyRHVyYXRpb246IDIyNSwgZXhpdER1cmF0aW9uOiA0MDB9KTtcbiAgICAgIHRoaXMuX2FjdGl2ZVJpcHBsZVJlZj8uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtbWRjLXNsaWRlci1hY3RpdmUtcmlwcGxlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGdpdmVuIHJpcHBsZVJlZiBpcyBjdXJyZW50bHkgZmFkaW5nIGluIG9yIHZpc2libGUuICovXG4gIHByaXZhdGUgX2lzU2hvd2luZ1JpcHBsZShyaXBwbGVSZWY/OiBSaXBwbGVSZWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmlwcGxlUmVmPy5zdGF0ZSA9PT0gUmlwcGxlU3RhdGUuRkFESU5HX0lOIHx8IHJpcHBsZVJlZj8uc3RhdGUgPT09IFJpcHBsZVN0YXRlLlZJU0lCTEU7XG4gIH1cblxuICAvKiogTWFudWFsbHkgbGF1bmNoZXMgdGhlIHNsaWRlciB0aHVtYiByaXBwbGUgdXNpbmcgdGhlIHNwZWNpZmllZCByaXBwbGUgYW5pbWF0aW9uIGNvbmZpZy4gKi9cbiAgcHJpdmF0ZSBfc2hvd1JpcHBsZShcbiAgICBhbmltYXRpb246IFJpcHBsZUFuaW1hdGlvbkNvbmZpZyxcbiAgICBpZ25vcmVHbG9iYWxSaXBwbGVDb25maWc/OiBib29sZWFuLFxuICApOiBSaXBwbGVSZWYgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9zbGlkZXIuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2hvd1ZhbHVlSW5kaWNhdG9yKCk7XG4gICAgaWYgKHRoaXMuX3NsaWRlci5faXNSYW5nZSkge1xuICAgICAgY29uc3Qgc2libGluZyA9IHRoaXMuX3NsaWRlci5fZ2V0VGh1bWIoXG4gICAgICAgIHRoaXMudGh1bWJQb3NpdGlvbiA9PT0gX01hdFRodW1iLlNUQVJUID8gX01hdFRodW1iLkVORCA6IF9NYXRUaHVtYi5TVEFSVCxcbiAgICAgICk7XG4gICAgICBzaWJsaW5nLl9zaG93VmFsdWVJbmRpY2F0b3IoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NsaWRlci5fZ2xvYmFsUmlwcGxlT3B0aW9ucz8uZGlzYWJsZWQgJiYgIWlnbm9yZUdsb2JhbFJpcHBsZUNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmlwcGxlLmxhdW5jaCh7XG4gICAgICBhbmltYXRpb246IHRoaXMuX3NsaWRlci5fbm9vcEFuaW1hdGlvbnMgPyB7ZW50ZXJEdXJhdGlvbjogMCwgZXhpdER1cmF0aW9uOiAwfSA6IGFuaW1hdGlvbixcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWRlcyBvdXQgdGhlIGdpdmVuIHJpcHBsZS5cbiAgICogQWxzbyBoaWRlcyB0aGUgdmFsdWUgaW5kaWNhdG9yIGlmIG5vIHJpcHBsZSBpcyBzaG93aW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBfaGlkZVJpcHBsZShyaXBwbGVSZWY/OiBSaXBwbGVSZWYpOiB2b2lkIHtcbiAgICByaXBwbGVSZWY/LmZhZGVPdXQoKTtcblxuICAgIGlmICh0aGlzLl9pc1Nob3dpbmdBbnlSaXBwbGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2xpZGVyLl9pc1JhbmdlKSB7XG4gICAgICB0aGlzLl9oaWRlVmFsdWVJbmRpY2F0b3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWJsaW5nID0gdGhpcy5fZ2V0U2libGluZygpO1xuICAgIGlmICghc2libGluZy5faXNTaG93aW5nQW55UmlwcGxlKCkpIHtcbiAgICAgIHRoaXMuX2hpZGVWYWx1ZUluZGljYXRvcigpO1xuICAgICAgc2libGluZy5faGlkZVZhbHVlSW5kaWNhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNob3dzIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdWkuICovXG4gIF9zaG93VmFsdWVJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbWRjLXNsaWRlcl9fdGh1bWItLXdpdGgtaW5kaWNhdG9yJyk7XG4gIH1cblxuICAvKiogSGlkZXMgdGhlIHZhbHVlIGluZGljYXRvciB1aS4gKi9cbiAgX2hpZGVWYWx1ZUluZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtc2xpZGVyX190aHVtYi0td2l0aC1pbmRpY2F0b3InKTtcbiAgfVxuXG4gIF9nZXRTaWJsaW5nKCk6IF9NYXRTbGlkZXJWaXN1YWxUaHVtYiB7XG4gICAgcmV0dXJuIHRoaXMuX3NsaWRlci5fZ2V0VGh1bWIoXG4gICAgICB0aGlzLnRodW1iUG9zaXRpb24gPT09IF9NYXRUaHVtYi5TVEFSVCA/IF9NYXRUaHVtYi5FTkQgOiBfTWF0VGh1bWIuU1RBUlQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSB2YWx1ZSBpbmRpY2F0b3IgY29udGFpbmVyJ3MgbmF0aXZlIEhUTUwgZWxlbWVudC4gKi9cbiAgX2dldFZhbHVlSW5kaWNhdG9yQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVJbmRpY2F0b3JDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgbmF0aXZlIEhUTUwgZWxlbWVudCBvZiB0aGUgc2xpZGVyIHRodW1iIGtub2IuICovXG4gIF9nZXRLbm9iKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fa25vYi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgX2lzU2hvd2luZ0FueVJpcHBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5faXNTaG93aW5nUmlwcGxlKHRoaXMuX2hvdmVyUmlwcGxlUmVmKSB8fFxuICAgICAgdGhpcy5faXNTaG93aW5nUmlwcGxlKHRoaXMuX2ZvY3VzUmlwcGxlUmVmKSB8fFxuICAgICAgdGhpcy5faXNTaG93aW5nUmlwcGxlKHRoaXMuX2FjdGl2ZVJpcHBsZVJlZilcbiAgICApO1xuICB9XG59XG4iLCJAaWYgKGRpc2NyZXRlKSB7XG4gIDxkaXYgY2xhc3M9XCJtZGMtc2xpZGVyX192YWx1ZS1pbmRpY2F0b3ItY29udGFpbmVyXCIgI3ZhbHVlSW5kaWNhdG9yQ29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJtZGMtc2xpZGVyX192YWx1ZS1pbmRpY2F0b3JcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWRjLXNsaWRlcl9fdmFsdWUtaW5kaWNhdG9yLXRleHRcIj57e3ZhbHVlSW5kaWNhdG9yVGV4dH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbjxkaXYgY2xhc3M9XCJtZGMtc2xpZGVyX190aHVtYi1rbm9iXCIgI2tub2I+PC9kaXY+XG48ZGl2IG1hdFJpcHBsZSBjbGFzcz1cIm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yXCIgW21hdFJpcHBsZURpc2FibGVkXT1cInRydWVcIj48L2Rpdj5cbiJdfQ==