@angular/cdk 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 (330) hide show
  1. package/a11y/_index.scss +12 -54
  2. package/a11y/index.d.ts +5 -1
  3. package/fesm2022/a11y.mjs +61 -51
  4. package/fesm2022/a11y.mjs.map +1 -1
  5. package/fesm2022/accordion.mjs +10 -10
  6. package/fesm2022/bidi.mjs +10 -10
  7. package/fesm2022/cdk.mjs +1 -1
  8. package/fesm2022/cdk.mjs.map +1 -1
  9. package/fesm2022/clipboard.mjs +10 -10
  10. package/fesm2022/collections.mjs +3 -3
  11. package/fesm2022/dialog.mjs +10 -10
  12. package/fesm2022/drag-drop.mjs +33 -32
  13. package/fesm2022/drag-drop.mjs.map +1 -1
  14. package/fesm2022/layout.mjs +10 -10
  15. package/fesm2022/listbox.mjs +10 -10
  16. package/fesm2022/menu.mjs +49 -49
  17. package/fesm2022/observers/private.mjs +3 -3
  18. package/fesm2022/observers.mjs +13 -13
  19. package/fesm2022/overlay.mjs +54 -35
  20. package/fesm2022/overlay.mjs.map +1 -1
  21. package/fesm2022/platform.mjs +7 -7
  22. package/fesm2022/portal.mjs +16 -16
  23. package/fesm2022/private.mjs +12 -10
  24. package/fesm2022/private.mjs.map +1 -1
  25. package/fesm2022/scrolling.mjs +38 -35
  26. package/fesm2022/scrolling.mjs.map +1 -1
  27. package/fesm2022/stepper.mjs +22 -22
  28. package/fesm2022/table.mjs +76 -76
  29. package/fesm2022/text-field.mjs +30 -15
  30. package/fesm2022/text-field.mjs.map +1 -1
  31. package/fesm2022/tree.mjs +36 -30
  32. package/fesm2022/tree.mjs.map +1 -1
  33. package/overlay/_index.scss +15 -13
  34. package/overlay/index.d.ts +6 -1
  35. package/overlay-prebuilt.css +1 -1
  36. package/package.json +1 -57
  37. package/private/index.d.ts +1 -0
  38. package/schematics/ng-add/index.js +1 -1
  39. package/schematics/ng-add/index.mjs +1 -1
  40. package/scrolling/index.d.ts +1 -0
  41. package/table/index.d.ts +8 -8
  42. package/text-field/index.d.ts +1 -0
  43. package/tree/index.d.ts +6 -4
  44. package/esm2022/a11y/a11y-module.mjs +0 -31
  45. package/esm2022/a11y/a11y_public_index.mjs +0 -5
  46. package/esm2022/a11y/aria-describer/aria-describer.mjs +0 -232
  47. package/esm2022/a11y/aria-describer/aria-reference.mjs +0 -47
  48. package/esm2022/a11y/fake-event-detection.mjs +0 -29
  49. package/esm2022/a11y/focus-monitor/focus-monitor.mjs +0 -468
  50. package/esm2022/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -9
  51. package/esm2022/a11y/focus-trap/configurable-focus-trap-factory.mjs +0 -54
  52. package/esm2022/a11y/focus-trap/configurable-focus-trap.mjs +0 -51
  53. package/esm2022/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -61
  54. package/esm2022/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -11
  55. package/esm2022/a11y/focus-trap/focus-trap-manager.mjs +0 -53
  56. package/esm2022/a11y/focus-trap/focus-trap.mjs +0 -396
  57. package/esm2022/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +0 -116
  58. package/esm2022/a11y/index.mjs +0 -9
  59. package/esm2022/a11y/input-modality/input-modality-detector.mjs +0 -176
  60. package/esm2022/a11y/interactivity-checker/interactivity-checker.mjs +0 -238
  61. package/esm2022/a11y/key-manager/activedescendant-key-manager.mjs +0 -20
  62. package/esm2022/a11y/key-manager/focus-key-manager.mjs +0 -29
  63. package/esm2022/a11y/key-manager/list-key-manager.mjs +0 -357
  64. package/esm2022/a11y/key-manager/noop-tree-key-manager.mjs +0 -94
  65. package/esm2022/a11y/key-manager/tree-key-manager-strategy.mjs +0 -9
  66. package/esm2022/a11y/key-manager/tree-key-manager.mjs +0 -345
  67. package/esm2022/a11y/key-manager/typeahead.mjs +0 -91
  68. package/esm2022/a11y/live-announcer/live-announcer-tokens.mjs +0 -19
  69. package/esm2022/a11y/live-announcer/live-announcer.mjs +0 -210
  70. package/esm2022/a11y/public-api.mjs +0 -30
  71. package/esm2022/accordion/accordion-item.mjs +0 -162
  72. package/esm2022/accordion/accordion-module.mjs +0 -24
  73. package/esm2022/accordion/accordion.mjs +0 -65
  74. package/esm2022/accordion/accordion_public_index.mjs +0 -5
  75. package/esm2022/accordion/index.mjs +0 -9
  76. package/esm2022/accordion/public-api.mjs +0 -11
  77. package/esm2022/bidi/bidi-module.mjs +0 -23
  78. package/esm2022/bidi/bidi_public_index.mjs +0 -5
  79. package/esm2022/bidi/dir-document-token.mjs +0 -33
  80. package/esm2022/bidi/dir.mjs +0 -70
  81. package/esm2022/bidi/directionality.mjs +0 -52
  82. package/esm2022/bidi/index.mjs +0 -9
  83. package/esm2022/bidi/public-api.mjs +0 -12
  84. package/esm2022/clipboard/clipboard-module.mjs +0 -23
  85. package/esm2022/clipboard/clipboard.mjs +0 -53
  86. package/esm2022/clipboard/clipboard_public_index.mjs +0 -5
  87. package/esm2022/clipboard/copy-to-clipboard.mjs +0 -100
  88. package/esm2022/clipboard/index.mjs +0 -9
  89. package/esm2022/clipboard/pending-copy.mjs +0 -71
  90. package/esm2022/clipboard/public-api.mjs +0 -12
  91. package/esm2022/coercion/array.mjs +0 -11
  92. package/esm2022/coercion/boolean-property.mjs +0 -12
  93. package/esm2022/coercion/css-pixel-value.mjs +0 -15
  94. package/esm2022/coercion/element.mjs +0 -16
  95. package/esm2022/coercion/index.mjs +0 -9
  96. package/esm2022/coercion/number-property.mjs +0 -24
  97. package/esm2022/coercion/private/index.mjs +0 -9
  98. package/esm2022/coercion/private/observable.mjs +0 -19
  99. package/esm2022/coercion/private/private_public_index.mjs +0 -5
  100. package/esm2022/coercion/public-api.mjs +0 -14
  101. package/esm2022/coercion/string-array.mjs +0 -38
  102. package/esm2022/collections/array-data-source.mjs +0 -21
  103. package/esm2022/collections/collection-viewer.mjs +0 -9
  104. package/esm2022/collections/collections_public_index.mjs +0 -5
  105. package/esm2022/collections/data-source.mjs +0 -19
  106. package/esm2022/collections/dispose-view-repeater-strategy.mjs +0 -48
  107. package/esm2022/collections/index.mjs +0 -9
  108. package/esm2022/collections/public-api.mjs +0 -17
  109. package/esm2022/collections/recycle-view-repeater-strategy.mjs +0 -129
  110. package/esm2022/collections/selection-model.mjs +0 -225
  111. package/esm2022/collections/tree-adapter.mjs +0 -9
  112. package/esm2022/collections/unique-selection-dispatcher.mjs +0 -55
  113. package/esm2022/collections/view-repeater.mjs +0 -26
  114. package/esm2022/dialog/dialog-config.mjs +0 -70
  115. package/esm2022/dialog/dialog-container.mjs +0 -308
  116. package/esm2022/dialog/dialog-injectors.mjs +0 -40
  117. package/esm2022/dialog/dialog-module.mjs +0 -40
  118. package/esm2022/dialog/dialog-ref.mjs +0 -85
  119. package/esm2022/dialog/dialog.mjs +0 -303
  120. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  121. package/esm2022/dialog/index.mjs +0 -9
  122. package/esm2022/dialog/public-api.mjs +0 -14
  123. package/esm2022/drag-drop/directives/assertions.mjs +0 -18
  124. package/esm2022/drag-drop/directives/config.mjs +0 -14
  125. package/esm2022/drag-drop/directives/drag-handle.mjs +0 -68
  126. package/esm2022/drag-drop/directives/drag-placeholder.mjs +0 -43
  127. package/esm2022/drag-drop/directives/drag-preview.mjs +0 -48
  128. package/esm2022/drag-drop/directives/drag.mjs +0 -520
  129. package/esm2022/drag-drop/directives/drop-list-group.mjs +0 -47
  130. package/esm2022/drag-drop/directives/drop-list.mjs +0 -352
  131. package/esm2022/drag-drop/dom/clone-node.mjs +0 -65
  132. package/esm2022/drag-drop/dom/dom-rect.mjs +0 -64
  133. package/esm2022/drag-drop/dom/parent-position-tracker.mjs +0 -76
  134. package/esm2022/drag-drop/dom/root-node.mjs +0 -21
  135. package/esm2022/drag-drop/dom/styling.mjs +0 -89
  136. package/esm2022/drag-drop/dom/transition-duration.mjs +0 -36
  137. package/esm2022/drag-drop/drag-drop-module.mjs +0 -49
  138. package/esm2022/drag-drop/drag-drop-registry.mjs +0 -248
  139. package/esm2022/drag-drop/drag-drop.mjs +0 -57
  140. package/esm2022/drag-drop/drag-drop_public_index.mjs +0 -5
  141. package/esm2022/drag-drop/drag-events.mjs +0 -9
  142. package/esm2022/drag-drop/drag-parent.mjs +0 -16
  143. package/esm2022/drag-drop/drag-ref.mjs +0 -1097
  144. package/esm2022/drag-drop/drag-utils.mjs +0 -60
  145. package/esm2022/drag-drop/drop-list-ref.mjs +0 -672
  146. package/esm2022/drag-drop/index.mjs +0 -9
  147. package/esm2022/drag-drop/preview-ref.mjs +0 -125
  148. package/esm2022/drag-drop/public-api.mjs +0 -23
  149. package/esm2022/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -9
  150. package/esm2022/drag-drop/sorting/mixed-sort-strategy.mjs +0 -246
  151. package/esm2022/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -343
  152. package/esm2022/index.mjs +0 -9
  153. package/esm2022/keycodes/index.mjs +0 -9
  154. package/esm2022/keycodes/keycodes.mjs +0 -127
  155. package/esm2022/keycodes/keycodes_public_index.mjs +0 -5
  156. package/esm2022/keycodes/modifiers.mjs +0 -18
  157. package/esm2022/keycodes/public-api.mjs +0 -10
  158. package/esm2022/layout/breakpoints-observer.mjs +0 -105
  159. package/esm2022/layout/breakpoints.mjs +0 -29
  160. package/esm2022/layout/index.mjs +0 -9
  161. package/esm2022/layout/layout-module.mjs +0 -19
  162. package/esm2022/layout/layout_public_index.mjs +0 -5
  163. package/esm2022/layout/media-matcher.mjs +0 -94
  164. package/esm2022/layout/public-api.mjs +0 -12
  165. package/esm2022/listbox/index.mjs +0 -9
  166. package/esm2022/listbox/listbox-module.mjs +0 -24
  167. package/esm2022/listbox/listbox.mjs +0 -888
  168. package/esm2022/listbox/listbox_public_index.mjs +0 -5
  169. package/esm2022/listbox/public-api.mjs +0 -10
  170. package/esm2022/menu/context-menu-trigger.mjs +0 -221
  171. package/esm2022/menu/event-detection.mjs +0 -28
  172. package/esm2022/menu/index.mjs +0 -9
  173. package/esm2022/menu/menu-aim.mjs +0 -204
  174. package/esm2022/menu/menu-bar.mjs +0 -134
  175. package/esm2022/menu/menu-base.mjs +0 -192
  176. package/esm2022/menu/menu-errors.mjs +0 -22
  177. package/esm2022/menu/menu-group.mjs +0 -31
  178. package/esm2022/menu/menu-interface.mjs +0 -11
  179. package/esm2022/menu/menu-item-checkbox.mjs +0 -50
  180. package/esm2022/menu/menu-item-radio.mjs +0 -72
  181. package/esm2022/menu/menu-item-selectable.mjs +0 -36
  182. package/esm2022/menu/menu-item.mjs +0 -270
  183. package/esm2022/menu/menu-module.mjs +0 -60
  184. package/esm2022/menu/menu-stack.mjs +0 -163
  185. package/esm2022/menu/menu-trigger-base.mjs +0 -119
  186. package/esm2022/menu/menu-trigger.mjs +0 -313
  187. package/esm2022/menu/menu.mjs +0 -135
  188. package/esm2022/menu/menu_public_index.mjs +0 -5
  189. package/esm2022/menu/pointer-focus-tracker.mjs +0 -51
  190. package/esm2022/menu/public-api.mjs +0 -24
  191. package/esm2022/observers/index.mjs +0 -9
  192. package/esm2022/observers/observe-content.mjs +0 -216
  193. package/esm2022/observers/observers_public_index.mjs +0 -5
  194. package/esm2022/observers/private/index.mjs +0 -9
  195. package/esm2022/observers/private/private_public_index.mjs +0 -5
  196. package/esm2022/observers/private/shared-resize-observer.mjs +0 -125
  197. package/esm2022/observers/public-api.mjs +0 -9
  198. package/esm2022/overlay/dispatchers/base-overlay-dispatcher.mjs +0 -52
  199. package/esm2022/overlay/dispatchers/index.mjs +0 -10
  200. package/esm2022/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +0 -81
  201. package/esm2022/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +0 -151
  202. package/esm2022/overlay/fullscreen-overlay-container.mjs +0 -94
  203. package/esm2022/overlay/index.mjs +0 -9
  204. package/esm2022/overlay/overlay-config.mjs +0 -45
  205. package/esm2022/overlay/overlay-container.mjs +0 -81
  206. package/esm2022/overlay/overlay-directives.mjs +0 -432
  207. package/esm2022/overlay/overlay-module.mjs +0 -28
  208. package/esm2022/overlay/overlay-ref.mjs +0 -437
  209. package/esm2022/overlay/overlay.mjs +0 -126
  210. package/esm2022/overlay/overlay_public_index.mjs +0 -5
  211. package/esm2022/overlay/position/connected-position.mjs +0 -88
  212. package/esm2022/overlay/position/flexible-connected-position-strategy.mjs +0 -1002
  213. package/esm2022/overlay/position/global-position-strategy.mjs +0 -237
  214. package/esm2022/overlay/position/overlay-position-builder.mjs +0 -50
  215. package/esm2022/overlay/position/position-strategy.mjs +0 -9
  216. package/esm2022/overlay/position/scroll-clip.mjs +0 -40
  217. package/esm2022/overlay/public-api.mjs +0 -22
  218. package/esm2022/overlay/scroll/block-scroll-strategy.mjs +0 -80
  219. package/esm2022/overlay/scroll/close-scroll-strategy.mjs +0 -65
  220. package/esm2022/overlay/scroll/index.mjs +0 -14
  221. package/esm2022/overlay/scroll/noop-scroll-strategy.mjs +0 -17
  222. package/esm2022/overlay/scroll/reposition-scroll-strategy.mjs +0 -61
  223. package/esm2022/overlay/scroll/scroll-strategy-options.mjs +0 -55
  224. package/esm2022/overlay/scroll/scroll-strategy.mjs +0 -14
  225. package/esm2022/platform/features/input-types.mjs +0 -59
  226. package/esm2022/platform/features/passive-listeners.mjs +0 -36
  227. package/esm2022/platform/features/scrolling.mjs +0 -104
  228. package/esm2022/platform/features/shadow-dom.mjs +0 -54
  229. package/esm2022/platform/features/test-environment.mjs +0 -24
  230. package/esm2022/platform/index.mjs +0 -9
  231. package/esm2022/platform/platform-module.mjs +0 -19
  232. package/esm2022/platform/platform.mjs +0 -82
  233. package/esm2022/platform/platform_public_index.mjs +0 -5
  234. package/esm2022/platform/public-api.mjs +0 -15
  235. package/esm2022/portal/dom-portal-outlet.mjs +0 -158
  236. package/esm2022/portal/index.mjs +0 -9
  237. package/esm2022/portal/portal-directives.mjs +0 -251
  238. package/esm2022/portal/portal-errors.mjs +0 -51
  239. package/esm2022/portal/portal-injector.mjs +0 -28
  240. package/esm2022/portal/portal.mjs +0 -189
  241. package/esm2022/portal/portal_public_index.mjs +0 -5
  242. package/esm2022/portal/public-api.mjs +0 -12
  243. package/esm2022/private/index.mjs +0 -9
  244. package/esm2022/private/private_public_index.mjs +0 -5
  245. package/esm2022/private/public-api.mjs +0 -9
  246. package/esm2022/private/style-loader.mjs +0 -50
  247. package/esm2022/public-api.mjs +0 -9
  248. package/esm2022/scrolling/fixed-size-virtual-scroll.mjs +0 -218
  249. package/esm2022/scrolling/index.mjs +0 -9
  250. package/esm2022/scrolling/public-api.mjs +0 -20
  251. package/esm2022/scrolling/scroll-dispatcher.mjs +0 -163
  252. package/esm2022/scrolling/scrollable.mjs +0 -177
  253. package/esm2022/scrolling/scrolling-module.mjs +0 -69
  254. package/esm2022/scrolling/scrolling_public_index.mjs +0 -5
  255. package/esm2022/scrolling/viewport-ruler.mjs +0 -146
  256. package/esm2022/scrolling/virtual-for-of.mjs +0 -299
  257. package/esm2022/scrolling/virtual-scroll-repeater.mjs +0 -9
  258. package/esm2022/scrolling/virtual-scroll-strategy.mjs +0 -11
  259. package/esm2022/scrolling/virtual-scroll-viewport.mjs +0 -445
  260. package/esm2022/scrolling/virtual-scrollable-element.mjs +0 -42
  261. package/esm2022/scrolling/virtual-scrollable-window.mjs +0 -41
  262. package/esm2022/scrolling/virtual-scrollable.mjs +0 -40
  263. package/esm2022/stepper/index.mjs +0 -9
  264. package/esm2022/stepper/public-api.mjs +0 -13
  265. package/esm2022/stepper/step-header.mjs +0 -31
  266. package/esm2022/stepper/step-label.mjs +0 -24
  267. package/esm2022/stepper/stepper-button.mjs +0 -58
  268. package/esm2022/stepper/stepper-module.mjs +0 -41
  269. package/esm2022/stepper/stepper.mjs +0 -452
  270. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  271. package/esm2022/table/can-stick.mjs +0 -46
  272. package/esm2022/table/cell.mjs +0 -245
  273. package/esm2022/table/coalesced-style-scheduler.mjs +0 -79
  274. package/esm2022/table/index.mjs +0 -9
  275. package/esm2022/table/public-api.mjs +0 -20
  276. package/esm2022/table/row.mjs +0 -317
  277. package/esm2022/table/sticky-position-listener.mjs +0 -11
  278. package/esm2022/table/sticky-styler.mjs +0 -347
  279. package/esm2022/table/table-errors.mjs +0 -67
  280. package/esm2022/table/table-module.mjs +0 -93
  281. package/esm2022/table/table.mjs +0 -1148
  282. package/esm2022/table/table_public_index.mjs +0 -5
  283. package/esm2022/table/text-column.mjs +0 -154
  284. package/esm2022/table/tokens.mjs +0 -16
  285. package/esm2022/testing/change-detection.mjs +0 -102
  286. package/esm2022/testing/component-harness.mjs +0 -328
  287. package/esm2022/testing/element-dimensions.mjs +0 -9
  288. package/esm2022/testing/harness-environment.mjs +0 -220
  289. package/esm2022/testing/index.mjs +0 -9
  290. package/esm2022/testing/public-api.mjs +0 -15
  291. package/esm2022/testing/selenium-webdriver/index.mjs +0 -9
  292. package/esm2022/testing/selenium-webdriver/public-api.mjs +0 -10
  293. package/esm2022/testing/selenium-webdriver/selenium-web-driver-element.mjs +0 -216
  294. package/esm2022/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +0 -88
  295. package/esm2022/testing/selenium-webdriver/selenium-webdriver-keys.mjs +0 -64
  296. package/esm2022/testing/test-element-errors.mjs +0 -15
  297. package/esm2022/testing/test-element.mjs +0 -49
  298. package/esm2022/testing/testbed/fake-events/dispatch-events.mjs +0 -53
  299. package/esm2022/testing/testbed/fake-events/element-focus.mjs +0 -39
  300. package/esm2022/testing/testbed/fake-events/event-objects.mjs +0 -127
  301. package/esm2022/testing/testbed/fake-events/index.mjs +0 -14
  302. package/esm2022/testing/testbed/fake-events/type-in-element.mjs +0 -97
  303. package/esm2022/testing/testbed/index.mjs +0 -9
  304. package/esm2022/testing/testbed/public-api.mjs +0 -10
  305. package/esm2022/testing/testbed/task-state-zone-interceptor.mjs +0 -83
  306. package/esm2022/testing/testbed/testbed-harness-environment.mjs +0 -165
  307. package/esm2022/testing/testbed/unit-test-element.mjs +0 -258
  308. package/esm2022/testing/text-filtering.mjs +0 -21
  309. package/esm2022/text-field/autofill.mjs +0 -114
  310. package/esm2022/text-field/autosize.mjs +0 -309
  311. package/esm2022/text-field/index.mjs +0 -9
  312. package/esm2022/text-field/public-api.mjs +0 -11
  313. package/esm2022/text-field/text-field-module.mjs +0 -24
  314. package/esm2022/text-field/text-field_public_index.mjs +0 -5
  315. package/esm2022/tree/control/base-tree-control.mjs +0 -62
  316. package/esm2022/tree/control/flat-tree-control.mjs +0 -57
  317. package/esm2022/tree/control/nested-tree-control.mjs +0 -67
  318. package/esm2022/tree/control/tree-control.mjs +0 -2
  319. package/esm2022/tree/index.mjs +0 -9
  320. package/esm2022/tree/nested-node.mjs +0 -103
  321. package/esm2022/tree/node.mjs +0 -36
  322. package/esm2022/tree/outlet.mjs +0 -40
  323. package/esm2022/tree/padding.mjs +0 -129
  324. package/esm2022/tree/public-api.mjs +0 -20
  325. package/esm2022/tree/toggle.mjs +0 -51
  326. package/esm2022/tree/tree-errors.mjs +0 -44
  327. package/esm2022/tree/tree-module.mjs +0 -49
  328. package/esm2022/tree/tree.mjs +0 -1123
  329. package/esm2022/tree/tree_public_index.mjs +0 -5
  330. package/esm2022/version.mjs +0 -11
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVfcHVibGljX2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90YWJsZV9wdWJsaWNfaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,154 +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, Component, Inject, Input, Optional, ViewChild, ViewEncapsulation, } from '@angular/core';
9
- import { CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCell } from './cell';
10
- import { CdkTable } from './table';
11
- import { getTableTextColumnMissingParentTableError, getTableTextColumnMissingNameError, } from './table-errors';
12
- import { TEXT_COLUMN_OPTIONS } from './tokens';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "./table";
15
- /**
16
- * Column that simply shows text content for the header and row cells. Assumes that the table
17
- * is using the native table implementation (`<table>`).
18
- *
19
- * By default, the name of this column will be the header text and data property accessor.
20
- * The header text can be overridden with the `headerText` input. Cell values can be overridden with
21
- * the `dataAccessor` input. Change the text justification to the start or end using the `justify`
22
- * input.
23
- */
24
- export class CdkTextColumn {
25
- /** Column name that should be used to reference this column. */
26
- get name() {
27
- return this._name;
28
- }
29
- set name(name) {
30
- this._name = name;
31
- // With Ivy, inputs can be initialized before static query results are
32
- // available. In that case, we defer the synchronization until "ngOnInit" fires.
33
- this._syncColumnDefName();
34
- }
35
- constructor(
36
- // `CdkTextColumn` is always requiring a table, but we just assert it manually
37
- // for better error reporting.
38
- // tslint:disable-next-line: lightweight-tokens
39
- _table, _options) {
40
- this._table = _table;
41
- this._options = _options;
42
- /** Alignment of the cell values. */
43
- this.justify = 'start';
44
- this._options = _options || {};
45
- }
46
- ngOnInit() {
47
- this._syncColumnDefName();
48
- if (this.headerText === undefined) {
49
- this.headerText = this._createDefaultHeaderText();
50
- }
51
- if (!this.dataAccessor) {
52
- this.dataAccessor =
53
- this._options.defaultDataAccessor || ((data, name) => data[name]);
54
- }
55
- if (this._table) {
56
- // Provide the cell and headerCell directly to the table with the static `ViewChild` query,
57
- // since the columnDef will not pick up its content by the time the table finishes checking
58
- // its content and initializing the rows.
59
- this.columnDef.cell = this.cell;
60
- this.columnDef.headerCell = this.headerCell;
61
- this._table.addColumnDef(this.columnDef);
62
- }
63
- else if (typeof ngDevMode === 'undefined' || ngDevMode) {
64
- throw getTableTextColumnMissingParentTableError();
65
- }
66
- }
67
- ngOnDestroy() {
68
- if (this._table) {
69
- this._table.removeColumnDef(this.columnDef);
70
- }
71
- }
72
- /**
73
- * Creates a default header text. Use the options' header text transformation function if one
74
- * has been provided. Otherwise simply capitalize the column name.
75
- */
76
- _createDefaultHeaderText() {
77
- const name = this.name;
78
- if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {
79
- throw getTableTextColumnMissingNameError();
80
- }
81
- if (this._options && this._options.defaultHeaderTextTransform) {
82
- return this._options.defaultHeaderTextTransform(name);
83
- }
84
- return name[0].toUpperCase() + name.slice(1);
85
- }
86
- /** Synchronizes the column definition name with the text column name. */
87
- _syncColumnDefName() {
88
- if (this.columnDef) {
89
- this.columnDef.name = this.name;
90
- }
91
- }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTextColumn, deps: [{ token: i1.CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0-next.2", type: CdkTextColumn, isStandalone: true, selector: "cdk-text-column", inputs: { name: "name", headerText: "headerText", dataAccessor: "dataAccessor", justify: "justify" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: "cell", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: "headerCell", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `
94
- <ng-container cdkColumnDef>
95
- <th cdk-header-cell *cdkHeaderCellDef [style.text-align]="justify">
96
- {{headerText}}
97
- </th>
98
- <td cdk-cell *cdkCellDef="let data" [style.text-align]="justify">
99
- {{dataAccessor(data, name)}}
100
- </td>
101
- </ng-container>
102
- `, isInline: true, dependencies: [{ kind: "directive", type: CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["cdkColumnDef", "sticky", "stickyEnd"] }, { kind: "directive", type: CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: CdkCell, selector: "cdk-cell, td[cdk-cell]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
103
- }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTextColumn, decorators: [{
105
- type: Component,
106
- args: [{
107
- selector: 'cdk-text-column',
108
- template: `
109
- <ng-container cdkColumnDef>
110
- <th cdk-header-cell *cdkHeaderCellDef [style.text-align]="justify">
111
- {{headerText}}
112
- </th>
113
- <td cdk-cell *cdkCellDef="let data" [style.text-align]="justify">
114
- {{dataAccessor(data, name)}}
115
- </td>
116
- </ng-container>
117
- `,
118
- encapsulation: ViewEncapsulation.None,
119
- // Change detection is intentionally not set to OnPush. This component's template will be provided
120
- // to the table to be inserted into its view. This is problematic when change detection runs since
121
- // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
122
- // mean's the template in the table's view will not have the updated value (and in fact will cause
123
- // an ExpressionChangedAfterItHasBeenCheckedError).
124
- // tslint:disable-next-line:validate-decorators
125
- changeDetection: ChangeDetectionStrategy.Default,
126
- standalone: true,
127
- imports: [CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCellDef, CdkCell],
128
- }]
129
- }], ctorParameters: () => [{ type: i1.CdkTable, decorators: [{
130
- type: Optional
131
- }] }, { type: undefined, decorators: [{
132
- type: Optional
133
- }, {
134
- type: Inject,
135
- args: [TEXT_COLUMN_OPTIONS]
136
- }] }], propDecorators: { name: [{
137
- type: Input
138
- }], headerText: [{
139
- type: Input
140
- }], dataAccessor: [{
141
- type: Input
142
- }], justify: [{
143
- type: Input
144
- }], columnDef: [{
145
- type: ViewChild,
146
- args: [CdkColumnDef, { static: true }]
147
- }], cell: [{
148
- type: ViewChild,
149
- args: [CdkCellDef, { static: true }]
150
- }], headerCell: [{
151
- type: ViewChild,
152
- args: [CdkHeaderCellDef, { static: true }]
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3RhYmxlL3RleHQtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMxRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFDTCx5Q0FBeUMsRUFDekMsa0NBQWtDLEdBQ25DLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG1CQUFtQixFQUFvQixNQUFNLFVBQVUsQ0FBQzs7O0FBRWhFOzs7Ozs7OztHQVFHO0FBd0JILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLGdFQUFnRTtJQUNoRSxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsc0VBQXNFO1FBQ3RFLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBeUNEO0lBQ0UsOEVBQThFO0lBQzlFLDhCQUE4QjtJQUM5QiwrQ0FBK0M7SUFDM0IsTUFBbUIsRUFDVSxRQUE4QjtRQUQzRCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ1UsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUE3QmpGLG9DQUFvQztRQUMzQixZQUFPLEdBQStCLE9BQU8sQ0FBQztRQThCckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBTyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUUsSUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLDJGQUEyRjtZQUMzRiwyRkFBMkY7WUFDM0YseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3pELE1BQU0seUNBQXlDLEVBQUUsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxrQ0FBa0MsRUFBRSxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQseUVBQXlFO0lBQ2pFLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO3FIQXBIVSxhQUFhLDBEQTBERixtQkFBbUI7eUdBMUQ5QixhQUFhLDROQWlDYixZQUFZLHFGQVNaLFVBQVUsMkZBU1YsZ0JBQWdCLDhEQXhFakI7Ozs7Ozs7OztHQVNULDREQVVTLFlBQVksNEdBQUUsZ0JBQWdCLCtEQUFFLGFBQWEsaUZBQUUsVUFBVSx5REFBRSxPQUFPOztrR0FFakUsYUFBYTtrQkF2QnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsa0dBQWtHO29CQUNsRyxrR0FBa0c7b0JBQ2xHLCtGQUErRjtvQkFDL0Ysa0dBQWtHO29CQUNsRyxtREFBbUQ7b0JBQ25ELCtDQUErQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87b0JBQ2hELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7aUJBQzlFOzswQkEwREksUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7eUNBdkRyQyxJQUFJO3NCQURQLEtBQUs7Z0JBaUJHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR21DLFNBQVM7c0JBQWpELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFTQSxJQUFJO3NCQUExQyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBU1EsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2RrQ2VsbERlZiwgQ2RrQ29sdW1uRGVmLCBDZGtIZWFkZXJDZWxsRGVmLCBDZGtIZWFkZXJDZWxsLCBDZGtDZWxsfSBmcm9tICcuL2NlbGwnO1xuaW1wb3J0IHtDZGtUYWJsZX0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQge1xuICBnZXRUYWJsZVRleHRDb2x1bW5NaXNzaW5nUGFyZW50VGFibGVFcnJvcixcbiAgZ2V0VGFibGVUZXh0Q29sdW1uTWlzc2luZ05hbWVFcnJvcixcbn0gZnJvbSAnLi90YWJsZS1lcnJvcnMnO1xuaW1wb3J0IHtURVhUX0NPTFVNTl9PUFRJT05TLCBUZXh0Q29sdW1uT3B0aW9uc30gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIENvbHVtbiB0aGF0IHNpbXBseSBzaG93cyB0ZXh0IGNvbnRlbnQgZm9yIHRoZSBoZWFkZXIgYW5kIHJvdyBjZWxscy4gQXNzdW1lcyB0aGF0IHRoZSB0YWJsZVxuICogaXMgdXNpbmcgdGhlIG5hdGl2ZSB0YWJsZSBpbXBsZW1lbnRhdGlvbiAoYDx0YWJsZT5gKS5cbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGUgbmFtZSBvZiB0aGlzIGNvbHVtbiB3aWxsIGJlIHRoZSBoZWFkZXIgdGV4dCBhbmQgZGF0YSBwcm9wZXJ0eSBhY2Nlc3Nvci5cbiAqIFRoZSBoZWFkZXIgdGV4dCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSBgaGVhZGVyVGV4dGAgaW5wdXQuIENlbGwgdmFsdWVzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGhcbiAqIHRoZSBgZGF0YUFjY2Vzc29yYCBpbnB1dC4gQ2hhbmdlIHRoZSB0ZXh0IGp1c3RpZmljYXRpb24gdG8gdGhlIHN0YXJ0IG9yIGVuZCB1c2luZyB0aGUgYGp1c3RpZnlgXG4gKiBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2RrLXRleHQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj1cImxldCBkYXRhXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAvLyBDaGFuZ2UgZGV0ZWN0aW9uIGlzIGludGVudGlvbmFsbHkgbm90IHNldCB0byBPblB1c2guIFRoaXMgY29tcG9uZW50J3MgdGVtcGxhdGUgd2lsbCBiZSBwcm92aWRlZFxuICAvLyB0byB0aGUgdGFibGUgdG8gYmUgaW5zZXJ0ZWQgaW50byBpdHMgdmlldy4gVGhpcyBpcyBwcm9ibGVtYXRpYyB3aGVuIGNoYW5nZSBkZXRlY3Rpb24gcnVucyBzaW5jZVxuICAvLyB0aGUgYmluZGluZ3MgaW4gdGhpcyB0ZW1wbGF0ZSB3aWxsIGJlIGV2YWx1YXRlZCBfYWZ0ZXJfIHRoZSB0YWJsZSdzIHZpZXcgaXMgZXZhbHVhdGVkLCB3aGljaFxuICAvLyBtZWFuJ3MgdGhlIHRlbXBsYXRlIGluIHRoZSB0YWJsZSdzIHZpZXcgd2lsbCBub3QgaGF2ZSB0aGUgdXBkYXRlZCB2YWx1ZSAoYW5kIGluIGZhY3Qgd2lsbCBjYXVzZVxuICAvLyBhbiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yKS5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhbGlkYXRlLWRlY29yYXRvcnNcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrQ29sdW1uRGVmLCBDZGtIZWFkZXJDZWxsRGVmLCBDZGtIZWFkZXJDZWxsLCBDZGtDZWxsRGVmLCBDZGtDZWxsXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2RrVGV4dENvbHVtbjxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqIENvbHVtbiBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgY29sdW1uLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuXG4gICAgLy8gV2l0aCBJdnksIGlucHV0cyBjYW4gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHN0YXRpYyBxdWVyeSByZXN1bHRzIGFyZVxuICAgIC8vIGF2YWlsYWJsZS4gSW4gdGhhdCBjYXNlLCB3ZSBkZWZlciB0aGUgc3luY2hyb25pemF0aW9uIHVudGlsIFwibmdPbkluaXRcIiBmaXJlcy5cbiAgICB0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpO1xuICB9XG4gIF9uYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRleHQgbGFiZWwgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGNvbHVtbiBoZWFkZXIuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90XG4gICAqIHNldCwgdGhlIGhlYWRlciB0ZXh0IHdpbGwgZGVmYXVsdCB0byB0aGUgY29sdW1uIG5hbWUgd2l0aCBpdHMgZmlyc3QgbGV0dGVyIGNhcGl0YWxpemVkLlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3NvciBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgZGF0YSByZW5kZXJlZCBmb3IgZWFjaCBjZWxsLiBJZiB0aGlzXG4gICAqIHByb3BlcnR5IGlzIG5vdCBzZXQsIHRoZSBkYXRhIGNlbGxzIHdpbGwgcmVuZGVyIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgZGF0YSdzIHByb3BlcnR5IG1hdGNoaW5nXG4gICAqIHRoZSBjb2x1bW4ncyBuYW1lLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvbHVtbiBpcyBuYW1lZCBgaWRgLCB0aGVuIHRoZSByZW5kZXJlZCB2YWx1ZSB3aWxsIGJlXG4gICAqIHZhbHVlIGRlZmluZWQgYnkgdGhlIGRhdGEncyBgaWRgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KCkgZGF0YUFjY2Vzc29yOiAoZGF0YTogVCwgbmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEFsaWdubWVudCBvZiB0aGUgY2VsbCB2YWx1ZXMuICovXG4gIEBJbnB1dCgpIGp1c3RpZnk6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBAVmlld0NoaWxkKENka0NvbHVtbkRlZiwge3N0YXRpYzogdHJ1ZX0pIGNvbHVtbkRlZjogQ2RrQ29sdW1uRGVmO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1uIGNlbGwgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbHVtbiBkdXJpbmcgYG5nT25Jbml0YCB3aXRoIGEgc3RhdGljIHF1ZXJ5LlxuICAgKiBOb3JtYWxseSwgdGhpcyB3aWxsIGJlIHJldHJpZXZlZCBieSB0aGUgY29sdW1uIHVzaW5nIGBDb250ZW50Q2hpbGRgLCBidXQgdGhhdCBhc3N1bWVzIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiB3YXMgcHJvdmlkZWQgaW4gdGhlIHNhbWUgdmlldyBhcyB0aGUgdGFibGUsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXNcbiAgICogY29tcG9uZW50LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAVmlld0NoaWxkKENka0NlbGxEZWYsIHtzdGF0aWM6IHRydWV9KSBjZWxsOiBDZGtDZWxsRGVmO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1uIGhlYWRlckNlbGwgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbHVtbiBkdXJpbmcgYG5nT25Jbml0YCB3aXRoIGEgc3RhdGljIHF1ZXJ5LlxuICAgKiBOb3JtYWxseSwgdGhpcyB3aWxsIGJlIHJldHJpZXZlZCBieSB0aGUgY29sdW1uIHVzaW5nIGBDb250ZW50Q2hpbGRgLCBidXQgdGhhdCBhc3N1bWVzIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiB3YXMgcHJvdmlkZWQgaW4gdGhlIHNhbWUgdmlldyBhcyB0aGUgdGFibGUsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXNcbiAgICogY29tcG9uZW50LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAVmlld0NoaWxkKENka0hlYWRlckNlbGxEZWYsIHtzdGF0aWM6IHRydWV9KSBoZWFkZXJDZWxsOiBDZGtIZWFkZXJDZWxsRGVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGBDZGtUZXh0Q29sdW1uYCBpcyBhbHdheXMgcmVxdWlyaW5nIGEgdGFibGUsIGJ1dCB3ZSBqdXN0IGFzc2VydCBpdCBtYW51YWxseVxuICAgIC8vIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbGlnaHR3ZWlnaHQtdG9rZW5zXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdGFibGU6IENka1RhYmxlPFQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEVYVF9DT0xVTU5fT1BUSU9OUykgcHJpdmF0ZSBfb3B0aW9uczogVGV4dENvbHVtbk9wdGlvbnM8VD4sXG4gICkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCk7XG5cbiAgICBpZiAodGhpcy5oZWFkZXJUZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dCA9IHRoaXMuX2NyZWF0ZURlZmF1bHRIZWFkZXJUZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGFBY2Nlc3Nvcikge1xuICAgICAgdGhpcy5kYXRhQWNjZXNzb3IgPVxuICAgICAgICB0aGlzLl9vcHRpb25zLmRlZmF1bHREYXRhQWNjZXNzb3IgfHwgKChkYXRhOiBULCBuYW1lOiBzdHJpbmcpID0+IChkYXRhIGFzIGFueSlbbmFtZV0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90YWJsZSkge1xuICAgICAgLy8gUHJvdmlkZSB0aGUgY2VsbCBhbmQgaGVhZGVyQ2VsbCBkaXJlY3RseSB0byB0aGUgdGFibGUgd2l0aCB0aGUgc3RhdGljIGBWaWV3Q2hpbGRgIHF1ZXJ5LFxuICAgICAgLy8gc2luY2UgdGhlIGNvbHVtbkRlZiB3aWxsIG5vdCBwaWNrIHVwIGl0cyBjb250ZW50IGJ5IHRoZSB0aW1lIHRoZSB0YWJsZSBmaW5pc2hlcyBjaGVja2luZ1xuICAgICAgLy8gaXRzIGNvbnRlbnQgYW5kIGluaXRpYWxpemluZyB0aGUgcm93cy5cbiAgICAgIHRoaXMuY29sdW1uRGVmLmNlbGwgPSB0aGlzLmNlbGw7XG4gICAgICB0aGlzLmNvbHVtbkRlZi5oZWFkZXJDZWxsID0gdGhpcy5oZWFkZXJDZWxsO1xuICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgdGhyb3cgZ2V0VGFibGVUZXh0Q29sdW1uTWlzc2luZ1BhcmVudFRhYmxlRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fdGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhlYWRlciB0ZXh0LiBVc2UgdGhlIG9wdGlvbnMnIGhlYWRlciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIGlmIG9uZVxuICAgKiBoYXMgYmVlbiBwcm92aWRlZC4gT3RoZXJ3aXNlIHNpbXBseSBjYXBpdGFsaXplIHRoZSBjb2x1bW4gbmFtZS5cbiAgICovXG4gIF9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lO1xuXG4gICAgaWYgKCFuYW1lICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRUYWJsZVRleHRDb2x1bW5NaXNzaW5nTmFtZUVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX29wdGlvbnMgJiYgdGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0obmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gIH1cblxuICAvKiogU3luY2hyb25pemVzIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBuYW1lIHdpdGggdGhlIHRleHQgY29sdW1uIG5hbWUuICovXG4gIHByaXZhdGUgX3N5bmNDb2x1bW5EZWZOYW1lKCkge1xuICAgIGlmICh0aGlzLmNvbHVtbkRlZikge1xuICAgICAgdGhpcy5jb2x1bW5EZWYubmFtZSA9IHRoaXMubmFtZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +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
- * Used to provide a table to some of the sub-components without causing a circular dependency.
11
- * @docs-private
12
- */
13
- export const CDK_TABLE = new InjectionToken('CDK_TABLE');
14
- /** Injection token that can be used to specify the text column options. */
15
- export const TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQU0sV0FBVyxDQUFDLENBQUM7QUFjOUQsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUNuRCxxQkFBcUIsQ0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSB0YWJsZSB0byBzb21lIG9mIHRoZSBzdWItY29tcG9uZW50cyB3aXRob3V0IGNhdXNpbmcgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgQ0RLX1RBQkxFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0NES19UQUJMRScpO1xuXG4vKiogQ29uZmlndXJhYmxlIG9wdGlvbnMgZm9yIGBDZGtUZXh0Q29sdW1uYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dENvbHVtbk9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogRGVmYXVsdCBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBoZWFkZXIgdGV4dCBiYXNlZCBvbiB0aGUgY29sdW1uIG5hbWUgaWYgYSBoZWFkZXJcbiAgICogdGV4dCBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBkZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybT86IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcblxuICAvKiogRGVmYXVsdCBkYXRhIGFjY2Vzc29yIHRvIHVzZSBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLiAqL1xuICBkZWZhdWx0RGF0YUFjY2Vzc29yPzogKGRhdGE6IFQsIG5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgdGV4dCBjb2x1bW4gb3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBURVhUX0NPTFVNTl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFRleHRDb2x1bW5PcHRpb25zPGFueT4+KFxuICAndGV4dC1jb2x1bW4tb3B0aW9ucycsXG4pO1xuIl19
@@ -1,102 +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 { BehaviorSubject } from 'rxjs';
9
- /** Subject used to dispatch and listen for changes to the auto change detection status . */
10
- const autoChangeDetectionSubject = new BehaviorSubject({
11
- isDisabled: false,
12
- });
13
- /** The current subscription to `autoChangeDetectionSubject`. */
14
- let autoChangeDetectionSubscription;
15
- /**
16
- * The default handler for auto change detection status changes. This handler will be used if the
17
- * specific environment does not install its own.
18
- * @param status The new auto change detection status.
19
- */
20
- function defaultAutoChangeDetectionHandler(status) {
21
- status.onDetectChangesNow?.();
22
- }
23
- /**
24
- * Allows a test `HarnessEnvironment` to install its own handler for auto change detection status
25
- * changes.
26
- * @param handler The handler for the auto change detection status.
27
- */
28
- export function handleAutoChangeDetectionStatus(handler) {
29
- stopHandlingAutoChangeDetectionStatus();
30
- autoChangeDetectionSubscription = autoChangeDetectionSubject.subscribe(handler);
31
- }
32
- /** Allows a `HarnessEnvironment` to stop handling auto change detection status changes. */
33
- export function stopHandlingAutoChangeDetectionStatus() {
34
- autoChangeDetectionSubscription?.unsubscribe();
35
- autoChangeDetectionSubscription = null;
36
- }
37
- /**
38
- * Batches together triggering of change detection over the duration of the given function.
39
- * @param fn The function to call with batched change detection.
40
- * @param triggerBeforeAndAfter Optionally trigger change detection once before and after the batch
41
- * operation. If false, change detection will not be triggered.
42
- * @return The result of the given function.
43
- */
44
- async function batchChangeDetection(fn, triggerBeforeAndAfter) {
45
- // If change detection batching is already in progress, just run the function.
46
- if (autoChangeDetectionSubject.getValue().isDisabled) {
47
- return await fn();
48
- }
49
- // If nothing is handling change detection batching, install the default handler.
50
- if (!autoChangeDetectionSubscription) {
51
- handleAutoChangeDetectionStatus(defaultAutoChangeDetectionHandler);
52
- }
53
- if (triggerBeforeAndAfter) {
54
- await new Promise(resolve => autoChangeDetectionSubject.next({
55
- isDisabled: true,
56
- onDetectChangesNow: resolve,
57
- }));
58
- // The function passed in may throw (e.g. if the user wants to make an expectation of an error
59
- // being thrown. If this happens, we need to make sure we still re-enable change detection, so
60
- // we wrap it in a `finally` block.
61
- try {
62
- return await fn();
63
- }
64
- finally {
65
- await new Promise(resolve => autoChangeDetectionSubject.next({
66
- isDisabled: false,
67
- onDetectChangesNow: resolve,
68
- }));
69
- }
70
- }
71
- else {
72
- autoChangeDetectionSubject.next({ isDisabled: true });
73
- // The function passed in may throw (e.g. if the user wants to make an expectation of an error
74
- // being thrown. If this happens, we need to make sure we still re-enable change detection, so
75
- // we wrap it in a `finally` block.
76
- try {
77
- return await fn();
78
- }
79
- finally {
80
- autoChangeDetectionSubject.next({ isDisabled: false });
81
- }
82
- }
83
- }
84
- /**
85
- * Disables the harness system's auto change detection for the duration of the given function.
86
- * @param fn The function to disable auto change detection for.
87
- * @return The result of the given function.
88
- */
89
- export async function manualChangeDetection(fn) {
90
- return batchChangeDetection(fn, false);
91
- }
92
- /**
93
- * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change
94
- * detection over the entire operation such that change detection occurs exactly once before
95
- * resolving the values and once after.
96
- * @param values A getter for the async values to resolve in parallel with batched change detection.
97
- * @return The resolved values.
98
- */
99
- export async function parallel(values) {
100
- return batchChangeDetection(() => Promise.all(values()), true);
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWRldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvdGVzdGluZy9jaGFuZ2UtZGV0ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFjbkQsNEZBQTRGO0FBQzVGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxlQUFlLENBQTRCO0lBQ2hGLFVBQVUsRUFBRSxLQUFLO0NBQ2xCLENBQUMsQ0FBQztBQUVILGdFQUFnRTtBQUNoRSxJQUFJLCtCQUFvRCxDQUFDO0FBRXpEOzs7O0dBSUc7QUFDSCxTQUFTLGlDQUFpQyxDQUFDLE1BQWlDO0lBQzFFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzdDLE9BQW9EO0lBRXBELHFDQUFxQyxFQUFFLENBQUM7SUFDeEMsK0JBQStCLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRCwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLHFDQUFxQztJQUNuRCwrQkFBK0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMvQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxvQkFBb0IsQ0FBSSxFQUFvQixFQUFFLHFCQUE4QjtJQUN6Riw4RUFBOEU7SUFDOUUsSUFBSSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUNyQywrQkFBK0IsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUMxQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsT0FBcUI7U0FDMUMsQ0FBQyxDQUNILENBQUM7UUFDRiw4RkFBOEY7UUFDOUYsOEZBQThGO1FBQzlGLG1DQUFtQztRQUNuQyxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDcEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUMxQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixrQkFBa0IsRUFBRSxPQUFxQjthQUMxQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3BELDhGQUE4RjtRQUM5Riw4RkFBOEY7UUFDOUYsbUNBQW1DO1FBQ25DLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNwQixDQUFDO2dCQUFTLENBQUM7WUFDVCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBSSxFQUFvQjtJQUNqRSxPQUFPLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBa0VEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFJLE1BQTBDO0lBQzFFLE9BQU8sb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbi8qKiBSZXByZXNlbnRzIHRoZSBzdGF0dXMgb2YgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzIHtcbiAgLyoqIFdoZXRoZXIgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIGlzIGRpc2FibGVkLiAqL1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgY2FsbGJhY2ssIGlmIHByZXNlbnQgaXQgaW5kaWNhdGVzIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBzaG91bGQgYmUgcnVuIGltbWVkaWF0ZWx5LFxuICAgKiB3aGlsZSBoYW5kbGluZyB0aGUgc3RhdHVzIGNoYW5nZS4gVGhlIGNhbGxiYWNrIHNob3VsZCB0aGVuIGJlIGNhbGxlZCBhcyBzb29uIGFzIGNoYW5nZVxuICAgKiBkZXRlY3Rpb24gaXMgZG9uZS5cbiAgICovXG4gIG9uRGV0ZWN0Q2hhbmdlc05vdz86ICgpID0+IHZvaWQ7XG59XG5cbi8qKiBTdWJqZWN0IHVzZWQgdG8gZGlzcGF0Y2ggYW5kIGxpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIHN0YXR1cyAuICovXG5jb25zdCBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0b0NoYW5nZURldGVjdGlvblN0YXR1cz4oe1xuICBpc0Rpc2FibGVkOiBmYWxzZSxcbn0pO1xuXG4vKiogVGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uIHRvIGBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdGAuICovXG5sZXQgYXV0b0NoYW5nZURldGVjdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzIGNoYW5nZXMuIFRoaXMgaGFuZGxlciB3aWxsIGJlIHVzZWQgaWYgdGhlXG4gKiBzcGVjaWZpYyBlbnZpcm9ubWVudCBkb2VzIG5vdCBpbnN0YWxsIGl0cyBvd24uXG4gKiBAcGFyYW0gc3RhdHVzIFRoZSBuZXcgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIHN0YXR1cy5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdEF1dG9DaGFuZ2VEZXRlY3Rpb25IYW5kbGVyKHN0YXR1czogQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cykge1xuICBzdGF0dXMub25EZXRlY3RDaGFuZ2VzTm93Py4oKTtcbn1cblxuLyoqXG4gKiBBbGxvd3MgYSB0ZXN0IGBIYXJuZXNzRW52aXJvbm1lbnRgIHRvIGluc3RhbGwgaXRzIG93biBoYW5kbGVyIGZvciBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzXG4gKiBjaGFuZ2VzLlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZm9yIHRoZSBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cyhcbiAgaGFuZGxlcjogKHN0YXR1czogQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cykgPT4gdm9pZCxcbikge1xuICBzdG9wSGFuZGxpbmdBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCk7XG4gIGF1dG9DaGFuZ2VEZXRlY3Rpb25TdWJzY3JpcHRpb24gPSBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5zdWJzY3JpYmUoaGFuZGxlcik7XG59XG5cbi8qKiBBbGxvd3MgYSBgSGFybmVzc0Vudmlyb25tZW50YCB0byBzdG9wIGhhbmRsaW5nIGF1dG8gY2hhbmdlIGRldGVjdGlvbiBzdGF0dXMgY2hhbmdlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9wSGFuZGxpbmdBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCkge1xuICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uID0gbnVsbDtcbn1cblxuLyoqXG4gKiBCYXRjaGVzIHRvZ2V0aGVyIHRyaWdnZXJpbmcgb2YgY2hhbmdlIGRldGVjdGlvbiBvdmVyIHRoZSBkdXJhdGlvbiBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcGFyYW0gdHJpZ2dlckJlZm9yZUFuZEFmdGVyIE9wdGlvbmFsbHkgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIG9uY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgYmF0Y2hcbiAqICAgb3BlcmF0aW9uLiBJZiBmYWxzZSwgY2hhbmdlIGRldGVjdGlvbiB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBiYXRjaENoYW5nZURldGVjdGlvbjxUPihmbjogKCkgPT4gUHJvbWlzZTxUPiwgdHJpZ2dlckJlZm9yZUFuZEFmdGVyOiBib29sZWFuKSB7XG4gIC8vIElmIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywganVzdCBydW4gdGhlIGZ1bmN0aW9uLlxuICBpZiAoYXV0b0NoYW5nZURldGVjdGlvblN1YmplY3QuZ2V0VmFsdWUoKS5pc0Rpc2FibGVkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cblxuICAvLyBJZiBub3RoaW5nIGlzIGhhbmRsaW5nIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcsIGluc3RhbGwgdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgaWYgKCFhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgaGFuZGxlQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cyhkZWZhdWx0QXV0b0NoYW5nZURldGVjdGlvbkhhbmRsZXIpO1xuICB9XG5cbiAgaWYgKHRyaWdnZXJCZWZvcmVBbmRBZnRlcikge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT5cbiAgICAgIGF1dG9DaGFuZ2VEZXRlY3Rpb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBvbkRldGVjdENoYW5nZXNOb3c6IHJlc29sdmUgYXMgKCkgPT4gdm9pZCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgLy8gVGhlIGZ1bmN0aW9uIHBhc3NlZCBpbiBtYXkgdGhyb3cgKGUuZy4gaWYgdGhlIHVzZXIgd2FudHMgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiBvZiBhbiBlcnJvclxuICAgIC8vIGJlaW5nIHRocm93bi4gSWYgdGhpcyBoYXBwZW5zLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBzdGlsbCByZS1lbmFibGUgY2hhbmdlIGRldGVjdGlvbiwgc29cbiAgICAvLyB3ZSB3cmFwIGl0IGluIGEgYGZpbmFsbHlgIGJsb2NrLlxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PlxuICAgICAgICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBvbkRldGVjdENoYW5nZXNOb3c6IHJlc29sdmUgYXMgKCkgPT4gdm9pZCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5uZXh0KHtpc0Rpc2FibGVkOiB0cnVlfSk7XG4gICAgLy8gVGhlIGZ1bmN0aW9uIHBhc3NlZCBpbiBtYXkgdGhyb3cgKGUuZy4gaWYgdGhlIHVzZXIgd2FudHMgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiBvZiBhbiBlcnJvclxuICAgIC8vIGJlaW5nIHRocm93bi4gSWYgdGhpcyBoYXBwZW5zLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBzdGlsbCByZS1lbmFibGUgY2hhbmdlIGRldGVjdGlvbiwgc29cbiAgICAvLyB3ZSB3cmFwIGl0IGluIGEgYGZpbmFsbHlgIGJsb2NrLlxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXV0b0NoYW5nZURldGVjdGlvblN1YmplY3QubmV4dCh7aXNEaXNhYmxlZDogZmFsc2V9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNhYmxlcyB0aGUgaGFybmVzcyBzeXN0ZW0ncyBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIGRpc2FibGUgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIGZvci5cbiAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYW51YWxDaGFuZ2VEZXRlY3Rpb248VD4oZm46ICgpID0+IFByb21pc2U8VD4pIHtcbiAgcmV0dXJuIGJhdGNoQ2hhbmdlRGV0ZWN0aW9uKGZuLCBmYWxzZSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDIsIFQzLCBUNCwgVDU+KFxuICB2YWx1ZXM6ICgpID0+IFtcbiAgICBUMSB8IFByb21pc2VMaWtlPFQxPixcbiAgICBUMiB8IFByb21pc2VMaWtlPFQyPixcbiAgICBUMyB8IFByb21pc2VMaWtlPFQzPixcbiAgICBUNCB8IFByb21pc2VMaWtlPFQ0PixcbiAgICBUNSB8IFByb21pc2VMaWtlPFQ1PixcbiAgXSxcbik6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBsaXN0IG9mIGFzeW5jIHZhbHVlcyBpbiBwYXJhbGxlbCAoaS5lLiB2aWEgUHJvbWlzZS5hbGwpIHdoaWxlIGJhdGNoaW5nIGNoYW5nZVxuICogZGV0ZWN0aW9uIG92ZXIgdGhlIGVudGlyZSBvcGVyYXRpb24gc3VjaCB0aGF0IGNoYW5nZSBkZXRlY3Rpb24gb2NjdXJzIGV4YWN0bHkgb25jZSBiZWZvcmVcbiAqIHJlc29sdmluZyB0aGUgdmFsdWVzIGFuZCBvbmNlIGFmdGVyLlxuICogQHBhcmFtIHZhbHVlcyBBIGdldHRlciBmb3IgdGhlIGFzeW5jIHZhbHVlcyB0byByZXNvbHZlIGluIHBhcmFsbGVsIHdpdGggYmF0Y2hlZCBjaGFuZ2UgZGV0ZWN0aW9uLlxuICogQHJldHVybiBUaGUgcmVzb2x2ZWQgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYWxsZWw8VDEsIFQyLCBUMywgVDQ+KFxuICB2YWx1ZXM6ICgpID0+IFtcbiAgICBUMSB8IFByb21pc2VMaWtlPFQxPixcbiAgICBUMiB8IFByb21pc2VMaWtlPFQyPixcbiAgICBUMyB8IFByb21pc2VMaWtlPFQzPixcbiAgICBUNCB8IFByb21pc2VMaWtlPFQ0PixcbiAgXSxcbik6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDIsIFQzPihcbiAgdmFsdWVzOiAoKSA9PiBbVDEgfCBQcm9taXNlTGlrZTxUMT4sIFQyIHwgUHJvbWlzZUxpa2U8VDI+LCBUMyB8IFByb21pc2VMaWtlPFQzPl0sXG4pOiBQcm9taXNlPFtUMSwgVDIsIFQzXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDI+KFxuICB2YWx1ZXM6ICgpID0+IFtUMSB8IFByb21pc2VMaWtlPFQxPiwgVDIgfCBQcm9taXNlTGlrZTxUMj5dLFxuKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUPih2YWx1ZXM6ICgpID0+IChUIHwgUHJvbWlzZUxpa2U8VD4pW10pOiBQcm9taXNlPFRbXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJhbGxlbDxUPih2YWx1ZXM6ICgpID0+IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBQcm9taXNlPFRbXT4ge1xuICByZXR1cm4gYmF0Y2hDaGFuZ2VEZXRlY3Rpb24oKCkgPT4gUHJvbWlzZS5hbGwodmFsdWVzKCkpLCB0cnVlKTtcbn1cbiJdfQ==