@angular/core 18.2.4 → 18.2.6

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 (414) hide show
  1. package/esm2022/index.mjs +2 -2
  2. package/esm2022/primitives/event-dispatch/contract_binary.mjs +2 -2
  3. package/esm2022/primitives/event-dispatch/index.mjs +2 -2
  4. package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +2 -2
  5. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +2 -2
  6. package/esm2022/primitives/event-dispatch/src/attribute.mjs +2 -2
  7. package/esm2022/primitives/event-dispatch/src/bootstrap_app_scoped.mjs +2 -2
  8. package/esm2022/primitives/event-dispatch/src/bootstrap_global.mjs +2 -2
  9. package/esm2022/primitives/event-dispatch/src/cache.mjs +2 -2
  10. package/esm2022/primitives/event-dispatch/src/char.mjs +2 -2
  11. package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +2 -2
  12. package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +2 -2
  13. package/esm2022/primitives/event-dispatch/src/event.mjs +2 -2
  14. package/esm2022/primitives/event-dispatch/src/event_contract_container.mjs +2 -2
  15. package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +2 -2
  16. package/esm2022/primitives/event-dispatch/src/event_contract_multi_container.mjs +2 -2
  17. package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +2 -2
  18. package/esm2022/primitives/event-dispatch/src/event_handler.mjs +2 -2
  19. package/esm2022/primitives/event-dispatch/src/event_info.mjs +2 -2
  20. package/esm2022/primitives/event-dispatch/src/event_type.mjs +2 -2
  21. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +2 -2
  22. package/esm2022/primitives/event-dispatch/src/key_code.mjs +2 -2
  23. package/esm2022/primitives/event-dispatch/src/property.mjs +2 -2
  24. package/esm2022/primitives/event-dispatch/src/restriction.mjs +2 -2
  25. package/esm2022/primitives/signals/index.mjs +2 -2
  26. package/esm2022/primitives/signals/src/computed.mjs +2 -2
  27. package/esm2022/primitives/signals/src/equality.mjs +2 -2
  28. package/esm2022/primitives/signals/src/errors.mjs +2 -2
  29. package/esm2022/primitives/signals/src/graph.mjs +2 -2
  30. package/esm2022/primitives/signals/src/signal.mjs +2 -2
  31. package/esm2022/primitives/signals/src/watch.mjs +2 -2
  32. package/esm2022/primitives/signals/src/weak_ref.mjs +2 -2
  33. package/esm2022/public_api.mjs +2 -2
  34. package/esm2022/rxjs-interop/index.mjs +2 -2
  35. package/esm2022/rxjs-interop/public_api.mjs +2 -2
  36. package/esm2022/rxjs-interop/src/index.mjs +2 -2
  37. package/esm2022/rxjs-interop/src/output_from_observable.mjs +2 -2
  38. package/esm2022/rxjs-interop/src/output_to_observable.mjs +2 -2
  39. package/esm2022/rxjs-interop/src/take_until_destroyed.mjs +2 -2
  40. package/esm2022/rxjs-interop/src/to_observable.mjs +2 -2
  41. package/esm2022/rxjs-interop/src/to_signal.mjs +3 -3
  42. package/esm2022/src/application/application_config.mjs +2 -2
  43. package/esm2022/src/application/application_init.mjs +1 -1
  44. package/esm2022/src/application/application_module.mjs +2 -2
  45. package/esm2022/src/application/application_ngmodule_factory_compiler.mjs +2 -2
  46. package/esm2022/src/application/application_ref.mjs +2 -2
  47. package/esm2022/src/application/application_tokens.mjs +2 -2
  48. package/esm2022/src/application/create_application.mjs +2 -2
  49. package/esm2022/src/authoring/input/input.mjs +2 -2
  50. package/esm2022/src/authoring/input/input_signal.mjs +2 -2
  51. package/esm2022/src/authoring/input/input_signal_node.mjs +2 -2
  52. package/esm2022/src/authoring/input/input_type_checking.mjs +2 -2
  53. package/esm2022/src/authoring/model/model.mjs +2 -2
  54. package/esm2022/src/authoring/model/model_signal.mjs +2 -2
  55. package/esm2022/src/authoring/output/output.mjs +2 -2
  56. package/esm2022/src/authoring/output/output_emitter_ref.mjs +2 -2
  57. package/esm2022/src/authoring/output/output_ref.mjs +2 -2
  58. package/esm2022/src/authoring/queries.mjs +2 -2
  59. package/esm2022/src/authoring.mjs +2 -2
  60. package/esm2022/src/cached_injector_service.mjs +2 -2
  61. package/esm2022/src/change_detection/change_detection.mjs +2 -2
  62. package/esm2022/src/change_detection/change_detector_ref.mjs +2 -2
  63. package/esm2022/src/change_detection/constants.mjs +2 -2
  64. package/esm2022/src/change_detection/differs/default_iterable_differ.mjs +2 -2
  65. package/esm2022/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
  66. package/esm2022/src/change_detection/differs/iterable_differs.mjs +2 -2
  67. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +2 -2
  68. package/esm2022/src/change_detection/pipe_transform.mjs +2 -2
  69. package/esm2022/src/change_detection/scheduling/exhaustive_check_no_changes.mjs +2 -2
  70. package/esm2022/src/change_detection/scheduling/flags.mjs +2 -2
  71. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +2 -2
  72. package/esm2022/src/change_detection/scheduling/zoneless_scheduling.mjs +2 -2
  73. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  74. package/esm2022/src/change_detection.mjs +2 -2
  75. package/esm2022/src/compiler/compiler_facade.mjs +2 -2
  76. package/esm2022/src/compiler/compiler_facade_interface.mjs +2 -2
  77. package/esm2022/src/console.mjs +2 -2
  78. package/esm2022/src/core.mjs +2 -2
  79. package/esm2022/src/core_private_export.mjs +2 -2
  80. package/esm2022/src/core_reactivity_export.mjs +2 -2
  81. package/esm2022/src/core_reactivity_export_internal.mjs +2 -2
  82. package/esm2022/src/core_render3_private_export.mjs +2 -2
  83. package/esm2022/src/debug/debug_node.mjs +2 -2
  84. package/esm2022/src/defer/cleanup.mjs +2 -2
  85. package/esm2022/src/defer/discovery.mjs +2 -2
  86. package/esm2022/src/defer/dom_triggers.mjs +2 -2
  87. package/esm2022/src/defer/idle_scheduler.mjs +2 -2
  88. package/esm2022/src/defer/instructions.mjs +2 -2
  89. package/esm2022/src/defer/interfaces.mjs +2 -2
  90. package/esm2022/src/defer/timer_scheduler.mjs +2 -2
  91. package/esm2022/src/defer/utils.mjs +2 -2
  92. package/esm2022/src/di/contextual.mjs +2 -2
  93. package/esm2022/src/di/create_injector.mjs +2 -2
  94. package/esm2022/src/di/forward_ref.mjs +2 -2
  95. package/esm2022/src/di/host_attribute_token.mjs +2 -2
  96. package/esm2022/src/di/host_tag_name_token.mjs +2 -2
  97. package/esm2022/src/di/index.mjs +2 -2
  98. package/esm2022/src/di/initializer_token.mjs +2 -2
  99. package/esm2022/src/di/inject_switch.mjs +2 -2
  100. package/esm2022/src/di/injectable.mjs +2 -2
  101. package/esm2022/src/di/injection_token.mjs +2 -2
  102. package/esm2022/src/di/injector.mjs +2 -2
  103. package/esm2022/src/di/injector_compatibility.mjs +2 -2
  104. package/esm2022/src/di/injector_marker.mjs +2 -2
  105. package/esm2022/src/di/injector_token.mjs +2 -2
  106. package/esm2022/src/di/interface/defs.mjs +2 -2
  107. package/esm2022/src/di/interface/injector.mjs +2 -2
  108. package/esm2022/src/di/interface/provider.mjs +2 -2
  109. package/esm2022/src/di/internal_tokens.mjs +2 -2
  110. package/esm2022/src/di/jit/environment.mjs +2 -2
  111. package/esm2022/src/di/jit/injectable.mjs +2 -2
  112. package/esm2022/src/di/jit/util.mjs +2 -2
  113. package/esm2022/src/di/metadata.mjs +2 -2
  114. package/esm2022/src/di/metadata_attr.mjs +2 -2
  115. package/esm2022/src/di/null_injector.mjs +2 -2
  116. package/esm2022/src/di/provider_collection.mjs +2 -2
  117. package/esm2022/src/di/provider_token.mjs +2 -2
  118. package/esm2022/src/di/r3_injector.mjs +2 -2
  119. package/esm2022/src/di/scope.mjs +2 -2
  120. package/esm2022/src/di.mjs +2 -2
  121. package/esm2022/src/error_details_base_url.mjs +2 -2
  122. package/esm2022/src/error_handler.mjs +2 -2
  123. package/esm2022/src/errors.mjs +2 -2
  124. package/esm2022/src/event_delegation_utils.mjs +2 -2
  125. package/esm2022/src/event_dispatch/event_delegation.mjs +2 -2
  126. package/esm2022/src/event_emitter.mjs +2 -2
  127. package/esm2022/src/hydration/annotate.mjs +6 -4
  128. package/esm2022/src/hydration/api.mjs +2 -2
  129. package/esm2022/src/hydration/cleanup.mjs +2 -2
  130. package/esm2022/src/hydration/compression.mjs +2 -2
  131. package/esm2022/src/hydration/error_handling.mjs +2 -2
  132. package/esm2022/src/hydration/event_replay.mjs +2 -2
  133. package/esm2022/src/hydration/i18n.mjs +2 -2
  134. package/esm2022/src/hydration/interfaces.mjs +2 -2
  135. package/esm2022/src/hydration/node_lookup_utils.mjs +2 -2
  136. package/esm2022/src/hydration/skip_hydration.mjs +2 -2
  137. package/esm2022/src/hydration/tokens.mjs +2 -2
  138. package/esm2022/src/hydration/utils.mjs +2 -2
  139. package/esm2022/src/hydration/views.mjs +2 -2
  140. package/esm2022/src/i18n/locale_data_api.mjs +2 -2
  141. package/esm2022/src/i18n/locale_en.mjs +2 -2
  142. package/esm2022/src/i18n/localization.mjs +2 -2
  143. package/esm2022/src/i18n/tokens.mjs +2 -2
  144. package/esm2022/src/i18n/utils.mjs +2 -2
  145. package/esm2022/src/image_performance_warning.mjs +2 -2
  146. package/esm2022/src/interface/lifecycle_hooks.mjs +1 -1
  147. package/esm2022/src/interface/simple_change.mjs +2 -2
  148. package/esm2022/src/interface/type.mjs +2 -2
  149. package/esm2022/src/linker/compiler.mjs +2 -2
  150. package/esm2022/src/linker/component_factory.mjs +2 -2
  151. package/esm2022/src/linker/component_factory_resolver.mjs +2 -2
  152. package/esm2022/src/linker/destroy_ref.mjs +2 -2
  153. package/esm2022/src/linker/element_ref.mjs +2 -2
  154. package/esm2022/src/linker/ng_module_factory.mjs +2 -2
  155. package/esm2022/src/linker/ng_module_factory_loader.mjs +2 -2
  156. package/esm2022/src/linker/ng_module_factory_loader_impl.mjs +2 -2
  157. package/esm2022/src/linker/ng_module_registration.mjs +2 -2
  158. package/esm2022/src/linker/query_list.mjs +2 -2
  159. package/esm2022/src/linker/template_ref.mjs +2 -2
  160. package/esm2022/src/linker/view_container_ref.mjs +2 -2
  161. package/esm2022/src/linker/view_ref.mjs +2 -2
  162. package/esm2022/src/linker.mjs +2 -2
  163. package/esm2022/src/metadata/di.mjs +2 -2
  164. package/esm2022/src/metadata/directives.mjs +2 -2
  165. package/esm2022/src/metadata/do_bootstrap.mjs +2 -2
  166. package/esm2022/src/metadata/ng_module.mjs +2 -2
  167. package/esm2022/src/metadata/ng_module_def.mjs +2 -2
  168. package/esm2022/src/metadata/resource_loading.mjs +2 -2
  169. package/esm2022/src/metadata/schema.mjs +2 -2
  170. package/esm2022/src/metadata/view.mjs +2 -2
  171. package/esm2022/src/metadata.mjs +2 -2
  172. package/esm2022/src/pending_tasks.mjs +2 -2
  173. package/esm2022/src/platform/bootstrap.mjs +1 -1
  174. package/esm2022/src/platform/platform.mjs +2 -2
  175. package/esm2022/src/platform/platform_core_providers.mjs +2 -2
  176. package/esm2022/src/platform/platform_destroy_listeners.mjs +2 -2
  177. package/esm2022/src/platform/platform_ref.mjs +2 -2
  178. package/esm2022/src/r3_symbols.mjs +2 -2
  179. package/esm2022/src/reflection/platform_reflection_capabilities.mjs +2 -2
  180. package/esm2022/src/reflection/reflection_capabilities.mjs +2 -2
  181. package/esm2022/src/render/api.mjs +2 -2
  182. package/esm2022/src/render/api_flags.mjs +2 -2
  183. package/esm2022/src/render.mjs +2 -2
  184. package/esm2022/src/render3/after_render/api.mjs +2 -2
  185. package/esm2022/src/render3/after_render/hooks.mjs +2 -2
  186. package/esm2022/src/render3/after_render/manager.mjs +2 -2
  187. package/esm2022/src/render3/apply_value_input_field.mjs +2 -2
  188. package/esm2022/src/render3/assert.mjs +2 -2
  189. package/esm2022/src/render3/bindings.mjs +2 -2
  190. package/esm2022/src/render3/chained_injector.mjs +2 -2
  191. package/esm2022/src/render3/collect_native_nodes.mjs +2 -2
  192. package/esm2022/src/render3/component.mjs +2 -2
  193. package/esm2022/src/render3/component_ref.mjs +3 -3
  194. package/esm2022/src/render3/context_discovery.mjs +2 -2
  195. package/esm2022/src/render3/debug/framework_injector_profiler.mjs +2 -2
  196. package/esm2022/src/render3/debug/injector_profiler.mjs +2 -2
  197. package/esm2022/src/render3/debug/set_debug_info.mjs +2 -2
  198. package/esm2022/src/render3/definition.mjs +2 -2
  199. package/esm2022/src/render3/definition_factory.mjs +2 -2
  200. package/esm2022/src/render3/deps_tracker/api.mjs +2 -2
  201. package/esm2022/src/render3/deps_tracker/deps_tracker.mjs +2 -2
  202. package/esm2022/src/render3/di.mjs +2 -2
  203. package/esm2022/src/render3/di_setup.mjs +2 -2
  204. package/esm2022/src/render3/errors.mjs +2 -2
  205. package/esm2022/src/render3/errors_di.mjs +2 -2
  206. package/esm2022/src/render3/features/copy_definition_feature.mjs +2 -2
  207. package/esm2022/src/render3/features/host_directives_feature.mjs +2 -2
  208. package/esm2022/src/render3/features/inherit_definition_feature.mjs +2 -2
  209. package/esm2022/src/render3/features/input_transforms_feature.mjs +2 -2
  210. package/esm2022/src/render3/features/ng_onchanges_feature.mjs +2 -2
  211. package/esm2022/src/render3/features/providers_feature.mjs +1 -1
  212. package/esm2022/src/render3/features/standalone_feature.mjs +2 -2
  213. package/esm2022/src/render3/fields.mjs +2 -2
  214. package/esm2022/src/render3/global_utils_api.mjs +2 -2
  215. package/esm2022/src/render3/hooks.mjs +2 -2
  216. package/esm2022/src/render3/i18n/i18n_apply.mjs +2 -2
  217. package/esm2022/src/render3/i18n/i18n_debug.mjs +2 -2
  218. package/esm2022/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
  219. package/esm2022/src/render3/i18n/i18n_locale_id.mjs +2 -2
  220. package/esm2022/src/render3/i18n/i18n_parse.mjs +2 -2
  221. package/esm2022/src/render3/i18n/i18n_postprocess.mjs +2 -2
  222. package/esm2022/src/render3/i18n/i18n_tree_shaking.mjs +2 -2
  223. package/esm2022/src/render3/i18n/i18n_util.mjs +2 -2
  224. package/esm2022/src/render3/index.mjs +2 -2
  225. package/esm2022/src/render3/instructions/advance.mjs +2 -2
  226. package/esm2022/src/render3/instructions/all.mjs +2 -2
  227. package/esm2022/src/render3/instructions/attribute.mjs +2 -2
  228. package/esm2022/src/render3/instructions/attribute_interpolation.mjs +1 -1
  229. package/esm2022/src/render3/instructions/change_detection.mjs +2 -2
  230. package/esm2022/src/render3/instructions/class_map_interpolation.mjs +2 -2
  231. package/esm2022/src/render3/instructions/component_instance.mjs +2 -2
  232. package/esm2022/src/render3/instructions/control_flow.mjs +2 -2
  233. package/esm2022/src/render3/instructions/di.mjs +2 -2
  234. package/esm2022/src/render3/instructions/di_attr.mjs +2 -2
  235. package/esm2022/src/render3/instructions/element.mjs +2 -2
  236. package/esm2022/src/render3/instructions/element_container.mjs +2 -2
  237. package/esm2022/src/render3/instructions/element_validation.mjs +2 -2
  238. package/esm2022/src/render3/instructions/get_current_view.mjs +1 -1
  239. package/esm2022/src/render3/instructions/host_property.mjs +2 -2
  240. package/esm2022/src/render3/instructions/i18n.mjs +2 -2
  241. package/esm2022/src/render3/instructions/i18n_icu_container_visitor.mjs +2 -2
  242. package/esm2022/src/render3/instructions/interpolation.mjs +2 -2
  243. package/esm2022/src/render3/instructions/let_declaration.mjs +2 -2
  244. package/esm2022/src/render3/instructions/listener.mjs +2 -2
  245. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +2 -2
  246. package/esm2022/src/render3/instructions/namespace.mjs +2 -2
  247. package/esm2022/src/render3/instructions/next_context.mjs +2 -2
  248. package/esm2022/src/render3/instructions/projection.mjs +2 -2
  249. package/esm2022/src/render3/instructions/property.mjs +2 -2
  250. package/esm2022/src/render3/instructions/property_interpolation.mjs +1 -1
  251. package/esm2022/src/render3/instructions/queries.mjs +2 -2
  252. package/esm2022/src/render3/instructions/queries_signals.mjs +2 -2
  253. package/esm2022/src/render3/instructions/render.mjs +2 -2
  254. package/esm2022/src/render3/instructions/shared.mjs +2 -2
  255. package/esm2022/src/render3/instructions/storage.mjs +2 -2
  256. package/esm2022/src/render3/instructions/style_map_interpolation.mjs +2 -2
  257. package/esm2022/src/render3/instructions/style_prop_interpolation.mjs +2 -2
  258. package/esm2022/src/render3/instructions/styling.mjs +2 -2
  259. package/esm2022/src/render3/instructions/template.mjs +2 -2
  260. package/esm2022/src/render3/instructions/text.mjs +2 -2
  261. package/esm2022/src/render3/instructions/text_interpolation.mjs +2 -2
  262. package/esm2022/src/render3/instructions/two_way.mjs +2 -2
  263. package/esm2022/src/render3/instructions/write_to_directive_input.mjs +2 -2
  264. package/esm2022/src/render3/interfaces/attribute_marker.mjs +2 -2
  265. package/esm2022/src/render3/interfaces/container.mjs +2 -2
  266. package/esm2022/src/render3/interfaces/context.mjs +2 -2
  267. package/esm2022/src/render3/interfaces/definition.mjs +2 -2
  268. package/esm2022/src/render3/interfaces/document.mjs +2 -2
  269. package/esm2022/src/render3/interfaces/i18n.mjs +2 -2
  270. package/esm2022/src/render3/interfaces/injector.mjs +2 -2
  271. package/esm2022/src/render3/interfaces/input_flags.mjs +2 -2
  272. package/esm2022/src/render3/interfaces/lview_tracking.mjs +2 -2
  273. package/esm2022/src/render3/interfaces/node.mjs +4 -1
  274. package/esm2022/src/render3/interfaces/projection.mjs +2 -2
  275. package/esm2022/src/render3/interfaces/public_definitions.mjs +2 -2
  276. package/esm2022/src/render3/interfaces/query.mjs +2 -2
  277. package/esm2022/src/render3/interfaces/renderer.mjs +2 -2
  278. package/esm2022/src/render3/interfaces/renderer_dom.mjs +2 -2
  279. package/esm2022/src/render3/interfaces/sanitization.mjs +2 -2
  280. package/esm2022/src/render3/interfaces/styling.mjs +2 -2
  281. package/esm2022/src/render3/interfaces/type_checks.mjs +2 -2
  282. package/esm2022/src/render3/interfaces/view.mjs +2 -2
  283. package/esm2022/src/render3/jit/directive.mjs +2 -2
  284. package/esm2022/src/render3/jit/environment.mjs +2 -2
  285. package/esm2022/src/render3/jit/jit_options.mjs +1 -1
  286. package/esm2022/src/render3/jit/module.mjs +2 -2
  287. package/esm2022/src/render3/jit/module_patch.mjs +2 -2
  288. package/esm2022/src/render3/jit/partial.mjs +2 -2
  289. package/esm2022/src/render3/jit/pipe.mjs +2 -2
  290. package/esm2022/src/render3/jit/util.mjs +2 -2
  291. package/esm2022/src/render3/list_reconciliation.mjs +2 -2
  292. package/esm2022/src/render3/local_compilation.mjs +2 -2
  293. package/esm2022/src/render3/metadata.mjs +2 -2
  294. package/esm2022/src/render3/namespaces.mjs +2 -2
  295. package/esm2022/src/render3/ng_module_ref.mjs +2 -2
  296. package/esm2022/src/render3/node_assert.mjs +2 -2
  297. package/esm2022/src/render3/node_manipulation.mjs +2 -2
  298. package/esm2022/src/render3/node_manipulation_i18n.mjs +2 -2
  299. package/esm2022/src/render3/node_selector_matcher.mjs +2 -2
  300. package/esm2022/src/render3/pipe.mjs +2 -2
  301. package/esm2022/src/render3/profiler.mjs +2 -2
  302. package/esm2022/src/render3/profiler_types.mjs +2 -2
  303. package/esm2022/src/render3/pure_function.mjs +2 -2
  304. package/esm2022/src/render3/query.mjs +2 -2
  305. package/esm2022/src/render3/query_reactive.mjs +2 -2
  306. package/esm2022/src/render3/reactive_lview_consumer.mjs +2 -2
  307. package/esm2022/src/render3/reactivity/api.mjs +2 -2
  308. package/esm2022/src/render3/reactivity/asserts.mjs +2 -2
  309. package/esm2022/src/render3/reactivity/computed.mjs +2 -2
  310. package/esm2022/src/render3/reactivity/effect.mjs +2 -2
  311. package/esm2022/src/render3/reactivity/signal.mjs +2 -2
  312. package/esm2022/src/render3/reactivity/untracked.mjs +2 -2
  313. package/esm2022/src/render3/scope.mjs +2 -2
  314. package/esm2022/src/render3/state.mjs +2 -2
  315. package/esm2022/src/render3/styling/class_differ.mjs +2 -2
  316. package/esm2022/src/render3/styling/static_styling.mjs +2 -2
  317. package/esm2022/src/render3/styling/style_binding_list.mjs +2 -2
  318. package/esm2022/src/render3/styling/styling_parser.mjs +2 -2
  319. package/esm2022/src/render3/tokens.mjs +2 -2
  320. package/esm2022/src/render3/util/attrs_utils.mjs +1 -1
  321. package/esm2022/src/render3/util/change_detection_utils.mjs +2 -2
  322. package/esm2022/src/render3/util/discovery_utils.mjs +2 -2
  323. package/esm2022/src/render3/util/global_utils.mjs +2 -2
  324. package/esm2022/src/render3/util/injector_discovery_utils.mjs +2 -2
  325. package/esm2022/src/render3/util/injector_utils.mjs +2 -2
  326. package/esm2022/src/render3/util/misc_utils.mjs +2 -2
  327. package/esm2022/src/render3/util/stringify_utils.mjs +2 -2
  328. package/esm2022/src/render3/util/view_traversal_utils.mjs +2 -2
  329. package/esm2022/src/render3/util/view_utils.mjs +2 -2
  330. package/esm2022/src/render3/view_engine_compatibility_prebound.mjs +2 -2
  331. package/esm2022/src/render3/view_manipulation.mjs +2 -2
  332. package/esm2022/src/render3/view_ref.mjs +2 -2
  333. package/esm2022/src/sanitization/bypass.mjs +2 -2
  334. package/esm2022/src/sanitization/html_sanitizer.mjs +2 -2
  335. package/esm2022/src/sanitization/iframe_attrs_validation.mjs +2 -2
  336. package/esm2022/src/sanitization/inert_body.mjs +2 -2
  337. package/esm2022/src/sanitization/sanitization.mjs +2 -2
  338. package/esm2022/src/sanitization/sanitizer.mjs +2 -2
  339. package/esm2022/src/sanitization/security.mjs +2 -2
  340. package/esm2022/src/sanitization/url_sanitizer.mjs +2 -2
  341. package/esm2022/src/testability/testability.mjs +2 -2
  342. package/esm2022/src/transfer_state.mjs +2 -2
  343. package/esm2022/src/util/array_utils.mjs +2 -2
  344. package/esm2022/src/util/assert.mjs +2 -2
  345. package/esm2022/src/util/callback_scheduler.mjs +2 -2
  346. package/esm2022/src/util/char_code.mjs +2 -2
  347. package/esm2022/src/util/closure.mjs +2 -2
  348. package/esm2022/src/util/coercion.mjs +2 -2
  349. package/esm2022/src/util/comparison.mjs +2 -2
  350. package/esm2022/src/util/decorators.mjs +2 -2
  351. package/esm2022/src/util/dom.mjs +2 -2
  352. package/esm2022/src/util/empty.mjs +2 -2
  353. package/esm2022/src/util/errors.mjs +2 -2
  354. package/esm2022/src/util/global.mjs +2 -2
  355. package/esm2022/src/util/is_dev_mode.mjs +2 -2
  356. package/esm2022/src/util/iterable.mjs +2 -2
  357. package/esm2022/src/util/lang.mjs +2 -2
  358. package/esm2022/src/util/ng_dev_mode.mjs +2 -2
  359. package/esm2022/src/util/ng_i18n_closure_mode.mjs +2 -2
  360. package/esm2022/src/util/ng_jit_mode.mjs +2 -2
  361. package/esm2022/src/util/ng_reflect.mjs +2 -2
  362. package/esm2022/src/util/noop.mjs +2 -2
  363. package/esm2022/src/util/performance.mjs +2 -2
  364. package/esm2022/src/util/property.mjs +2 -2
  365. package/esm2022/src/util/security/trusted_type_defs.mjs +2 -2
  366. package/esm2022/src/util/security/trusted_types.mjs +2 -2
  367. package/esm2022/src/util/security/trusted_types_bypass.mjs +2 -2
  368. package/esm2022/src/util/stringify.mjs +2 -2
  369. package/esm2022/src/version.mjs +3 -3
  370. package/esm2022/src/view/provider_flags.mjs +2 -2
  371. package/esm2022/src/zone/async-stack-tagging.mjs +2 -2
  372. package/esm2022/src/zone/ng_zone.mjs +2 -2
  373. package/esm2022/src/zone.mjs +2 -2
  374. package/esm2022/testing/index.mjs +2 -2
  375. package/esm2022/testing/public_api.mjs +2 -2
  376. package/esm2022/testing/src/application_error_handler.mjs +5 -5
  377. package/esm2022/testing/src/async.mjs +2 -2
  378. package/esm2022/testing/src/component_fixture.mjs +2 -2
  379. package/esm2022/testing/src/defer.mjs +2 -2
  380. package/esm2022/testing/src/fake_async.mjs +2 -2
  381. package/esm2022/testing/src/logger.mjs +5 -5
  382. package/esm2022/testing/src/metadata_override.mjs +2 -2
  383. package/esm2022/testing/src/metadata_overrider.mjs +2 -2
  384. package/esm2022/testing/src/resolvers.mjs +2 -2
  385. package/esm2022/testing/src/styling.mjs +2 -2
  386. package/esm2022/testing/src/test_bed.mjs +2 -2
  387. package/esm2022/testing/src/test_bed_common.mjs +2 -2
  388. package/esm2022/testing/src/test_bed_compiler.mjs +2 -2
  389. package/esm2022/testing/src/test_hooks.mjs +2 -2
  390. package/esm2022/testing/src/testing.mjs +2 -2
  391. package/esm2022/testing/src/testing_internal.mjs +2 -2
  392. package/fesm2022/core.mjs +15 -10
  393. package/fesm2022/core.mjs.map +1 -1
  394. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  395. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  396. package/fesm2022/primitives/signals.mjs +1 -1
  397. package/fesm2022/primitives/signals.mjs.map +1 -1
  398. package/fesm2022/rxjs-interop.mjs +2 -2
  399. package/fesm2022/rxjs-interop.mjs.map +1 -1
  400. package/fesm2022/testing.mjs +4 -4
  401. package/fesm2022/testing.mjs.map +1 -1
  402. package/index.d.ts +5 -4
  403. package/package.json +1 -1
  404. package/primitives/event-dispatch/index.d.ts +1 -1
  405. package/primitives/signals/index.d.ts +1 -1
  406. package/rxjs-interop/index.d.ts +1 -1
  407. package/schematics/migrations/after-render-phase/bundle.js +270 -270
  408. package/schematics/migrations/http-providers/bundle.js +273 -273
  409. package/schematics/migrations/invalid-two-way-bindings/bundle.js +164 -164
  410. package/schematics/ng-generate/control-flow-migration/bundle.js +273 -273
  411. package/schematics/ng-generate/inject-migration/bundle.js +276 -276
  412. package/schematics/ng-generate/route-lazy-loading/bundle.js +270 -284
  413. package/schematics/ng-generate/standalone-migration/bundle.js +474 -462
  414. package/testing/index.d.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import '../util/ng_jit_mode';
9
9
  import { setActiveConsumer, setThrowInvalidWriteToSignalError, } from '@angular/core/primitives/signals';
@@ -626,4 +626,4 @@ export function detectChangesInViewIfRequired(lView, notifyErrorHandler, isFirst
626
626
  1 /* ChangeDetectionMode.Targeted */;
627
627
  detectChangesInternal(lView, notifyErrorHandler, mode);
628
628
  }
629
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb25fcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQ0FBaUMsR0FDbEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQWEsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDcEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxtQkFBbUIsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RSxPQUFPLEVBQWUsa0NBQWtDLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFtQixNQUFNLFdBQVcsQ0FBQztBQUU3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFeEQsT0FBTyxF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bGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAnLi4vdXRpbC9uZ19qaXRfbW9kZSc7XG5cbmltcG9ydCB7XG4gIHNldEFjdGl2ZUNvbnN1bWVyLFxuICBzZXRUaHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcHJpbWl0aXZlcy9zaWduYWxzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3QsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1pPTkVMRVNTX0VOQUJMRUR9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rpb24vc2NoZWR1bGluZy96b25lbGVzc19zY2hlZHVsaW5nJztcbmltcG9ydCB7Q29uc29sZX0gZnJvbSAnLi4vY29uc29sZSc7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnLi4vZGknO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICcuLi9kaS9pbmplY3RhYmxlJztcbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJy4uL2RpL2luamVjdGlvbl90b2tlbic7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICcuLi9kaS9pbmplY3Rvcic7XG5pbXBvcnQge0Vudmlyb25tZW50SW5qZWN0b3IsIHR5cGUgUjNJbmplY3Rvcn0gZnJvbSAnLi4vZGkvcjNfaW5qZWN0b3InO1xuaW1wb3J0IHtFcnJvckhhbmRsZXIsIElOVEVSTkFMX0FQUExJQ0FUSU9OX0VSUk9SX0hBTkRMRVJ9IGZyb20gJy4uL2Vycm9yX2hhbmRsZXInO1xuaW1wb3J0IHtmb3JtYXRSdW50aW1lRXJyb3IsIFJ1bnRpbWVFcnJvciwgUnVudGltZUVycm9yQ29kZX0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3R5cGUnO1xuaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5LCBDb21wb25lbnRSZWZ9IGZyb20gJy4uL2xpbmtlci9jb21wb25lbnRfZmFjdG9yeSc7XG5pbXBvcnQge0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn0gZnJvbSAnLi4vbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5X3Jlc29sdmVyJztcbmltcG9ydCB7TmdNb2R1bGVSZWZ9IGZyb20gJy4uL2xpbmtlci9uZ19tb2R1bGVfZmFjdG9yeSc7XG5pbXBvcnQge1ZpZXdSZWZ9IGZyb20gJy4uL2xpbmtlci92aWV3X3JlZic7XG5pbXBvcnQge1BlbmRpbmdUYXNrc30gZnJvbSAnLi4vcGVuZGluZ190YXNrcyc7XG5pbXBvcnQge1JlbmRlcmVyRmFjdG9yeTJ9IGZyb20gJy4uL3JlbmRlci9hcGknO1xuaW1wb3J0IHtBZnRlclJlbmRlck1hbmFnZXJ9IGZyb20gJy4uL3JlbmRlcjMvYWZ0ZXJfcmVuZGVyL21hbmFnZXInO1xuaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5IGFzIFIzQ29tcG9uZW50RmFjdG9yeX0gZnJvbSAnLi4vcmVuZGVyMy9jb21wb25lbnRfcmVmJztcbmltcG9ydCB7aXNTdGFuZGFsb25lfSBmcm9tICcuLi9yZW5kZXIzL2RlZmluaXRpb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25Nb2RlLCBkZXRlY3RDaGFuZ2VzSW50ZXJuYWx9IGZyb20gJy4uL3JlbmRlcjMvaW5zdHJ1Y3Rpb25zL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtGTEFHUywgTFZpZXcsIExWaWV3RmxhZ3N9IGZyb20gJy4uL3JlbmRlcjMvaW50ZXJmYWNlcy92aWV3JztcbmltcG9ydCB7cHVibGlzaERlZmF1bHRHbG9iYWxVdGlscyBhcyBfcHVibGlzaERlZmF1bHRHbG9iYWxVdGlsc30gZnJvbSAnLi4vcmVuZGVyMy91dGlsL2dsb2JhbF91dGlscyc7XG5pbXBvcnQge3JlbW92ZUxWaWV3T25EZXN0cm95LCByZXF1aXJlc1JlZnJlc2hPclRyYXZlcnNhbH0gZnJvbSAnLi4vcmVuZGVyMy91dGlsL3ZpZXdfdXRpbHMnO1xuaW1wb3J0IHtWaWV3UmVmIGFzIEludGVybmFsVmlld1JlZn0gZnJvbSAnLi4vcmVuZGVyMy92aWV3X3JlZic7XG5pbXBvcnQge1RFU1RBQklMSVRZfSBmcm9tICcuLi90ZXN0YWJpbGl0eS90ZXN0YWJpbGl0eSc7XG5pbXBvcnQge2lzUHJvbWlzZX0gZnJvbSAnLi4vdXRpbC9sYW5nJztcbmltcG9ydCB7Tmdab25lfSBmcm9tICcuLi96b25lL25nX3pvbmUnO1xuXG5pbXBvcnQge0FwcGxpY2F0aW9uSW5pdFN0YXR1c30gZnJvbSAnLi9hcHBsaWNhdGlvbl9pbml0JztcblxuLyoqXG4gKiBBIERJIHRva2VuIHRoYXQgcHJvdmlkZXMgYSBzZXQgb2YgY2FsbGJhY2tzIHRvXG4gKiBiZSBjYWxsZWQgZm9yIGV2ZXJ5IGNvbXBvbmVudCB0aGF0IGlzIGJvb3RzdHJhcHBlZC5cbiAqXG4gKiBFYWNoIGNhbGxiYWNrIG11c3QgdGFrZSBhIGBDb21wb25lbnRSZWZgIGluc3RhbmNlIGFuZCByZXR1cm4gbm90aGluZy5cbiAqXG4gKiBgKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmKSA9PiB2b2lkYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9CT09UU1RSQVBfTElTVEVORVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIFJlYWRvbmx5QXJyYXk8KGNvbXBSZWY6IENvbXBvbmVudFJlZjxhbnk+KSA9PiB2b2lkPlxuPihuZ0Rldk1vZGUgPyAnYXBwQm9vdHN0cmFwTGlzdGVuZXInIDogJycpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaERlZmF1bHRHbG9iYWxVdGlscygpIHtcbiAgbmdEZXZNb2RlICYmIF9wdWJsaXNoRGVmYXVsdEdsb2JhbFV0aWxzKCk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgZXJyb3IgZm9yIGFuIGludmFsaWQgd3JpdGUgdG8gYSBzaWduYWwgdG8gYmUgYW4gQW5ndWxhciBgUnVudGltZUVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hTaWduYWxDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICBzZXRUaHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3IoKCkgPT4ge1xuICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICBSdW50aW1lRXJyb3JDb2RlLlNJR05BTF9XUklURV9GUk9NX0lMTEVHQUxfQ09OVEVYVCxcbiAgICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICAnV3JpdGluZyB0byBzaWduYWxzIGlzIG5vdCBhbGxvd2VkIGluIGEgYGNvbXB1dGVkYCBvciBhbiBgZWZmZWN0YCBieSBkZWZhdWx0LiAnICtcbiAgICAgICAgICAnVXNlIGBhbGxvd1NpZ25hbFdyaXRlc2AgaW4gdGhlIGBDcmVhdGVFZmZlY3RPcHRpb25zYCB0byBlbmFibGUgdGhpcyBpbnNpZGUgZWZmZWN0cy4nLFxuICAgICk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb3VuZFRvTW9kdWxlPEM+KGNmOiBDb21wb25lbnRGYWN0b3J5PEM+KTogYm9vbGVhbiB7XG4gIHJldHVybiAoY2YgYXMgUjNDb21wb25lbnRGYWN0b3J5PEM+KS5pc0JvdW5kVG9Nb2R1bGU7XG59XG5cbi8qKlxuICogQSB0b2tlbiBmb3IgdGhpcmQtcGFydHkgY29tcG9uZW50cyB0aGF0IGNhbiByZWdpc3RlciB0aGVtc2VsdmVzIHdpdGggTmdQcm9iZS5cbiAqXG4gKiBAZGVwcmVjYXRlZFxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY2xhc3MgTmdQcm9iZVRva2VuIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgdG9rZW46IGFueSxcbiAgKSB7fVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byB0aGUgYm9vdHN0cmFwcGluZyBwcm9jZXNzLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgc3BlY2lmeSB3aGljaCBgTmdab25lYCBzaG91bGQgYmUgdXNlZCB3aGVuIG5vdCBjb25maWd1cmVkIGluIHRoZSBwcm92aWRlcnMuXG4gICAqXG4gICAqIC0gUHJvdmlkZSB5b3VyIG93biBgTmdab25lYCBpbnN0YW5jZS5cbiAgICogLSBgem9uZS5qc2AgLSBVc2UgZGVmYXVsdCBgTmdab25lYCB3aGljaCByZXF1aXJlcyBgWm9uZS5qc2AuXG4gICAqIC0gYG5vb3BgIC0gVXNlIGBOb29wTmdab25lYCB3aGljaCBkb2VzIG5vdGhpbmcuXG4gICAqL1xuICBuZ1pvbmU/OiBOZ1pvbmUgfCAnem9uZS5qcycgfCAnbm9vcCc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgc3BlY2lmeSBjb2FsZXNjaW5nIGV2ZW50IGNoYW5nZSBkZXRlY3Rpb25zIG9yIG5vdC5cbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBjYXNlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPGRpdiAoY2xpY2spPVwiZG9Tb21ldGhpbmcoKVwiPlxuICAgKiAgIDxidXR0b24gKGNsaWNrKT1cImRvU29tZXRoaW5nRWxzZSgpXCI+PC9idXR0b24+XG4gICAqIDwvZGl2PlxuICAgKiBgYGBcbiAgICpcbiAgICogV2hlbiBidXR0b24gaXMgY2xpY2tlZCwgYmVjYXVzZSBvZiB0aGUgZXZlbnQgYnViYmxpbmcsIGJvdGhcbiAgICogZXZlbnQgaGFuZGxlcnMgd2lsbCBiZSBjYWxsZWQgYW5kIDIgY2hhbmdlIGRldGVjdGlvbnMgd2lsbCBiZVxuICAgKiB0cmlnZ2VyZWQuIFdlIGNhbiBjb2FsZXNjZSBzdWNoIGtpbmQgb2YgZXZlbnRzIHRvIG9ubHkgdHJpZ2dlclxuICAgKiBjaGFuZ2UgZGV0ZWN0aW9uIG9ubHkgb25jZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyBvcHRpb24gd2lsbCBiZSBmYWxzZS4gU28gdGhlIGV2ZW50cyB3aWxsIG5vdCBiZVxuICAgKiBjb2FsZXNjZWQgYW5kIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIG11bHRpcGxlIHRpbWVzLlxuICAgKiBBbmQgaWYgdGhpcyBvcHRpb24gYmUgc2V0IHRvIHRydWUsIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHdpbGwgYmVcbiAgICogdHJpZ2dlcmVkIGFzeW5jIGJ5IHNjaGVkdWxpbmcgYSBhbmltYXRpb24gZnJhbWUuIFNvIGluIHRoZSBjYXNlIGFib3ZlLFxuICAgKiB0aGUgY2hhbmdlIGRldGVjdGlvbiB3aWxsIG9ubHkgYmUgdHJpZ2dlcmVkIG9uY2UuXG4gICAqL1xuICBuZ1pvbmVFdmVudENvYWxlc2Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IHNwZWNpZnkgaWYgYE5nWm9uZSNydW4oKWAgbWV0aG9kIGludm9jYXRpb25zIHNob3VsZCBiZSBjb2FsZXNjZWRcbiAgICogaW50byBhIHNpbmdsZSBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UuXG4gICAqIGBgYFxuICAgKiBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpICsrKSB7XG4gICAqICAgbmdab25lLnJ1bigoKSA9PiB7XG4gICAqICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICogICB9KTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBjYXNlIHRyaWdnZXJzIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIG11bHRpcGxlIHRpbWVzLlxuICAgKiBXaXRoIG5nWm9uZVJ1bkNvYWxlc2Npbmcgb3B0aW9ucywgYWxsIGNoYW5nZSBkZXRlY3Rpb25zIGluIGFuIGV2ZW50IGxvb3AgdHJpZ2dlciBvbmx5IG9uY2UuXG4gICAqIEluIGFkZGl0aW9uLCB0aGUgY2hhbmdlIGRldGVjdGlvbiBleGVjdXRlcyBpbiByZXF1ZXN0QW5pbWF0aW9uLlxuICAgKlxuICAgKi9cbiAgbmdab25lUnVuQ29hbGVzY2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZmFsc2UsIGNoYW5nZSBkZXRlY3Rpb24gaXMgc2NoZWR1bGVkIHdoZW4gQW5ndWxhciByZWNlaXZlc1xuICAgKiBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB0ZW1wbGF0ZXMgbmVlZCB0byBiZSByZWZyZXNoZWQuIFRoaXMgaW5jbHVkZXM6XG4gICAqXG4gICAqIC0gY2FsbGluZyBgQ2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrYFxuICAgKiAtIGNhbGxpbmcgYENvbXBvbmVudFJlZi5zZXRJbnB1dGBcbiAgICogLSB1cGRhdGluZyBhIHNpZ25hbCB0aGF0IGlzIHJlYWQgaW4gYSB0ZW1wbGF0ZVxuICAgKiAtIGF0dGFjaGluZyBhIHZpZXcgdGhhdCBpcyBtYXJrZWQgZGlydHlcbiAgICogLSByZW1vdmluZyBhIHZpZXdcbiAgICogLSByZWdpc3RlcmluZyBhIHJlbmRlciBob29rICh0ZW1wbGF0ZXMgYXJlIG9ubHkgcmVmcmVzaGVkIGlmIHJlbmRlciBob29rcyBkbyBvbmUgb2YgdGhlIGFib3ZlKVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG9wdGlvbiB3YXMgaW50cm9kdWNlZCBvdXQgb2YgY2F1dGlvbiBhcyBhIHdheSBmb3IgZGV2ZWxvcGVycyB0byBvcHQgb3V0IG9mIHRoZVxuICAgKiAgICBuZXcgYmVoYXZpb3IgaW4gdjE4IHdoaWNoIHNjaGVkdWxlIGNoYW5nZSBkZXRlY3Rpb24gZm9yIHRoZSBhYm92ZSBldmVudHMgd2hlbiB0aGV5IG9jY3VyXG4gICAqICAgIG91dHNpZGUgdGhlIFpvbmUuIEFmdGVyIG1vbml0b3JpbmcgdGhlIHJlc3VsdHMgcG9zdC1yZWxlYXNlLCB3ZSBoYXZlIGRldGVybWluZWQgdGhhdCB0aGlzXG4gICAqICAgIGZlYXR1cmUgaXMgd29ya2luZyBhcyBkZXNpcmVkIGFuZCBkbyBub3QgYmVsaWV2ZSBpdCBzaG91bGQgZXZlciBiZSBkaXNhYmxlZCBieSBzZXR0aW5nXG4gICAqICAgIHRoaXMgb3B0aW9uIHRvIGB0cnVlYC5cbiAgICovXG4gIGlnbm9yZUNoYW5nZXNPdXRzaWRlWm9uZT86IGJvb2xlYW47XG59XG5cbi8qKiBNYXhpbXVtIG51bWJlciBvZiB0aW1lcyBBcHBsaWNhdGlvblJlZiB3aWxsIHJlZnJlc2ggYWxsIGF0dGFjaGVkIHZpZXdzIGluIGEgc2luZ2xlIHRpY2suICovXG5jb25zdCBNQVhJTVVNX1JFRlJFU0hfUkVSVU5TID0gMTA7XG5cbmV4cG9ydCBmdW5jdGlvbiBfY2FsbEFuZFJlcG9ydFRvRXJyb3JIYW5kbGVyKFxuICBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlcixcbiAgbmdab25lOiBOZ1pvbmUsXG4gIGNhbGxiYWNrOiAoKSA9PiBhbnksXG4pOiBhbnkge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKCk7XG4gICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNhdGNoKChlOiBhbnkpID0+IHtcbiAgICAgICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlKSk7XG4gICAgICAgIC8vIHJldGhyb3cgYXMgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIG1pZ2h0IG5vdCBkbyBpdFxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBlcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZSkpO1xuICAgIC8vIHJldGhyb3cgYXMgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIG1pZ2h0IG5vdCBkbyBpdFxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbnNSZWR1Y2VyPFQgZXh0ZW5kcyBPYmplY3Q+KGRzdDogVCwgb2JqczogVCB8IFRbXSk6IFQge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmpzKSkge1xuICAgIHJldHVybiBvYmpzLnJlZHVjZShvcHRpb25zUmVkdWNlciwgZHN0KTtcbiAgfVxuICByZXR1cm4gey4uLmRzdCwgLi4ub2Jqc307XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGEgcGFnZS5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICoge0BhIGlzLXN0YWJsZS1leGFtcGxlc31cbiAqICMjIyBpc1N0YWJsZSBleGFtcGxlcyBhbmQgY2F2ZWF0c1xuICpcbiAqIE5vdGUgdHdvIGltcG9ydGFudCBwb2ludHMgYWJvdXQgYGlzU3RhYmxlYCwgZGVtb25zdHJhdGVkIGluIHRoZSBleGFtcGxlcyBiZWxvdzpcbiAqIC0gdGhlIGFwcGxpY2F0aW9uIHdpbGwgbmV2ZXIgYmUgc3RhYmxlIGlmIHlvdSBzdGFydCBhbnkga2luZFxuICogb2YgcmVjdXJyZW50IGFzeW5jaHJvbm91cyB0YXNrIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHN0YXJ0c1xuICogKGZvciBleGFtcGxlIGZvciBhIHBvbGxpbmcgcHJvY2Vzcywgc3RhcnRlZCB3aXRoIGEgYHNldEludGVydmFsYCwgYSBgc2V0VGltZW91dGBcbiAqIG9yIHVzaW5nIFJ4SlMgb3BlcmF0b3JzIGxpa2UgYGludGVydmFsYCk7XG4gKiAtIHRoZSBgaXNTdGFibGVgIE9ic2VydmFibGUgcnVucyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUuXG4gKlxuICogTGV0J3MgaW1hZ2luZSB0aGF0IHlvdSBzdGFydCBhIHJlY3VycmVudCB0YXNrXG4gKiAoaGVyZSBpbmNyZW1lbnRpbmcgYSBjb3VudGVyLCB1c2luZyBSeEpTIGBpbnRlcnZhbGApLFxuICogYW5kIGF0IHRoZSBzYW1lIHRpbWUgc3Vic2NyaWJlIHRvIGBpc1N0YWJsZWAuXG4gKlxuICogYGBgXG4gKiBjb25zdHJ1Y3RvcihhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gKiAgIGFwcFJlZi5pc1N0YWJsZS5waXBlKFxuICogICAgICBmaWx0ZXIoc3RhYmxlID0+IHN0YWJsZSlcbiAqICAgKS5zdWJzY3JpYmUoKCkgPT4gY29uc29sZS5sb2coJ0FwcCBpcyBzdGFibGUgbm93Jyk7XG4gKiAgIGludGVydmFsKDEwMDApLnN1YnNjcmliZShjb3VudGVyID0+IGNvbnNvbGUubG9nKGNvdW50ZXIpKTtcbiAqIH1cbiAqIGBgYFxuICogSW4gdGhpcyBleGFtcGxlLCBgaXNTdGFibGVgIHdpbGwgbmV2ZXIgZW1pdCBgdHJ1ZWAsXG4gKiBhbmQgdGhlIHRyYWNlIFwiQXBwIGlzIHN0YWJsZSBub3dcIiB3aWxsIG5ldmVyIGdldCBsb2dnZWQuXG4gKlxuICogSWYgeW91IHdhbnQgdG8gZXhlY3V0ZSBzb21ldGhpbmcgd2hlbiB0aGUgYXBwIGlzIHN0YWJsZSxcbiAqIHlvdSBoYXZlIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBiZSBzdGFibGVcbiAqIGJlZm9yZSBzdGFydGluZyB5b3VyIHBvbGxpbmcgcHJvY2Vzcy5cbiAqXG4gKiBgYGBcbiAqIGNvbnN0cnVjdG9yKGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAqICAgYXBwUmVmLmlzU3RhYmxlLnBpcGUoXG4gKiAgICAgZmlyc3Qoc3RhYmxlID0+IHN0YWJsZSksXG4gKiAgICAgdGFwKHN0YWJsZSA9PiBjb25zb2xlLmxvZygnQXBwIGlzIHN0YWJsZSBub3cnKSksXG4gKiAgICAgc3dpdGNoTWFwKCgpID0+IGludGVydmFsKDEwMDApKVxuICogICApLnN1YnNjcmliZShjb3VudGVyID0+IGNvbnNvbGUubG9nKGNvdW50ZXIpKTtcbiAqIH1cbiAqIGBgYFxuICogSW4gdGhpcyBleGFtcGxlLCB0aGUgdHJhY2UgXCJBcHAgaXMgc3RhYmxlIG5vd1wiIHdpbGwgYmUgbG9nZ2VkXG4gKiBhbmQgdGhlbiB0aGUgY291bnRlciBzdGFydHMgaW5jcmVtZW50aW5nIGV2ZXJ5IHNlY29uZC5cbiAqXG4gKiBOb3RlIGFsc28gdGhhdCB0aGlzIE9ic2VydmFibGUgcnVucyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUsXG4gKiB3aGljaCBtZWFucyB0aGF0IHRoZSBjb2RlIGluIHRoZSBzdWJzY3JpcHRpb25cbiAqIHRvIHRoaXMgT2JzZXJ2YWJsZSB3aWxsIG5vdCB0cmlnZ2VyIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uLlxuICpcbiAqIExldCdzIGltYWdpbmUgdGhhdCBpbnN0ZWFkIG9mIGxvZ2dpbmcgdGhlIGNvdW50ZXIgdmFsdWUsXG4gKiB5b3UgdXBkYXRlIGEgZmllbGQgb2YgeW91ciBjb21wb25lbnRcbiAqIGFuZCBkaXNwbGF5IGl0IGluIGl0cyB0ZW1wbGF0ZS5cbiAqXG4gKiBgYGBcbiAqIGNvbnN0cnVjdG9yKGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAqICAgYXBwUmVmLmlzU3RhYmxlLnBpcGUoXG4gKiAgICAgZmlyc3Qoc3RhYmxlID0+IHN0YWJsZSksXG4gKiAgICAgc3dpdGNoTWFwKCgpID0+IGludGVydmFsKDEwMDApKVxuICogICApLnN1YnNjcmliZShjb3VudGVyID0+IHRoaXMudmFsdWUgPSBjb3VudGVyKTtcbiAqIH1cbiAqIGBgYFxuICogQXMgdGhlIGBpc1N0YWJsZWAgT2JzZXJ2YWJsZSBydW5zIG91dHNpZGUgdGhlIHpvbmUsXG4gKiB0aGUgYHZhbHVlYCBmaWVsZCB3aWxsIGJlIHVwZGF0ZWQgcHJvcGVybHksXG4gKiBidXQgdGhlIHRlbXBsYXRlIHdpbGwgbm90IGJlIHJlZnJlc2hlZCFcbiAqXG4gKiBZb3UnbGwgaGF2ZSB0byBtYW51YWxseSB0cmlnZ2VyIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRvIHVwZGF0ZSB0aGUgdGVtcGxhdGUuXG4gKlxuICogYGBgXG4gKiBjb25zdHJ1Y3RvcihhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAqICAgYXBwUmVmLmlzU3RhYmxlLnBpcGUoXG4gKiAgICAgZmlyc3Qoc3RhYmxlID0+IHN0YWJsZSksXG4gKiAgICAgc3dpdGNoTWFwKCgpID0+IGludGVydmFsKDEwMDApKVxuICogICApLnN1YnNjcmliZShjb3VudGVyID0+IHtcbiAqICAgICB0aGlzLnZhbHVlID0gY291bnRlcjtcbiAqICAgICBjZC5kZXRlY3RDaGFuZ2VzKCk7XG4gKiAgIH0pO1xuICogfVxuICogYGBgXG4gKlxuICogT3IgbWFrZSB0aGUgc3Vic2NyaXB0aW9uIGNhbGxiYWNrIHJ1biBpbnNpZGUgdGhlIHpvbmUuXG4gKlxuICogYGBgXG4gKiBjb25zdHJ1Y3RvcihhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCB6b25lOiBOZ1pvbmUpIHtcbiAqICAgYXBwUmVmLmlzU3RhYmxlLnBpcGUoXG4gKiAgICAgZmlyc3Qoc3RhYmxlID0+IHN0YWJsZSksXG4gKiAgICAgc3dpdGNoTWFwKCgpID0+IGludGVydmFsKDEwMDApKVxuICogICApLnN1YnNjcmliZShjb3VudGVyID0+IHpvbmUucnVuKCgpID0+IHRoaXMudmFsdWUgPSBjb3VudGVyKSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uUmVmIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9ib290c3RyYXBMaXN0ZW5lcnM6ICgoY29tcFJlZjogQ29tcG9uZW50UmVmPGFueT4pID0+IHZvaWQpW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcnVubmluZ1RpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3lMaXN0ZW5lcnM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ZpZXdzOiBJbnRlcm5hbFZpZXdSZWY8dW5rbm93bj5bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVybmFsRXJyb3JIYW5kbGVyID0gaW5qZWN0KElOVEVSTkFMX0FQUExJQ0FUSU9OX0VSUk9SX0hBTkRMRVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFmdGVyUmVuZGVyTWFuYWdlciA9IGluamVjdChBZnRlclJlbmRlck1hbmFnZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHpvbmVsZXNzRW5hYmxlZCA9IGluamVjdChaT05FTEVTU19FTkFCTEVEKTtcblxuICAvKipcbiAgICogQ3VycmVudCBkaXJ0eSBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gYWNyb3NzIGEgbnVtYmVyIG9mIGRpbWVuc2lvbnMgKHZpZXdzLCBhZnRlclJlbmRlciBob29rcyxcbiAgICogZXRjKS5cbiAgICpcbiAgICogQSBmbGFnIHNldCBoZXJlIG1lYW5zIHRoYXQgYHRpY2soKWAgd2lsbCBhdHRlbXB0IHRvIHJlc29sdmUgdGhlIGRpcnRpbmVzcyB3aGVuIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRpcnR5RmxhZ3MgPSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuTm9uZTtcblxuICAvKipcbiAgICogTGlrZSBgZGlydHlGbGFnc2AgYnV0IGRvbid0IGNhdXNlIGB0aWNrKClgIHRvIGxvb3AuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGVmZXJyZWREaXJ0eUZsYWdzID0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLk5vbmU7XG5cbiAgLy8gTmVlZGVkIGZvciBDb21wb25lbnRGaXh0dXJlIHRlbXBvcmFyaWx5IGR1cmluZyBtaWdyYXRpb24gb2YgYXV0b0RldGVjdCBiZWhhdmlvclxuICAvLyBFdmVudHVhbGx5IHRoZSBob3N0VmlldyBvZiB0aGUgZml4dHVyZSBzaG91bGQganVzdCBhdHRhY2ggdG8gQXBwbGljYXRpb25SZWYuXG4gIHByaXZhdGUgZXh0ZXJuYWxUZXN0Vmlld3M6IFNldDxJbnRlcm5hbFZpZXdSZWY8dW5rbm93bj4+ID0gbmV3IFNldCgpO1xuICBwcml2YXRlIGJlZm9yZVJlbmRlciA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWZ0ZXJUaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBnZXQgYWxsVmlld3MoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmV4dGVybmFsVGVzdFZpZXdzLmtleXMoKSwgLi4udGhpcy5fdmlld3NdO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgaW5zdGFuY2Ugd2FzIGRlc3Ryb3llZC5cbiAgICovXG4gIGdldCBkZXN0cm95ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3llZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGNvbXBvbmVudCB0eXBlcyByZWdpc3RlcmVkIHRvIHRoaXMgYXBwbGljYXRpb24uXG4gICAqIFRoaXMgbGlzdCBpcyBwb3B1bGF0ZWQgZXZlbiBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudFR5cGVzOiBUeXBlPGFueT5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGNvbXBvbmVudHMgcmVnaXN0ZXJlZCB0byB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudHM6IENvbXBvbmVudFJlZjxhbnk+W10gPSBbXTtcblxuICAvKipcbiAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgaW5kaWNhdGVzIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHN0YWJsZSBvciB1bnN0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1N0YWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGluamVjdChQZW5kaW5nVGFza3MpLmhhc1BlbmRpbmdUYXNrcy5waXBlKFxuICAgIG1hcCgocGVuZGluZykgPT4gIXBlbmRpbmcpLFxuICApO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBiZWNvbWVzIHN0YWJsZVxuICAgKi9cbiAgd2hlblN0YWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24gPSB0aGlzLmlzU3RhYmxlLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChzdGFibGUpID0+IHtcbiAgICAgICAgICBpZiAoc3RhYmxlKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAvKipcbiAgICogVGhlIGBFbnZpcm9ubWVudEluamVjdG9yYCB1c2VkIHRvIGNyZWF0ZSB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgZ2V0IGluamVjdG9yKCk6IEVudmlyb25tZW50SW5qZWN0b3Ige1xuICAgIHJldHVybiB0aGlzLl9pbmplY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCb290c3RyYXAgYSBjb21wb25lbnQgb250byB0aGUgZWxlbWVudCBpZGVudGlmaWVkIGJ5IGl0cyBzZWxlY3RvciBvciwgb3B0aW9uYWxseSwgdG8gYVxuICAgKiBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICpcbiAgICogQHVzYWdlTm90ZXNcbiAgICogIyMjIEJvb3RzdHJhcCBwcm9jZXNzXG4gICAqXG4gICAqIFdoZW4gYm9vdHN0cmFwcGluZyBhIGNvbXBvbmVudCwgQW5ndWxhciBtb3VudHMgaXQgb250byBhIHRhcmdldCBET00gZWxlbWVudFxuICAgKiBhbmQga2lja3Mgb2ZmIGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uLiBUaGUgdGFyZ2V0IERPTSBlbGVtZW50IGNhbiBiZVxuICAgKiBwcm92aWRlZCB1c2luZyB0aGUgYHJvb3RTZWxlY3Rvck9yTm9kZWAgYXJndW1lbnQuXG4gICAqXG4gICAqIElmIHRoZSB0YXJnZXQgRE9NIGVsZW1lbnQgaXMgbm90IHByb3ZpZGVkLCBBbmd1bGFyIHRyaWVzIHRvIGZpbmQgb25lIG9uIGEgcGFnZVxuICAgKiB1c2luZyB0aGUgYHNlbGVjdG9yYCBvZiB0aGUgY29tcG9uZW50IHRoYXQgaXMgYmVpbmcgYm9vdHN0cmFwcGVkXG4gICAqIChmaXJzdCBtYXRjaGVkIGVsZW1lbnQgaXMgdXNlZCkuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIEdlbmVyYWxseSwgd2UgZGVmaW5lIHRoZSBjb21wb25lbnQgdG8gYm9vdHN0cmFwIGluIHRoZSBgYm9vdHN0cmFwYCBhcnJheSBvZiBgTmdNb2R1bGVgLFxuICAgKiBidXQgaXQgcmVxdWlyZXMgdXMgdG8ga25vdyB0aGUgY29tcG9uZW50IHdoaWxlIHdyaXRpbmcgdGhlIGFwcGxpY2F0aW9uIGNvZGUuXG4gICAqXG4gICAqIEltYWdpbmUgYSBzaXR1YXRpb24gd2hlcmUgd2UgaGF2ZSB0byB3YWl0IGZvciBhbiBBUEkgY2FsbCB0byBkZWNpZGUgYWJvdXQgdGhlIGNvbXBvbmVudCB0b1xuICAgKiBib290c3RyYXAuIFdlIGNhbiB1c2UgdGhlIGBuZ0RvQm9vdHN0cmFwYCBob29rIG9mIHRoZSBgTmdNb2R1bGVgIGFuZCBjYWxsIHRoaXMgbWV0aG9kIHRvXG4gICAqIGR5bmFtaWNhbGx5IGJvb3RzdHJhcCBhIGNvbXBvbmVudC5cbiAgICpcbiAgICoge0BleGFtcGxlIGNvcmUvdHMvcGxhdGZvcm0vcGxhdGZvcm0udHMgcmVnaW9uPSdjb21wb25lbnRTZWxlY3Rvcid9XG4gICAqXG4gICAqIE9wdGlvbmFsbHksIGEgY29tcG9uZW50IGNhbiBiZSBtb3VudGVkIG9udG8gYSBET00gZWxlbWVudCB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZVxuICAgKiBzZWxlY3RvciBvZiB0aGUgYm9vdHN0cmFwcGVkIGNvbXBvbmVudC5cbiAgICpcbiAgICogSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB3ZSBhcmUgcHJvdmlkaW5nIGEgQ1NTIHNlbGVjdG9yIHRvIG1hdGNoIHRoZSB0YXJnZXQgZWxlbWVudC5cbiAgICpcbiAgICoge0BleGFtcGxlIGNvcmUvdHMvcGxhdGZvcm0vcGxhdGZvcm0udHMgcmVnaW9uPSdjc3NTZWxlY3Rvcid9XG4gICAqXG4gICAqIFdoaWxlIGluIHRoaXMgZXhhbXBsZSwgd2UgYXJlIHByb3ZpZGluZyByZWZlcmVuY2UgdG8gYSBET00gbm9kZS5cbiAgICpcbiAgICoge0BleGFtcGxlIGNvcmUvdHMvcGxhdGZvcm0vcGxhdGZvcm0udHMgcmVnaW9uPSdkb21Ob2RlJ31cbiAgICovXG4gIGJvb3RzdHJhcDxDPihjb21wb25lbnQ6IFR5cGU8Qz4sIHJvb3RTZWxlY3Rvck9yTm9kZT86IHN0cmluZyB8IGFueSk6IENvbXBvbmVudFJlZjxDPjtcblxuICAvKipcbiAgICogQm9vdHN0cmFwIGEgY29tcG9uZW50IG9udG8gdGhlIGVsZW1lbnQgaWRlbnRpZmllZCBieSBpdHMgc2VsZWN0b3Igb3IsIG9wdGlvbmFsbHksIHRvIGFcbiAgICogc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBCb290c3RyYXAgcHJvY2Vzc1xuICAgKlxuICAgKiBXaGVuIGJvb3RzdHJhcHBpbmcgYSBjb21wb25lbnQsIEFuZ3VsYXIgbW91bnRzIGl0IG9udG8gYSB0YXJnZXQgRE9NIGVsZW1lbnRcbiAgICogYW5kIGtpY2tzIG9mZiBhdXRvbWF0aWMgY2hhbmdlIGRldGVjdGlvbi4gVGhlIHRhcmdldCBET00gZWxlbWVudCBjYW4gYmVcbiAgICogcHJvdmlkZWQgdXNpbmcgdGhlIGByb290U2VsZWN0b3JPck5vZGVgIGFyZ3VtZW50LlxuICAgKlxuICAgKiBJZiB0aGUgdGFyZ2V0IERPTSBlbGVtZW50IGlzIG5vdCBwcm92aWRlZCwgQW5ndWxhciB0cmllcyB0byBmaW5kIG9uZSBvbiBhIHBhZ2VcbiAgICogdXNpbmcgdGhlIGBzZWxlY3RvcmAgb2YgdGhlIGNvbXBvbmVudCB0aGF0IGlzIGJlaW5nIGJvb3RzdHJhcHBlZFxuICAgKiAoZmlyc3QgbWF0Y2hlZCBlbGVtZW50IGlzIHVzZWQpLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBHZW5lcmFsbHksIHdlIGRlZmluZSB0aGUgY29tcG9uZW50IHRvIGJvb3RzdHJhcCBpbiB0aGUgYGJvb3RzdHJhcGAgYXJyYXkgb2YgYE5nTW9kdWxlYCxcbiAgICogYnV0IGl0IHJlcXVpcmVzIHVzIHRvIGtub3cgdGhlIGNvbXBvbmVudCB3aGlsZSB3cml0aW5nIHRoZSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKlxuICAgKiBJbWFnaW5lIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGhhdmUgdG8gd2FpdCBmb3IgYW4gQVBJIGNhbGwgdG8gZGVjaWRlIGFib3V0IHRoZSBjb21wb25lbnQgdG9cbiAgICogYm9vdHN0cmFwLiBXZSBjYW4gdXNlIHRoZSBgbmdEb0Jvb3RzdHJhcGAgaG9vayBvZiB0aGUgYE5nTW9kdWxlYCBhbmQgY2FsbCB0aGlzIG1ldGhvZCB0b1xuICAgKiBkeW5hbWljYWxseSBib290c3RyYXAgYSBjb21wb25lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY29tcG9uZW50U2VsZWN0b3InfVxuICAgKlxuICAgKiBPcHRpb25hbGx5LCBhIGNvbXBvbmVudCBjYW4gYmUgbW91bnRlZCBvbnRvIGEgRE9NIGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGVcbiAgICogc2VsZWN0b3Igb2YgdGhlIGJvb3RzdHJhcHBlZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2UgYXJlIHByb3ZpZGluZyBhIENTUyBzZWxlY3RvciB0byBtYXRjaCB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY3NzU2VsZWN0b3InfVxuICAgKlxuICAgKiBXaGlsZSBpbiB0aGlzIGV4YW1wbGUsIHdlIGFyZSBwcm92aWRpbmcgcmVmZXJlbmNlIHRvIGEgRE9NIG5vZGUuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nZG9tTm9kZSd9XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBhc3NpbmcgQ29tcG9uZW50IGZhY3RvcmllcyBhcyB0aGUgYEFwcGxpY2F0aW9uLmJvb3RzdHJhcGAgZnVuY3Rpb24gYXJndW1lbnQgaXNcbiAgICogICAgIGRlcHJlY2F0ZWQuIFBhc3MgQ29tcG9uZW50IFR5cGVzIGluc3RlYWQuXG4gICAqL1xuICBib290c3RyYXA8Qz4oXG4gICAgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxDPixcbiAgICByb290U2VsZWN0b3JPck5vZGU/OiBzdHJpbmcgfCBhbnksXG4gICk6IENvbXBvbmVudFJlZjxDPjtcblxuICAvKipcbiAgICogQm9vdHN0cmFwIGEgY29tcG9uZW50IG9udG8gdGhlIGVsZW1lbnQgaWRlbnRpZmllZCBieSBpdHMgc2VsZWN0b3Igb3IsIG9wdGlvbmFsbHksIHRvIGFcbiAgICogc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBCb290c3RyYXAgcHJvY2Vzc1xuICAgKlxuICAgKiBXaGVuIGJvb3RzdHJhcHBpbmcgYSBjb21wb25lbnQsIEFuZ3VsYXIgbW91bnRzIGl0IG9udG8gYSB0YXJnZXQgRE9NIGVsZW1lbnRcbiAgICogYW5kIGtpY2tzIG9mZiBhdXRvbWF0aWMgY2hhbmdlIGRldGVjdGlvbi4gVGhlIHRhcmdldCBET00gZWxlbWVudCBjYW4gYmVcbiAgICogcHJvdmlkZWQgdXNpbmcgdGhlIGByb290U2VsZWN0b3JPck5vZGVgIGFyZ3VtZW50LlxuICAgKlxuICAgKiBJZiB0aGUgdGFyZ2V0IERPTSBlbGVtZW50IGlzIG5vdCBwcm92aWRlZCwgQW5ndWxhciB0cmllcyB0byBmaW5kIG9uZSBvbiBhIHBhZ2VcbiAgICogdXNpbmcgdGhlIGBzZWxlY3RvcmAgb2YgdGhlIGNvbXBvbmVudCB0aGF0IGlzIGJlaW5nIGJvb3RzdHJhcHBlZFxuICAgKiAoZmlyc3QgbWF0Y2hlZCBlbGVtZW50IGlzIHVzZWQpLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBHZW5lcmFsbHksIHdlIGRlZmluZSB0aGUgY29tcG9uZW50IHRvIGJvb3RzdHJhcCBpbiB0aGUgYGJvb3RzdHJhcGAgYXJyYXkgb2YgYE5nTW9kdWxlYCxcbiAgICogYnV0IGl0IHJlcXVpcmVzIHVzIHRvIGtub3cgdGhlIGNvbXBvbmVudCB3aGlsZSB3cml0aW5nIHRoZSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKlxuICAgKiBJbWFnaW5lIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGhhdmUgdG8gd2FpdCBmb3IgYW4gQVBJIGNhbGwgdG8gZGVjaWRlIGFib3V0IHRoZSBjb21wb25lbnQgdG9cbiAgICogYm9vdHN0cmFwLiBXZSBjYW4gdXNlIHRoZSBgbmdEb0Jvb3RzdHJhcGAgaG9vayBvZiB0aGUgYE5nTW9kdWxlYCBhbmQgY2FsbCB0aGlzIG1ldGhvZCB0b1xuICAgKiBkeW5hbWljYWxseSBib290c3RyYXAgYSBjb21wb25lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY29tcG9uZW50U2VsZWN0b3InfVxuICAgKlxuICAgKiBPcHRpb25hbGx5LCBhIGNvbXBvbmVudCBjYW4gYmUgbW91bnRlZCBvbnRvIGEgRE9NIGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGVcbiAgICogc2VsZWN0b3Igb2YgdGhlIGJvb3RzdHJhcHBlZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2UgYXJlIHByb3ZpZGluZyBhIENTUyBzZWxlY3RvciB0byBtYXRjaCB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY3NzU2VsZWN0b3InfVxuICAgKlxuICAgKiBXaGlsZSBpbiB0aGlzIGV4YW1wbGUsIHdlIGFyZSBwcm92aWRpbmcgcmVmZXJlbmNlIHRvIGEgRE9NIG5vZGUuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nZG9tTm9kZSd9XG4gICAqL1xuICBib290c3RyYXA8Qz4oXG4gICAgY29tcG9uZW50T3JGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PEM+IHwgVHlwZTxDPixcbiAgICByb290U2VsZWN0b3JPck5vZGU/OiBzdHJpbmcgfCBhbnksXG4gICk6IENvbXBvbmVudFJlZjxDPiB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy53YXJuSWZEZXN0cm95ZWQoKTtcbiAgICBjb25zdCBpc0NvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRPckZhY3RvcnkgaW5zdGFuY2VvZiBDb21wb25lbnRGYWN0b3J5O1xuICAgIGNvbnN0IGluaXRTdGF0dXMgPSB0aGlzLl9pbmplY3Rvci5nZXQoQXBwbGljYXRpb25Jbml0U3RhdHVzKTtcblxuICAgIGlmICghaW5pdFN0YXR1cy5kb25lKSB7XG4gICAgICBjb25zdCBzdGFuZGFsb25lID0gIWlzQ29tcG9uZW50RmFjdG9yeSAmJiBpc1N0YW5kYWxvbmUoY29tcG9uZW50T3JGYWN0b3J5KTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmXG4gICAgICAgICdDYW5ub3QgYm9vdHN0cmFwIGFzIHRoZXJlIGFyZSBzdGlsbCBhc3luY2hyb25vdXMgaW5pdGlhbGl6ZXJzIHJ1bm5pbmcuJyArXG4gICAgICAgICAgKHN0YW5kYWxvbmVcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogJyBCb290c3RyYXAgY29tcG9uZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0aGUgcm9vdCBtb2R1bGUuJyk7XG4gICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFJ1bnRpbWVFcnJvckNvZGUuQVNZTkNfSU5JVElBTElaRVJTX1NUSUxMX1JVTk5JTkcsIGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8Qz47XG4gICAgaWYgKGlzQ29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudE9yRmFjdG9yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9pbmplY3Rvci5nZXQoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSByZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRPckZhY3RvcnkpITtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKGNvbXBvbmVudEZhY3RvcnkuY29tcG9uZW50VHlwZSk7XG5cbiAgICAvLyBDcmVhdGUgYSBmYWN0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBtb2R1bGUgaWYgaXQncyBub3QgYm91bmQgdG8gc29tZSBvdGhlclxuICAgIGNvbnN0IG5nTW9kdWxlID0gaXNCb3VuZFRvTW9kdWxlKGNvbXBvbmVudEZhY3RvcnkpXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiB0aGlzLl9pbmplY3Rvci5nZXQoTmdNb2R1bGVSZWYpO1xuICAgIGNvbnN0IHNlbGVjdG9yT3JOb2RlID0gcm9vdFNlbGVjdG9yT3JOb2RlIHx8IGNvbXBvbmVudEZhY3Rvcnkuc2VsZWN0b3I7XG4gICAgY29uc3QgY29tcFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKEluamVjdG9yLk5VTEwsIFtdLCBzZWxlY3Rvck9yTm9kZSwgbmdNb2R1bGUpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGVzdGFiaWxpdHkgPSBjb21wUmVmLmluamVjdG9yLmdldChURVNUQUJJTElUWSwgbnVsbCk7XG4gICAgdGVzdGFiaWxpdHk/LnJlZ2lzdGVyQXBwbGljYXRpb24obmF0aXZlRWxlbWVudCk7XG5cbiAgICBjb21wUmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLmRldGFjaFZpZXcoY29tcFJlZi5ob3N0Vmlldyk7XG4gICAgICByZW1vdmUodGhpcy5jb21wb25lbnRzLCBjb21wUmVmKTtcbiAgICAgIHRlc3RhYmlsaXR5Py51bnJlZ2lzdGVyQXBwbGljYXRpb24obmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2FkQ29tcG9uZW50KGNvbXBSZWYpO1xuICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgIGNvbnN0IF9jb25zb2xlID0gdGhpcy5faW5qZWN0b3IuZ2V0KENvbnNvbGUpO1xuICAgICAgX2NvbnNvbGUubG9nKGBBbmd1bGFyIGlzIHJ1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBSZWY7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIHRoaXMgbWV0aG9kIHRvIGV4cGxpY2l0bHkgcHJvY2VzcyBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCBpdHMgc2lkZS1lZmZlY3RzLlxuICAgKlxuICAgKiBJbiBkZXZlbG9wbWVudCBtb2RlLCBgdGljaygpYCBhbHNvIHBlcmZvcm1zIGEgc2Vjb25kIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgdG8gZW5zdXJlIHRoYXQgbm9cbiAgICogZnVydGhlciBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4gSWYgYWRkaXRpb25hbCBjaGFuZ2VzIGFyZSBwaWNrZWQgdXAgZHVyaW5nIHRoaXMgc2Vjb25kIGN5Y2xlLFxuICAgKiBiaW5kaW5ncyBpbiB0aGUgYXBwIGhhdmUgc2lkZS1lZmZlY3RzIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIGluIGEgc2luZ2xlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogcGFzcy5cbiAgICogSW4gdGhpcyBjYXNlLCBBbmd1bGFyIHRocm93cyBhbiBlcnJvciwgc2luY2UgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBjYW4gb25seSBoYXZlIG9uZSBjaGFuZ2VcbiAgICogZGV0ZWN0aW9uIHBhc3MgZHVyaW5nIHdoaWNoIGFsbCBjaGFuZ2UgZGV0ZWN0aW9uIG11c3QgY29tcGxldGUuXG4gICAqL1xuICB0aWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy56b25lbGVzc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuZGlydHlGbGFncyB8PSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuVmlld1RyZWVHbG9iYWw7XG4gICAgfVxuICAgIHRoaXMuX3RpY2soKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3RpY2soKTogdm9pZCB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy53YXJuSWZEZXN0cm95ZWQoKTtcbiAgICBpZiAodGhpcy5fcnVubmluZ1RpY2spIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuUkVDVVJTSVZFX0FQUExJQ0FUSU9OX1JFRl9USUNLLFxuICAgICAgICBuZ0Rldk1vZGUgJiYgJ0FwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5JyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldkNvbnN1bWVyID0gc2V0QWN0aXZlQ29uc3VtZXIobnVsbCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3J1bm5pbmdUaWNrID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3luY2hyb25pemUoKTtcblxuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICBmb3IgKGxldCB2aWV3IG9mIHRoaXMuX3ZpZXdzKSB7XG4gICAgICAgICAgdmlldy5jaGVja05vQ2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gQXR0ZW50aW9uOiBEb24ndCByZXRocm93IGFzIGl0IGNvdWxkIGNhbmNlbCBzdWJzY3JpcHRpb25zIHRvIE9ic2VydmFibGVzIVxuICAgICAgdGhpcy5pbnRlcm5hbEVycm9ySGFuZGxlcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcnVubmluZ1RpY2sgPSBmYWxzZTtcbiAgICAgIHNldEFjdGl2ZUNvbnN1bWVyKHByZXZDb25zdW1lcik7XG4gICAgICB0aGlzLmFmdGVyVGljay5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHRoZSBjb3JlIHdvcmsgb2Ygc3luY2hyb25pemluZyB0aGUgYXBwbGljYXRpb24gc3RhdGUgd2l0aCB0aGUgVUksIHJlc29sdmluZyBhbnlcbiAgICogcGVuZGluZyBkaXJ0aW5lc3MgKHBvdGVudGlhbGx5IGluIGEgbG9vcCkuXG4gICAqL1xuICBwcml2YXRlIHN5bmNocm9uaXplKCk6IHZvaWQge1xuICAgIGxldCByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoISh0aGlzLl9pbmplY3RvciBhcyBSM0luamVjdG9yKS5kZXN0cm95ZWQpIHtcbiAgICAgIHJlbmRlcmVyRmFjdG9yeSA9IHRoaXMuX2luamVjdG9yLmdldChSZW5kZXJlckZhY3RvcnkyLCBudWxsLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIGJlZ2lubmluZyBzeW5jaHJvbml6YXRpb24sIGFsbCBkZWZlcnJlZCBkaXJ0aW5lc3MgYmVjb21lcyBhY3RpdmUgZGlydGluZXNzLlxuICAgIHRoaXMuZGlydHlGbGFncyB8PSB0aGlzLmRlZmVycmVkRGlydHlGbGFncztcbiAgICB0aGlzLmRlZmVycmVkRGlydHlGbGFncyA9IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5Ob25lO1xuXG4gICAgbGV0IHJ1bnMgPSAwO1xuICAgIHdoaWxlICh0aGlzLmRpcnR5RmxhZ3MgIT09IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5Ob25lICYmIHJ1bnMrKyA8IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMpIHtcbiAgICAgIHRoaXMuc3luY2hyb25pemVPbmNlKHJlbmRlcmVyRmFjdG9yeSk7XG4gICAgfVxuXG4gICAgaWYgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHJ1bnMgPj0gTUFYSU1VTV9SRUZSRVNIX1JFUlVOUykge1xuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgUnVudGltZUVycm9yQ29kZS5JTkZJTklURV9DSEFOR0VfREVURUNUSU9OLFxuICAgICAgICBuZ0Rldk1vZGUgJiZcbiAgICAgICAgICAnSW5maW5pdGUgY2hhbmdlIGRldGVjdGlvbiB3aGlsZSByZWZyZXNoaW5nIGFwcGxpY2F0aW9uIHZpZXdzLiAnICtcbiAgICAgICAgICAgICdFbnN1cmUgdmlld3MgYXJlIG5vdCBjYWxsaW5nIGBtYXJrRm9yQ2hlY2tgIG9uIGV2ZXJ5IHRlbXBsYXRlIGV4ZWN1dGlvbiBvciAnICtcbiAgICAgICAgICAgICd0aGF0IGFmdGVyUmVuZGVyIGhvb2tzIGFsd2F5cyBtYXJrIHZpZXdzIGZvciBjaGVjay4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIHNpbmdsZSBzeW5jaHJvbml6YXRpb24gcGFzcy5cbiAgICovXG4gIHByaXZhdGUgc3luY2hyb25pemVPbmNlKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiB8IG51bGwpOiB2b2lkIHtcbiAgICAvLyBJZiB3ZSBoYXBwZW5lZCB0byBsb29wLCBkZWZlcnJlZCBkaXJ0aW5lc3MgY2FuIGJlIHByb2Nlc3NlZCBhcyBhY3RpdmUgZGlydGluZXNzIGFnYWluLlxuICAgIHRoaXMuZGlydHlGbGFncyB8PSB0aGlzLmRlZmVycmVkRGlydHlGbGFncztcbiAgICB0aGlzLmRlZmVycmVkRGlydHlGbGFncyA9IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5Ob25lO1xuXG4gICAgLy8gRmlyc3QgY2hlY2sgZGlydHkgdmlld3MsIGlmIHRoZXJlIGFyZSBhbnkuXG4gICAgaWYgKHRoaXMuZGlydHlGbGFncyAmIEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5WaWV3VHJlZUFueSkge1xuICAgICAgLy8gQ2hhbmdlIGRldGVjdGlvbiBvbiB2aWV3cyBzdGFydHMgaW4gdGFyZ2V0ZWQgbW9kZSAob25seSBjaGVjayBjb21wb25lbnRzIGlmIHRoZXkncmVcbiAgICAgIC8vIG1hcmtlZCBhcyBkaXJ0eSkgdW5sZXNzIGdsb2JhbCBjaGVja2luZyBpcyBzcGVjaWZpY2FsbHkgcmVxdWVzdGVkIHZpYSBBUElzIGxpa2VcbiAgICAgIC8vIGBBcHBsaWNhdGlvblJlZi50aWNrKClgIGFuZCB0aGUgYE5nWm9uZWAgaW50ZWdyYXRpb24uXG4gICAgICBjb25zdCB1c2VHbG9iYWxDaGVjayA9IEJvb2xlYW4odGhpcy5kaXJ0eUZsYWdzICYgQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlR2xvYmFsKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIHZpZXctcmVsYXRlZCBkaXJ0eSBmbGFncy5cbiAgICAgIHRoaXMuZGlydHlGbGFncyAmPSB+QXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlQW55O1xuXG4gICAgICAvLyBTZXQgdGhlIEFmdGVyUmVuZGVyIGJpdCwgYXMgd2UncmUgY2hlY2tpbmcgdmlld3MgYW5kIHdpbGwgbmVlZCB0byBydW4gYWZ0ZXJSZW5kZXIgaG9va3MuXG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgfD0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLkFmdGVyUmVuZGVyO1xuXG4gICAgICAvLyBDaGVjayBhbGwgcG90ZW50aWFsbHkgZGlydHkgdmlld3MuXG4gICAgICB0aGlzLmJlZm9yZVJlbmRlci5uZXh0KHVzZUdsb2JhbENoZWNrKTtcbiAgICAgIGZvciAobGV0IHtfbFZpZXcsIG5vdGlmeUVycm9ySGFuZGxlcn0gb2YgdGhpcy5fdmlld3MpIHtcbiAgICAgICAgZGV0ZWN0Q2hhbmdlc0luVmlld0lmUmVxdWlyZWQoXG4gICAgICAgICAgX2xWaWV3LFxuICAgICAgICAgIG5vdGlmeUVycm9ySGFuZGxlcixcbiAgICAgICAgICB1c2VHbG9iYWxDaGVjayxcbiAgICAgICAgICB0aGlzLnpvbmVsZXNzRW5hYmxlZCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgYG1hcmtGb3JDaGVjaygpYCB3YXMgY2FsbGVkIGR1cmluZyB2aWV3IGNoZWNraW5nLCBpdCB3aWxsIGhhdmUgc2V0IHRoZSBgVmlld1RyZWVDaGVja2BcbiAgICAgIC8vIGZsYWcuIFdlIGNsZWFyIHRoZSBmbGFnIGhlcmUgYmVjYXVzZSwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBgbWFya0ZvckNoZWNrKClgXG4gICAgICAvLyBkdXJpbmcgdmlldyBjaGVja2luZyBkb2Vzbid0IGNhdXNlIHRoZSB2aWV3IHRvIGJlIHJlLWNoZWNrZWQuXG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgJj0gfkFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5WaWV3VHJlZUNoZWNrO1xuXG4gICAgICAvLyBDaGVjayBpZiBhbnkgdmlld3MgYXJlIHN0aWxsIGRpcnR5IGFmdGVyIGNoZWNraW5nIGFuZCB3ZSBuZWVkIHRvIGxvb3AgYmFjay5cbiAgICAgIHRoaXMuc3luY0RpcnR5RmxhZ3NXaXRoVmlld3MoKTtcbiAgICAgIGlmICh0aGlzLmRpcnR5RmxhZ3MgJiBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuVmlld1RyZWVBbnkpIHtcbiAgICAgICAgLy8gSWYgYW55IHZpZXdzIGFyZSBzdGlsbCBkaXJ0eSBhZnRlciBjaGVja2luZywgbG9vcCBiYWNrIGJlZm9yZSBydW5uaW5nIHJlbmRlciBob29rcy5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBza2lwcGVkIHJlZnJlc2hpbmcgdmlld3MgYWJvdmUsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHVuZmx1c2hlZCBhbmltYXRpb25zXG4gICAgICAvLyBiZWNhdXNlIHdlIG5ldmVyIGNhbGxlZCBgZGV0ZWN0Q2hhbmdlc0ludGVybmFsYCBvbiB0aGUgdmlld3MuXG4gICAgICByZW5kZXJlckZhY3Rvcnk/LmJlZ2luPy4oKTtcbiAgICAgIHJlbmRlcmVyRmFjdG9yeT8uZW5kPy4oKTtcbiAgICB9XG5cbiAgICAvLyBFdmVuIGlmIHRoZXJlIHdlcmUgbm8gZGlydHkgdmlld3MsIGFmdGVyUmVuZGVyIGhvb2tzIG1pZ2h0IHN0aWxsIGJlIGRpcnR5LlxuICAgIGlmICh0aGlzLmRpcnR5RmxhZ3MgJiBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuQWZ0ZXJSZW5kZXIpIHtcbiAgICAgIHRoaXMuZGlydHlGbGFncyAmPSB+QXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLkFmdGVyUmVuZGVyO1xuICAgICAgdGhpcy5hZnRlclJlbmRlck1hbmFnZXIuZXhlY3V0ZSgpO1xuXG4gICAgICAvLyBhZnRlclJlbmRlciBob29rcyBtaWdodCBpbmZsdWVuY2UgZGlydHkgZmxhZ3MuXG4gICAgfVxuICAgIHRoaXMuc3luY0RpcnR5RmxhZ3NXaXRoVmlld3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgYGFsbFZpZXdzYCBmb3Igdmlld3Mgd2hpY2ggcmVxdWlyZSByZWZyZXNoL3RyYXZlcnNhbCwgYW5kIHVwZGF0ZXMgYGRpcnR5RmxhZ3NgXG4gICAqIGFjY29yZGluZ2x5LCB3aXRoIHR3byBwb3RlbnRpYWwgYmVoYXZpb3JzOlxuICAgKlxuICAgKiAxLiBJZiBhbnkgb2Ygb3VyIHZpZXdzIHJlcXVpcmUgdXBkYXRpbmcsIHRoZW4gdGhpcyBhZGRzIHRoZSBgVmlld1RyZWVUcmF2ZXJzYWxgIGRpcnR5IGZsYWcuXG4gICAqICAgIFRoaXMgX3Nob3VsZF8gYmUgYSBuby1vcCwgc2luY2UgdGhlIHNjaGVkdWxlciBzaG91bGQndmUgYWRkZWQgdGhlIGZsYWcgYXQgdGhlIHNhbWUgdGltZSB0aGVcbiAgICogICAgdmlldyB3YXMgbWFya2VkIGFzIG5lZWRpbmcgdXBkYXRpbmcuXG4gICAqXG4gICAqICAgIFRPRE8oYWx4aHViKTogZmlndXJlIG91dCBpZiB0aGlzIGJlaGF2aW9yIGlzIHN0aWxsIG5lZWRlZCBmb3IgZWRnZSBjYXNlcy5cbiAgICpcbiAgICogMi4gSWYgbm9uZSBvZiBvdXIgdmlld3MgcmVxdWlyZSB1cGRhdGluZywgdGhlbiBjbGVhciB0aGUgdmlldy1yZWxhdGVkIGBkaXJ0eUZsYWdgcy4gVGhpc1xuICAgKiAgICBoYXBwZW5zIHdoZW4gdGhlIHNjaGVkdWxlciBpcyBub3RpZmllZCBvZiBhIHZpZXcgYmVjb21pbmcgZGlydHksIGJ1dCB0aGUgdmlldyBpdHNlbGYgaXNuJ3RcbiAgICogICAgcmVhY2hhYmxlIHRocm91Z2ggdHJhdmVyc2FsIGZyb20gb3VyIHJvb3RzIChlLmcuIGl0J3MgZGV0YWNoZWQgZnJvbSB0aGUgQ0QgdHJlZSkuXG4gICAqL1xuICBwcml2YXRlIHN5bmNEaXJ0eUZsYWdzV2l0aFZpZXdzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsbFZpZXdzLnNvbWUoKHtfbFZpZXd9KSA9PiByZXF1aXJlc1JlZnJlc2hPclRyYXZlcnNhbChfbFZpZXcpKSkge1xuICAgICAgLy8gSWYgYWZ0ZXIgcnVubmluZyBhbGwgYWZ0ZXJSZW5kZXIgY2FsbGJhY2tzIG5ldyB2aWV3cyBhcmUgZGlydHksIGVuc3VyZSB3ZSBsb29wIGJhY2suXG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgfD0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlVHJhdmVyc2FsO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFdmVuIHRob3VnaCB0aGlzIGZsYWcgbWF5IGJlIHNldCwgbm9uZSBvZiBfb3VyXyB2aWV3cyByZXF1aXJlIHRyYXZlcnNhbCwgYW5kIHNvIHRoZVxuICAgICAgLy8gYEFwcGxpY2F0aW9uUmVmYCBkb2Vzbid0IHJlcXVpcmUgYW55IHJlcGVhdGVkIGNoZWNraW5nLlxuICAgICAgdGhpcy5kaXJ0eUZsYWdzICY9IH5BcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuVmlld1RyZWVBbnk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgdmlldyBzbyB0aGF0IGl0IHdpbGwgYmUgZGlydHkgY2hlY2tlZC5cbiAgICogVGhlIHZpZXcgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRldGFjaGVkIHdoZW4gaXQgaXMgZGVzdHJveWVkLlxuICAgKiBUaGlzIHdpbGwgdGhyb3cgaWYgdGhlIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIuXG4gICAqL1xuICBhdHRhY2hWaWV3KHZpZXdSZWY6IFZpZXdSZWYpOiB2b2lkIHtcbiAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiB0aGlzLndhcm5JZkRlc3Ryb3llZCgpO1xuICAgIGNvbnN0IHZpZXcgPSB2aWV3UmVmIGFzIEludGVybmFsVmlld1JlZjx1bmtub3duPjtcbiAgICB0aGlzLl92aWV3cy5wdXNoKHZpZXcpO1xuICAgIHZpZXcuYXR0YWNoVG9BcHBSZWYodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0YWNoZXMgYSB2aWV3IGZyb20gZGlydHkgY2hlY2tpbmcgYWdhaW4uXG4gICAqL1xuICBkZXRhY2hWaWV3KHZpZXdSZWY6IFZpZXdSZWYpOiB2b2lkIHtcbiAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiB0aGlzLndhcm5JZkRlc3Ryb3llZCgpO1xuICAgIGNvbnN0IHZpZXcgPSB2aWV3UmVmIGFzIEludGVybmFsVmlld1JlZjx1bmtub3duPjtcbiAgICByZW1vdmUodGhpcy5fdmlld3MsIHZpZXcpO1xuICAgIHZpZXcuZGV0YWNoRnJvbUFwcFJlZigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZENvbXBvbmVudChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgdGhpcy50aWNrKCk7XG4gICAgdGhpcy5jb21wb25lbnRzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAvLyBHZXQgdGhlIGxpc3RlbmVycyBsYXppbHkgdG8gcHJldmVudCBESSBjeWNsZXMuXG4gICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5faW5qZWN0b3IuZ2V0KEFQUF9CT09UU1RSQVBfTElTVEVORVIsIFtdKTtcbiAgICBpZiAobmdEZXZNb2RlICYmICFBcnJheS5pc0FycmF5KGxpc3RlbmVycykpIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuSU5WQUxJRF9NVUxUSV9QUk9WSURFUixcbiAgICAgICAgJ1VuZXhwZWN0ZWQgdHlwZSBvZiB0aGUgYEFQUF9CT09UU1RSQVBfTElTVEVORVJgIHRva2VuIHZhbHVlICcgK1xuICAgICAgICAgIGAoZXhwZWN0ZWQgYW4gYXJyYXksIGJ1dCBnb3QgJHt0eXBlb2YgbGlzdGVuZXJzfSkuIGAgK1xuICAgICAgICAgICdQbGVhc2UgY2hlY2sgdGhhdCB0aGUgYEFQUF9CT09UU1RSQVBfTElTVEVORVJgIHRva2VuIGlzIGNvbmZpZ3VyZWQgYXMgYSAnICtcbiAgICAgICAgICAnYG11bHRpOiB0cnVlYCBwcm92aWRlci4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgWy4uLnRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycywgLi4ubGlzdGVuZXJzXS5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoY29tcG9uZW50UmVmKSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDYWxsIGFsbCB0aGUgbGlmZWN5Y2xlIGhvb2tzLlxuICAgICAgdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG5cbiAgICAgIC8vIERlc3Ryb3kgYWxsIHJlZ2lzdGVyZWQgdmlld3MuXG4gICAgICB0aGlzLl92aWV3cy5zbGljZSgpLmZvckVhY2goKHZpZXcpID0+IHZpZXcuZGVzdHJveSgpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gSW5kaWNhdGUgdGhhdCB0aGlzIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cbiAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG5cbiAgICAgIC8vIFJlbGVhc2UgYWxsIHJlZmVyZW5jZXMuXG4gICAgICB0aGlzLl92aWV3cyA9IFtdO1xuICAgICAgdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzID0gW107XG4gICAgICB0aGlzLl9kZXN0cm95TGlzdGVuZXJzID0gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIGFuIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWRkIGFzIGEgbGlzdGVuZXIuXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gd2hpY2ggdW5yZWdpc3RlcnMgYSBsaXN0ZW5lci5cbiAgICovXG4gIG9uRGVzdHJveShjYWxsYmFjazogKCkgPT4gdm9pZCk6IFZvaWRGdW5jdGlvbiB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy53YXJuSWZEZXN0cm95ZWQoKTtcbiAgICB0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiByZW1vdmUodGhpcy5fZGVzdHJveUxpc3RlbmVycywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBgQXBwbGljYXRpb25SZWZgLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb25cbiAgICogd2lsbCBkZXN0cm95IHRoZSBhc3NvY2lhdGVkIGVudmlyb25tZW50IGluamVjdG9ycyBhcyB3ZWxsIGFzIGFsbCB0aGUgYm9vdHN0cmFwcGVkIGNvbXBvbmVudHNcbiAgICogd2l0aCB0aGVpciB2aWV3cy5cbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgUnVudGltZUVycm9yQ29kZS5BUFBMSUNBVElPTl9SRUZfQUxSRUFEWV9ERVNUUk9ZRUQsXG4gICAgICAgIG5nRGV2TW9kZSAmJiAnVGhpcyBpbnN0YW5jZSBvZiB0aGUgYEFwcGxpY2F0aW9uUmVmYCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2luamVjdG9yIGFzIFIzSW5qZWN0b3I7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoaXMgaW5qZWN0b3IgaW5zdGFuY2Ugc3VwcG9ydHMgZGVzdHJveSBvcGVyYXRpb24uXG4gICAgaWYgKGluamVjdG9yLmRlc3Ryb3kgJiYgIWluamVjdG9yLmRlc3Ryb3llZCkge1xuICAgICAgLy8gRGVzdHJveWluZyBhbiB1bmRlcmx5aW5nIGluamVjdG9yIHdpbGwgdHJpZ2dlciB0aGUgYG5nT25EZXN0cm95YCBsaWZlY3ljbGVcbiAgICAgIC8vIGhvb2ssIHdoaWNoIGludm9rZXMgdGhlIHJlbWFpbmluZyBjbGVhbnVwIGFjdGlvbnMuXG4gICAgICBpbmplY3Rvci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBhdHRhY2hlZCB2aWV3cy5cbiAgICovXG4gIGdldCB2aWV3Q291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgd2FybklmRGVzdHJveWVkKCkge1xuICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiB0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0UnVudGltZUVycm9yKFxuICAgICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuQVBQTElDQVRJT05fUkVGX0FMUkVBRFlfREVTVFJPWUVELFxuICAgICAgICAgICdUaGlzIGluc3RhbmNlIG9mIHRoZSBgQXBwbGljYXRpb25SZWZgIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLicsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlPFQ+KGxpc3Q6IFRbXSwgZWw6IFQpOiB2b2lkIHtcbiAgY29uc3QgaW5kZXggPSBsaXN0LmluZGV4T2YoZWwpO1xuICBpZiAoaW5kZXggPiAtMSkge1xuICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZW51bSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3Mge1xuICBOb25lID0gMCxcblxuICAvKipcbiAgICogQSBnbG9iYWwgY2hhbmdlIGRldGVjdGlvbiByb3VuZCBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gICAqL1xuICBWaWV3VHJlZUdsb2JhbCA9IDBiMDAwMDAwMDEsXG5cbiAgLyoqXG4gICAqIFBhcnQgb2YgdGhlIHZpZXcgdHJlZSBpcyBtYXJrZWQgZm9yIHRyYXZlcnNhbC5cbiAgICovXG4gIFZpZXdUcmVlVHJhdmVyc2FsID0gMGIwMDAwMDAxMCxcblxuICAvKipcbiAgICogUGFydCBvZiB0aGUgdmlldyB0cmVlIGlzIG1hcmtlZCB0byBiZSBjaGVja2VkIChkaXJ0eSkuXG4gICAqL1xuICBWaWV3VHJlZUNoZWNrID0gMGIwMDAwMDEwMCxcblxuICAvKipcbiAgICogSGVscGVyIGZvciBhbnkgdmlldyB0cmVlIGJpdCBiZWluZyBzZXQuXG4gICAqL1xuICBWaWV3VHJlZUFueSA9IFZpZXdUcmVlR2xvYmFsIHwgVmlld1RyZWVUcmF2ZXJzYWwgfCBWaWV3VHJlZUNoZWNrLFxuXG4gIC8qKlxuICAgKiBBZnRlciByZW5kZXIgaG9va3MgbmVlZCB0byBydW4uXG4gICAqL1xuICBBZnRlclJlbmRlciA9IDBiMDAwMDEwMDAsXG59XG5cbmxldCB3aGVuU3RhYmxlU3RvcmU6IFdlYWtNYXA8QXBwbGljYXRpb25SZWYsIFByb21pc2U8dm9pZD4+IHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGJlY29tZXMgc3RhYmxlIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZFxuICogdGhlIGZpcnN0IHRpbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGVuU3RhYmxlKGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZik6IFByb21pc2U8dm9pZD4ge1xuICB3aGVuU3RhYmxlU3RvcmUgPz89IG5ldyBXZWFrTWFwKCk7XG4gIGNvbnN0IGNhY2hlZFdoZW5TdGFibGUgPSB3aGVuU3RhYmxlU3RvcmUuZ2V0KGFwcGxpY2F0aW9uUmVmKTtcbiAgaWYgKGNhY2hlZFdoZW5TdGFibGUpIHtcbiAgICByZXR1cm4gY2FjaGVkV2hlblN0YWJsZTtcbiAgfVxuXG4gIGNvbnN0IHdoZW5TdGFibGVQcm9taXNlID0gYXBwbGljYXRpb25SZWYuaXNTdGFibGVcbiAgICAucGlwZShmaXJzdCgoaXNTdGFibGUpID0+IGlzU3RhYmxlKSlcbiAgICAudG9Qcm9taXNlKClcbiAgICAudGhlbigoKSA9PiB2b2lkIDApO1xuICB3aGVuU3RhYmxlU3RvcmUuc2V0KGFwcGxpY2F0aW9uUmVmLCB3aGVuU3RhYmxlUHJvbWlzZSk7XG5cbiAgLy8gQmUgYSBnb29kIGNpdGl6ZW4gYW5kIGNsZWFuIHRoZSBzdG9yZSBgb25EZXN0cm95YCBldmVuIHRob3VnaCB3ZSBhcmUgdXNpbmcgYFdlYWtNYXBgLlxuICBhcHBsaWNhdGlvblJlZi5vbkRlc3Ryb3koKCkgPT4gd2hlblN0YWJsZVN0b3JlPy5kZWxldGUoYXBwbGljYXRpb25SZWYpKTtcblxuICByZXR1cm4gd2hlblN0YWJsZVByb21pc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW5WaWV3SWZSZXF1aXJlZChcbiAgbFZpZXc6IExWaWV3LFxuICBub3RpZnlFcnJvckhhbmRsZXI6IGJvb2xlYW4sXG4gIGlzRmlyc3RQYXNzOiBib29sZWFuLFxuICB6b25lbGVzc0VuYWJsZWQ6IGJvb2xlYW4sXG4pIHtcbiAgLy8gV2hlbiByZS1jaGVja2luZywgb25seSBjaGVjayB2aWV3cyB3aGljaCBhY3R1YWxseSBuZWVkIGl0LlxuICBpZiAoIWlzRmlyc3RQYXNzICYmICFyZXF1aXJlc1JlZnJlc2hPclRyYXZlcnNhbChsVmlldykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtb2RlID1cbiAgICBpc0ZpcnN0UGFzcyAmJiAhem9uZWxlc3NFbmFibGVkXG4gICAgICA/IC8vIFRoZSBmaXJzdCBwYXNzIGlzIGFsd2F5cyBpbiBHbG9iYWwgbW9kZSwgd2hpY2ggaW5jbHVkZXMgYENoZWNrQWx3YXlzYCB2aWV3cy5cbiAgICAgICAgLy8gV2hlbiB1c2luZyB6b25lbGVzcywgYWxsIHJvb3Qgdmlld3MgbXVzdCBiZSBleHBsaWNpdGx5IG1hcmtlZCBmb3IgcmVmcmVzaCwgZXZlbiBpZiB0aGV5IGFyZVxuICAgICAgICAvLyBgQ2hlY2tBbHdheXNgLlxuICAgICAgICBDaGFuZ2VEZXRlY3Rpb25Nb2RlLkdsb2JhbFxuICAgICAgOiAvLyBPbmx5IHJlZnJlc2ggdmlld3Mgd2l0aCB0aGUgYFJlZnJlc2hWaWV3YCBmbGFnIG9yIHZpZXdzIGlzIGEgY2hhbmdlZCBzaWduYWxcbiAgICAgICAgQ2hhbmdlRGV0ZWN0aW9uTW9kZS5UYXJnZXRlZDtcbiAgZGV0ZWN0Q2hhbmdlc0ludGVybmFsKGxWaWV3LCBub3RpZnlFcnJvckhhbmRsZXIsIG1vZGUpO1xufVxuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb25fcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQ0FBaUMsR0FDbEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQWEsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDcEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxtQkFBbUIsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RSxPQUFPLEVBQWUsa0NBQWtDLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFtQixNQUFNLFdBQVcsQ0FBQztBQUU3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFeEQsT0FBTyxF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bGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgJy4uL3V0aWwvbmdfaml0X21vZGUnO1xuXG5pbXBvcnQge1xuICBzZXRBY3RpdmVDb25zdW1lcixcbiAgc2V0VGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0LCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtaT05FTEVTU19FTkFCTEVEfSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL3NjaGVkdWxpbmcvem9uZWxlc3Nfc2NoZWR1bGluZyc7XG5pbXBvcnQge0NvbnNvbGV9IGZyb20gJy4uL2NvbnNvbGUnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJy4uL2RpJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnLi4vZGkvaW5qZWN0YWJsZSc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICcuLi9kaS9pbmplY3Rpb25fdG9rZW4nO1xuaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSAnLi4vZGkvaW5qZWN0b3InO1xuaW1wb3J0IHtFbnZpcm9ubWVudEluamVjdG9yLCB0eXBlIFIzSW5qZWN0b3J9IGZyb20gJy4uL2RpL3IzX2luamVjdG9yJztcbmltcG9ydCB7RXJyb3JIYW5kbGVyLCBJTlRFUk5BTF9BUFBMSUNBVElPTl9FUlJPUl9IQU5ETEVSfSBmcm9tICcuLi9lcnJvcl9oYW5kbGVyJztcbmltcG9ydCB7Zm9ybWF0UnVudGltZUVycm9yLCBSdW50aW1lRXJyb3IsIFJ1bnRpbWVFcnJvckNvZGV9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQge1R5cGV9IGZyb20gJy4uL2ludGVyZmFjZS90eXBlJztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50UmVmfSBmcm9tICcuLi9saW5rZXIvY29tcG9uZW50X2ZhY3RvcnknO1xuaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9IGZyb20gJy4uL2xpbmtlci9jb21wb25lbnRfZmFjdG9yeV9yZXNvbHZlcic7XG5pbXBvcnQge05nTW9kdWxlUmVmfSBmcm9tICcuLi9saW5rZXIvbmdfbW9kdWxlX2ZhY3RvcnknO1xuaW1wb3J0IHtWaWV3UmVmfSBmcm9tICcuLi9saW5rZXIvdmlld19yZWYnO1xuaW1wb3J0IHtQZW5kaW5nVGFza3N9IGZyb20gJy4uL3BlbmRpbmdfdGFza3MnO1xuaW1wb3J0IHtSZW5kZXJlckZhY3RvcnkyfSBmcm9tICcuLi9yZW5kZXIvYXBpJztcbmltcG9ydCB7QWZ0ZXJSZW5kZXJNYW5hZ2VyfSBmcm9tICcuLi9yZW5kZXIzL2FmdGVyX3JlbmRlci9tYW5hZ2VyJztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeSBhcyBSM0NvbXBvbmVudEZhY3Rvcnl9IGZyb20gJy4uL3JlbmRlcjMvY29tcG9uZW50X3JlZic7XG5pbXBvcnQge2lzU3RhbmRhbG9uZX0gZnJvbSAnLi4vcmVuZGVyMy9kZWZpbml0aW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uTW9kZSwgZGV0ZWN0Q2hhbmdlc0ludGVybmFsfSBmcm9tICcuLi9yZW5kZXIzL2luc3RydWN0aW9ucy9jaGFuZ2VfZGV0ZWN0aW9uJztcbmltcG9ydCB7RkxBR1MsIExWaWV3LCBMVmlld0ZsYWdzfSBmcm9tICcuLi9yZW5kZXIzL2ludGVyZmFjZXMvdmlldyc7XG5pbXBvcnQge3B1Ymxpc2hEZWZhdWx0R2xvYmFsVXRpbHMgYXMgX3B1Ymxpc2hEZWZhdWx0R2xvYmFsVXRpbHN9IGZyb20gJy4uL3JlbmRlcjMvdXRpbC9nbG9iYWxfdXRpbHMnO1xuaW1wb3J0IHtyZW1vdmVMVmlld09uRGVzdHJveSwgcmVxdWlyZXNSZWZyZXNoT3JUcmF2ZXJzYWx9IGZyb20gJy4uL3JlbmRlcjMvdXRpbC92aWV3X3V0aWxzJztcbmltcG9ydCB7Vmlld1JlZiBhcyBJbnRlcm5hbFZpZXdSZWZ9IGZyb20gJy4uL3JlbmRlcjMvdmlld19yZWYnO1xuaW1wb3J0IHtURVNUQUJJTElUWX0gZnJvbSAnLi4vdGVzdGFiaWxpdHkvdGVzdGFiaWxpdHknO1xuaW1wb3J0IHtpc1Byb21pc2V9IGZyb20gJy4uL3V0aWwvbGFuZyc7XG5pbXBvcnQge05nWm9uZX0gZnJvbSAnLi4vem9uZS9uZ196b25lJztcblxuaW1wb3J0IHtBcHBsaWNhdGlvbkluaXRTdGF0dXN9IGZyb20gJy4vYXBwbGljYXRpb25faW5pdCc7XG5cbi8qKlxuICogQSBESSB0b2tlbiB0aGF0IHByb3ZpZGVzIGEgc2V0IG9mIGNhbGxiYWNrcyB0b1xuICogYmUgY2FsbGVkIGZvciBldmVyeSBjb21wb25lbnQgdGhhdCBpcyBib290c3RyYXBwZWQuXG4gKlxuICogRWFjaCBjYWxsYmFjayBtdXN0IHRha2UgYSBgQ29tcG9uZW50UmVmYCBpbnN0YW5jZSBhbmQgcmV0dXJuIG5vdGhpbmcuXG4gKlxuICogYChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZikgPT4gdm9pZGBcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfQk9PVFNUUkFQX0xJU1RFTkVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZWFkb25seUFycmF5PChjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PikgPT4gdm9pZD5cbj4obmdEZXZNb2RlID8gJ2FwcEJvb3RzdHJhcExpc3RlbmVyJyA6ICcnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hEZWZhdWx0R2xvYmFsVXRpbHMoKSB7XG4gIG5nRGV2TW9kZSAmJiBfcHVibGlzaERlZmF1bHRHbG9iYWxVdGlscygpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGVycm9yIGZvciBhbiBpbnZhbGlkIHdyaXRlIHRvIGEgc2lnbmFsIHRvIGJlIGFuIEFuZ3VsYXIgYFJ1bnRpbWVFcnJvcmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaXNoU2lnbmFsQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgc2V0VGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yKCgpID0+IHtcbiAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgUnVudGltZUVycm9yQ29kZS5TSUdOQUxfV1JJVEVfRlJPTV9JTExFR0FMX0NPTlRFWFQsXG4gICAgICBuZ0Rldk1vZGUgJiZcbiAgICAgICAgJ1dyaXRpbmcgdG8gc2lnbmFscyBpcyBub3QgYWxsb3dlZCBpbiBhIGBjb21wdXRlZGAgb3IgYW4gYGVmZmVjdGAgYnkgZGVmYXVsdC4gJyArXG4gICAgICAgICAgJ1VzZSBgYWxsb3dTaWduYWxXcml0ZXNgIGluIHRoZSBgQ3JlYXRlRWZmZWN0T3B0aW9uc2AgdG8gZW5hYmxlIHRoaXMgaW5zaWRlIGVmZmVjdHMuJyxcbiAgICApO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQm91bmRUb01vZHVsZTxDPihjZjogQ29tcG9uZW50RmFjdG9yeTxDPik6IGJvb2xlYW4ge1xuICByZXR1cm4gKGNmIGFzIFIzQ29tcG9uZW50RmFjdG9yeTxDPikuaXNCb3VuZFRvTW9kdWxlO1xufVxuXG4vKipcbiAqIEEgdG9rZW4gZm9yIHRoaXJkLXBhcnR5IGNvbXBvbmVudHMgdGhhdCBjYW4gcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIE5nUHJvYmUuXG4gKlxuICogQGRlcHJlY2F0ZWRcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNsYXNzIE5nUHJvYmVUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHRva2VuOiBhbnksXG4gICkge31cbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gdGhlIGJvb3RzdHJhcHBpbmcgcHJvY2Vzcy5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IHNwZWNpZnkgd2hpY2ggYE5nWm9uZWAgc2hvdWxkIGJlIHVzZWQgd2hlbiBub3QgY29uZmlndXJlZCBpbiB0aGUgcHJvdmlkZXJzLlxuICAgKlxuICAgKiAtIFByb3ZpZGUgeW91ciBvd24gYE5nWm9uZWAgaW5zdGFuY2UuXG4gICAqIC0gYHpvbmUuanNgIC0gVXNlIGRlZmF1bHQgYE5nWm9uZWAgd2hpY2ggcmVxdWlyZXMgYFpvbmUuanNgLlxuICAgKiAtIGBub29wYCAtIFVzZSBgTm9vcE5nWm9uZWAgd2hpY2ggZG9lcyBub3RoaW5nLlxuICAgKi9cbiAgbmdab25lPzogTmdab25lIHwgJ3pvbmUuanMnIHwgJ25vb3AnO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IHNwZWNpZnkgY29hbGVzY2luZyBldmVudCBjaGFuZ2UgZGV0ZWN0aW9ucyBvciBub3QuXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY2FzZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxkaXYgKGNsaWNrKT1cImRvU29tZXRoaW5nKClcIj5cbiAgICogICA8YnV0dG9uIChjbGljayk9XCJkb1NvbWV0aGluZ0Vsc2UoKVwiPjwvYnV0dG9uPlxuICAgKiA8L2Rpdj5cbiAgICogYGBgXG4gICAqXG4gICAqIFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIGJlY2F1c2Ugb2YgdGhlIGV2ZW50IGJ1YmJsaW5nLCBib3RoXG4gICAqIGV2ZW50IGhhbmRsZXJzIHdpbGwgYmUgY2FsbGVkIGFuZCAyIGNoYW5nZSBkZXRlY3Rpb25zIHdpbGwgYmVcbiAgICogdHJpZ2dlcmVkLiBXZSBjYW4gY29hbGVzY2Ugc3VjaCBraW5kIG9mIGV2ZW50cyB0byBvbmx5IHRyaWdnZXJcbiAgICogY2hhbmdlIGRldGVjdGlvbiBvbmx5IG9uY2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgb3B0aW9uIHdpbGwgYmUgZmFsc2UuIFNvIHRoZSBldmVudHMgd2lsbCBub3QgYmVcbiAgICogY29hbGVzY2VkIGFuZCB0aGUgY2hhbmdlIGRldGVjdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCBtdWx0aXBsZSB0aW1lcy5cbiAgICogQW5kIGlmIHRoaXMgb3B0aW9uIGJlIHNldCB0byB0cnVlLCB0aGUgY2hhbmdlIGRldGVjdGlvbiB3aWxsIGJlXG4gICAqIHRyaWdnZXJlZCBhc3luYyBieSBzY2hlZHVsaW5nIGEgYW5pbWF0aW9uIGZyYW1lLiBTbyBpbiB0aGUgY2FzZSBhYm92ZSxcbiAgICogdGhlIGNoYW5nZSBkZXRlY3Rpb24gd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBvbmNlLlxuICAgKi9cbiAgbmdab25lRXZlbnRDb2FsZXNjaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBzcGVjaWZ5IGlmIGBOZ1pvbmUjcnVuKClgIG1ldGhvZCBpbnZvY2F0aW9ucyBzaG91bGQgYmUgY29hbGVzY2VkXG4gICAqIGludG8gYSBzaW5nbGUgY2hhbmdlIGRldGVjdGlvbi5cbiAgICpcbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBjYXNlLlxuICAgKiBgYGBcbiAgICogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSArKykge1xuICAgKiAgIG5nWm9uZS5ydW4oKCkgPT4ge1xuICAgKiAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAqICAgfSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFRoaXMgY2FzZSB0cmlnZ2VycyB0aGUgY2hhbmdlIGRldGVjdGlvbiBtdWx0aXBsZSB0aW1lcy5cbiAgICogV2l0aCBuZ1pvbmVSdW5Db2FsZXNjaW5nIG9wdGlvbnMsIGFsbCBjaGFuZ2UgZGV0ZWN0aW9ucyBpbiBhbiBldmVudCBsb29wIHRyaWdnZXIgb25seSBvbmNlLlxuICAgKiBJbiBhZGRpdGlvbiwgdGhlIGNoYW5nZSBkZXRlY3Rpb24gZXhlY3V0ZXMgaW4gcmVxdWVzdEFuaW1hdGlvbi5cbiAgICpcbiAgICovXG4gIG5nWm9uZVJ1bkNvYWxlc2Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBjaGFuZ2UgZGV0ZWN0aW9uIGlzIHNjaGVkdWxlZCB3aGVuIEFuZ3VsYXIgcmVjZWl2ZXNcbiAgICogYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgdGVtcGxhdGVzIG5lZWQgdG8gYmUgcmVmcmVzaGVkLiBUaGlzIGluY2x1ZGVzOlxuICAgKlxuICAgKiAtIGNhbGxpbmcgYENoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVja2BcbiAgICogLSBjYWxsaW5nIGBDb21wb25lbnRSZWYuc2V0SW5wdXRgXG4gICAqIC0gdXBkYXRpbmcgYSBzaWduYWwgdGhhdCBpcyByZWFkIGluIGEgdGVtcGxhdGVcbiAgICogLSBhdHRhY2hpbmcgYSB2aWV3IHRoYXQgaXMgbWFya2VkIGRpcnR5XG4gICAqIC0gcmVtb3ZpbmcgYSB2aWV3XG4gICAqIC0gcmVnaXN0ZXJpbmcgYSByZW5kZXIgaG9vayAodGVtcGxhdGVzIGFyZSBvbmx5IHJlZnJlc2hlZCBpZiByZW5kZXIgaG9va3MgZG8gb25lIG9mIHRoZSBhYm92ZSlcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBvcHRpb24gd2FzIGludHJvZHVjZWQgb3V0IG9mIGNhdXRpb24gYXMgYSB3YXkgZm9yIGRldmVsb3BlcnMgdG8gb3B0IG91dCBvZiB0aGVcbiAgICogICAgbmV3IGJlaGF2aW9yIGluIHYxOCB3aGljaCBzY2hlZHVsZSBjaGFuZ2UgZGV0ZWN0aW9uIGZvciB0aGUgYWJvdmUgZXZlbnRzIHdoZW4gdGhleSBvY2N1clxuICAgKiAgICBvdXRzaWRlIHRoZSBab25lLiBBZnRlciBtb25pdG9yaW5nIHRoZSByZXN1bHRzIHBvc3QtcmVsZWFzZSwgd2UgaGF2ZSBkZXRlcm1pbmVkIHRoYXQgdGhpc1xuICAgKiAgICBmZWF0dXJlIGlzIHdvcmtpbmcgYXMgZGVzaXJlZCBhbmQgZG8gbm90IGJlbGlldmUgaXQgc2hvdWxkIGV2ZXIgYmUgZGlzYWJsZWQgYnkgc2V0dGluZ1xuICAgKiAgICB0aGlzIG9wdGlvbiB0byBgdHJ1ZWAuXG4gICAqL1xuICBpZ25vcmVDaGFuZ2VzT3V0c2lkZVpvbmU/OiBib29sZWFuO1xufVxuXG4vKiogTWF4aW11bSBudW1iZXIgb2YgdGltZXMgQXBwbGljYXRpb25SZWYgd2lsbCByZWZyZXNoIGFsbCBhdHRhY2hlZCB2aWV3cyBpbiBhIHNpbmdsZSB0aWNrLiAqL1xuY29uc3QgTUFYSU1VTV9SRUZSRVNIX1JFUlVOUyA9IDEwO1xuXG5leHBvcnQgZnVuY3Rpb24gX2NhbGxBbmRSZXBvcnRUb0Vycm9ySGFuZGxlcihcbiAgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gIG5nWm9uZTogTmdab25lLFxuICBjYWxsYmFjazogKCkgPT4gYW55LFxuKTogYW55IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjaygpO1xuICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHJlc3VsdC5jYXRjaCgoZTogYW55KSA9PiB7XG4gICAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBlcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZSkpO1xuICAgICAgICAvLyByZXRocm93IGFzIHRoZSBleGNlcHRpb24gaGFuZGxlciBtaWdodCBub3QgZG8gaXRcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGUpKTtcbiAgICAvLyByZXRocm93IGFzIHRoZSBleGNlcHRpb24gaGFuZGxlciBtaWdodCBub3QgZG8gaXRcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25zUmVkdWNlcjxUIGV4dGVuZHMgT2JqZWN0Pihkc3Q6IFQsIG9ianM6IFQgfCBUW10pOiBUIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqcykpIHtcbiAgICByZXR1cm4gb2Jqcy5yZWR1Y2Uob3B0aW9uc1JlZHVjZXIsIGRzdCk7XG4gIH1cbiAgcmV0dXJuIHsuLi5kc3QsIC4uLm9ianN9O1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gcnVubmluZyBvbiBhIHBhZ2UuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIHtAYSBpcy1zdGFibGUtZXhhbXBsZXN9XG4gKiAjIyMgaXNTdGFibGUgZXhhbXBsZXMgYW5kIGNhdmVhdHNcbiAqXG4gKiBOb3RlIHR3byBpbXBvcnRhbnQgcG9pbnRzIGFib3V0IGBpc1N0YWJsZWAsIGRlbW9uc3RyYXRlZCBpbiB0aGUgZXhhbXBsZXMgYmVsb3c6XG4gKiAtIHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5ldmVyIGJlIHN0YWJsZSBpZiB5b3Ugc3RhcnQgYW55IGtpbmRcbiAqIG9mIHJlY3VycmVudCBhc3luY2hyb25vdXMgdGFzayB3aGVuIHRoZSBhcHBsaWNhdGlvbiBzdGFydHNcbiAqIChmb3IgZXhhbXBsZSBmb3IgYSBwb2xsaW5nIHByb2Nlc3MsIHN0YXJ0ZWQgd2l0aCBhIGBzZXRJbnRlcnZhbGAsIGEgYHNldFRpbWVvdXRgXG4gKiBvciB1c2luZyBSeEpTIG9wZXJhdG9ycyBsaWtlIGBpbnRlcnZhbGApO1xuICogLSB0aGUgYGlzU3RhYmxlYCBPYnNlcnZhYmxlIHJ1bnMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lLlxuICpcbiAqIExldCdzIGltYWdpbmUgdGhhdCB5b3Ugc3RhcnQgYSByZWN1cnJlbnQgdGFza1xuICogKGhlcmUgaW5jcmVtZW50aW5nIGEgY291bnRlciwgdXNpbmcgUnhKUyBgaW50ZXJ2YWxgKSxcbiAqIGFuZCBhdCB0aGUgc2FtZSB0aW1lIHN1YnNjcmliZSB0byBgaXNTdGFibGVgLlxuICpcbiAqIGBgYFxuICogY29uc3RydWN0b3IoYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge1xuICogICBhcHBSZWYuaXNTdGFibGUucGlwZShcbiAqICAgICAgZmlsdGVyKHN0YWJsZSA9PiBzdGFibGUpXG4gKiAgICkuc3Vic2NyaWJlKCgpID0+IGNvbnNvbGUubG9nKCdBcHAgaXMgc3RhYmxlIG5vdycpO1xuICogICBpbnRlcnZhbCgxMDAwKS5zdWJzY3JpYmUoY291bnRlciA9PiBjb25zb2xlLmxvZyhjb3VudGVyKSk7XG4gKiB9XG4gKiBgYGBcbiAqIEluIHRoaXMgZXhhbXBsZSwgYGlzU3RhYmxlYCB3aWxsIG5ldmVyIGVtaXQgYHRydWVgLFxuICogYW5kIHRoZSB0cmFjZSBcIkFwcCBpcyBzdGFibGUgbm93XCIgd2lsbCBuZXZlciBnZXQgbG9nZ2VkLlxuICpcbiAqIElmIHlvdSB3YW50IHRvIGV4ZWN1dGUgc29tZXRoaW5nIHdoZW4gdGhlIGFwcCBpcyBzdGFibGUsXG4gKiB5b3UgaGF2ZSB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gYmUgc3RhYmxlXG4gKiBiZWZvcmUgc3RhcnRpbmcgeW91ciBwb2xsaW5nIHByb2Nlc3MuXG4gKlxuICogYGBgXG4gKiBjb25zdHJ1Y3RvcihhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gKiAgIGFwcFJlZi5pc1N0YWJsZS5waXBlKFxuICogICAgIGZpcnN0KHN0YWJsZSA9PiBzdGFibGUpLFxuICogICAgIHRhcChzdGFibGUgPT4gY29uc29sZS5sb2coJ0FwcCBpcyBzdGFibGUgbm93JykpLFxuICogICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCgxMDAwKSlcbiAqICAgKS5zdWJzY3JpYmUoY291bnRlciA9PiBjb25zb2xlLmxvZyhjb3VudGVyKSk7XG4gKiB9XG4gKiBgYGBcbiAqIEluIHRoaXMgZXhhbXBsZSwgdGhlIHRyYWNlIFwiQXBwIGlzIHN0YWJsZSBub3dcIiB3aWxsIGJlIGxvZ2dlZFxuICogYW5kIHRoZW4gdGhlIGNvdW50ZXIgc3RhcnRzIGluY3JlbWVudGluZyBldmVyeSBzZWNvbmQuXG4gKlxuICogTm90ZSBhbHNvIHRoYXQgdGhpcyBPYnNlcnZhYmxlIHJ1bnMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lLFxuICogd2hpY2ggbWVhbnMgdGhhdCB0aGUgY29kZSBpbiB0aGUgc3Vic2NyaXB0aW9uXG4gKiB0byB0aGlzIE9ic2VydmFibGUgd2lsbCBub3QgdHJpZ2dlciB0aGUgY2hhbmdlIGRldGVjdGlvbi5cbiAqXG4gKiBMZXQncyBpbWFnaW5lIHRoYXQgaW5zdGVhZCBvZiBsb2dnaW5nIHRoZSBjb3VudGVyIHZhbHVlLFxuICogeW91IHVwZGF0ZSBhIGZpZWxkIG9mIHlvdXIgY29tcG9uZW50XG4gKiBhbmQgZGlzcGxheSBpdCBpbiBpdHMgdGVtcGxhdGUuXG4gKlxuICogYGBgXG4gKiBjb25zdHJ1Y3RvcihhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gKiAgIGFwcFJlZi5pc1N0YWJsZS5waXBlKFxuICogICAgIGZpcnN0KHN0YWJsZSA9PiBzdGFibGUpLFxuICogICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCgxMDAwKSlcbiAqICAgKS5zdWJzY3JpYmUoY291bnRlciA9PiB0aGlzLnZhbHVlID0gY291bnRlcik7XG4gKiB9XG4gKiBgYGBcbiAqIEFzIHRoZSBgaXNTdGFibGVgIE9ic2VydmFibGUgcnVucyBvdXRzaWRlIHRoZSB6b25lLFxuICogdGhlIGB2YWx1ZWAgZmllbGQgd2lsbCBiZSB1cGRhdGVkIHByb3Blcmx5LFxuICogYnV0IHRoZSB0ZW1wbGF0ZSB3aWxsIG5vdCBiZSByZWZyZXNoZWQhXG4gKlxuICogWW91J2xsIGhhdmUgdG8gbWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBgYFxuICogY29uc3RydWN0b3IoYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gKiAgIGFwcFJlZi5pc1N0YWJsZS5waXBlKFxuICogICAgIGZpcnN0KHN0YWJsZSA9PiBzdGFibGUpLFxuICogICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCgxMDAwKSlcbiAqICAgKS5zdWJzY3JpYmUoY291bnRlciA9PiB7XG4gKiAgICAgdGhpcy52YWx1ZSA9IGNvdW50ZXI7XG4gKiAgICAgY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICogICB9KTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIE9yIG1ha2UgdGhlIHN1YnNjcmlwdGlvbiBjYWxsYmFjayBydW4gaW5zaWRlIHRoZSB6b25lLlxuICpcbiAqIGBgYFxuICogY29uc3RydWN0b3IoYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgem9uZTogTmdab25lKSB7XG4gKiAgIGFwcFJlZi5pc1N0YWJsZS5waXBlKFxuICogICAgIGZpcnN0KHN0YWJsZSA9PiBzdGFibGUpLFxuICogICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCgxMDAwKSlcbiAqICAgKS5zdWJzY3JpYmUoY291bnRlciA9PiB6b25lLnJ1bigoKSA9PiB0aGlzLnZhbHVlID0gY291bnRlcikpO1xuICogfVxuICogYGBgXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblJlZiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfYm9vdHN0cmFwTGlzdGVuZXJzOiAoKGNvbXBSZWY6IENvbXBvbmVudFJlZjxhbnk+KSA9PiB2b2lkKVtdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3J1bm5pbmdUaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95TGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICAvKiogQGludGVybmFsICovXG4gIF92aWV3czogSW50ZXJuYWxWaWV3UmVmPHVua25vd24+W10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbEVycm9ySGFuZGxlciA9IGluamVjdChJTlRFUk5BTF9BUFBMSUNBVElPTl9FUlJPUl9IQU5ETEVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhZnRlclJlbmRlck1hbmFnZXIgPSBpbmplY3QoQWZ0ZXJSZW5kZXJNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lbGVzc0VuYWJsZWQgPSBpbmplY3QoWk9ORUxFU1NfRU5BQkxFRCk7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgZGlydHkgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIGFjcm9zcyBhIG51bWJlciBvZiBkaW1lbnNpb25zICh2aWV3cywgYWZ0ZXJSZW5kZXIgaG9va3MsXG4gICAqIGV0YykuXG4gICAqXG4gICAqIEEgZmxhZyBzZXQgaGVyZSBtZWFucyB0aGF0IGB0aWNrKClgIHdpbGwgYXR0ZW1wdCB0byByZXNvbHZlIHRoZSBkaXJ0aW5lc3Mgd2hlbiBleGVjdXRlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkaXJ0eUZsYWdzID0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLk5vbmU7XG5cbiAgLyoqXG4gICAqIExpa2UgYGRpcnR5RmxhZ3NgIGJ1dCBkb24ndCBjYXVzZSBgdGljaygpYCB0byBsb29wLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlZmVycmVkRGlydHlGbGFncyA9IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5Ob25lO1xuXG4gIC8vIE5lZWRlZCBmb3IgQ29tcG9uZW50Rml4dHVyZSB0ZW1wb3JhcmlseSBkdXJpbmcgbWlncmF0aW9uIG9mIGF1dG9EZXRlY3QgYmVoYXZpb3JcbiAgLy8gRXZlbnR1YWxseSB0aGUgaG9zdFZpZXcgb2YgdGhlIGZpeHR1cmUgc2hvdWxkIGp1c3QgYXR0YWNoIHRvIEFwcGxpY2F0aW9uUmVmLlxuICBwcml2YXRlIGV4dGVybmFsVGVzdFZpZXdzOiBTZXQ8SW50ZXJuYWxWaWV3UmVmPHVua25vd24+PiA9IG5ldyBTZXQoKTtcbiAgcHJpdmF0ZSBiZWZvcmVSZW5kZXIgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAvKiogQGludGVybmFsICovXG4gIGFmdGVyVGljayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgZ2V0IGFsbFZpZXdzKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5leHRlcm5hbFRlc3RWaWV3cy5rZXlzKCksIC4uLnRoaXMuX3ZpZXdzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGluc3RhbmNlIHdhcyBkZXN0cm95ZWQuXG4gICAqL1xuICBnZXQgZGVzdHJveWVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kZXN0cm95ZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBjb21wb25lbnQgdHlwZXMgcmVnaXN0ZXJlZCB0byB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKiBUaGlzIGxpc3QgaXMgcG9wdWxhdGVkIGV2ZW4gYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRUeXBlczogVHlwZTxhbnk+W10gPSBbXTtcblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBjb21wb25lbnRzIHJlZ2lzdGVyZWQgdG8gdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRzOiBDb21wb25lbnRSZWY8YW55PltdID0gW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGluZGljYXRlcyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBzdGFibGUgb3IgdW5zdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTdGFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBpbmplY3QoUGVuZGluZ1Rhc2tzKS5oYXNQZW5kaW5nVGFza3MucGlwZShcbiAgICBtYXAoKHBlbmRpbmcpID0+ICFwZW5kaW5nKSxcbiAgKTtcblxuICAvKipcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXBwbGljYXRpb24gYmVjb21lcyBzdGFibGVcbiAgICovXG4gIHdoZW5TdGFibGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uID0gdGhpcy5pc1N0YWJsZS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoc3RhYmxlKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YWJsZSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgLyoqXG4gICAqIFRoZSBgRW52aXJvbm1lbnRJbmplY3RvcmAgdXNlZCB0byBjcmVhdGUgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIGdldCBpbmplY3RvcigpOiBFbnZpcm9ubWVudEluamVjdG9yIHtcbiAgICByZXR1cm4gdGhpcy5faW5qZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQm9vdHN0cmFwIGEgY29tcG9uZW50IG9udG8gdGhlIGVsZW1lbnQgaWRlbnRpZmllZCBieSBpdHMgc2VsZWN0b3Igb3IsIG9wdGlvbmFsbHksIHRvIGFcbiAgICogc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBCb290c3RyYXAgcHJvY2Vzc1xuICAgKlxuICAgKiBXaGVuIGJvb3RzdHJhcHBpbmcgYSBjb21wb25lbnQsIEFuZ3VsYXIgbW91bnRzIGl0IG9udG8gYSB0YXJnZXQgRE9NIGVsZW1lbnRcbiAgICogYW5kIGtpY2tzIG9mZiBhdXRvbWF0aWMgY2hhbmdlIGRldGVjdGlvbi4gVGhlIHRhcmdldCBET00gZWxlbWVudCBjYW4gYmVcbiAgICogcHJvdmlkZWQgdXNpbmcgdGhlIGByb290U2VsZWN0b3JPck5vZGVgIGFyZ3VtZW50LlxuICAgKlxuICAgKiBJZiB0aGUgdGFyZ2V0IERPTSBlbGVtZW50IGlzIG5vdCBwcm92aWRlZCwgQW5ndWxhciB0cmllcyB0byBmaW5kIG9uZSBvbiBhIHBhZ2VcbiAgICogdXNpbmcgdGhlIGBzZWxlY3RvcmAgb2YgdGhlIGNvbXBvbmVudCB0aGF0IGlzIGJlaW5nIGJvb3RzdHJhcHBlZFxuICAgKiAoZmlyc3QgbWF0Y2hlZCBlbGVtZW50IGlzIHVzZWQpLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBHZW5lcmFsbHksIHdlIGRlZmluZSB0aGUgY29tcG9uZW50IHRvIGJvb3RzdHJhcCBpbiB0aGUgYGJvb3RzdHJhcGAgYXJyYXkgb2YgYE5nTW9kdWxlYCxcbiAgICogYnV0IGl0IHJlcXVpcmVzIHVzIHRvIGtub3cgdGhlIGNvbXBvbmVudCB3aGlsZSB3cml0aW5nIHRoZSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKlxuICAgKiBJbWFnaW5lIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGhhdmUgdG8gd2FpdCBmb3IgYW4gQVBJIGNhbGwgdG8gZGVjaWRlIGFib3V0IHRoZSBjb21wb25lbnQgdG9cbiAgICogYm9vdHN0cmFwLiBXZSBjYW4gdXNlIHRoZSBgbmdEb0Jvb3RzdHJhcGAgaG9vayBvZiB0aGUgYE5nTW9kdWxlYCBhbmQgY2FsbCB0aGlzIG1ldGhvZCB0b1xuICAgKiBkeW5hbWljYWxseSBib290c3RyYXAgYSBjb21wb25lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY29tcG9uZW50U2VsZWN0b3InfVxuICAgKlxuICAgKiBPcHRpb25hbGx5LCBhIGNvbXBvbmVudCBjYW4gYmUgbW91bnRlZCBvbnRvIGEgRE9NIGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGVcbiAgICogc2VsZWN0b3Igb2YgdGhlIGJvb3RzdHJhcHBlZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2UgYXJlIHByb3ZpZGluZyBhIENTUyBzZWxlY3RvciB0byBtYXRjaCB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nY3NzU2VsZWN0b3InfVxuICAgKlxuICAgKiBXaGlsZSBpbiB0aGlzIGV4YW1wbGUsIHdlIGFyZSBwcm92aWRpbmcgcmVmZXJlbmNlIHRvIGEgRE9NIG5vZGUuXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nZG9tTm9kZSd9XG4gICAqL1xuICBib290c3RyYXA8Qz4oY29tcG9uZW50OiBUeXBlPEM+LCByb290U2VsZWN0b3JPck5vZGU/OiBzdHJpbmcgfCBhbnkpOiBDb21wb25lbnRSZWY8Qz47XG5cbiAgLyoqXG4gICAqIEJvb3RzdHJhcCBhIGNvbXBvbmVudCBvbnRvIHRoZSBlbGVtZW50IGlkZW50aWZpZWQgYnkgaXRzIHNlbGVjdG9yIG9yLCBvcHRpb25hbGx5LCB0byBhXG4gICAqIHNwZWNpZmllZCBlbGVtZW50LlxuICAgKlxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiAjIyMgQm9vdHN0cmFwIHByb2Nlc3NcbiAgICpcbiAgICogV2hlbiBib290c3RyYXBwaW5nIGEgY29tcG9uZW50LCBBbmd1bGFyIG1vdW50cyBpdCBvbnRvIGEgdGFyZ2V0IERPTSBlbGVtZW50XG4gICAqIGFuZCBraWNrcyBvZmYgYXV0b21hdGljIGNoYW5nZSBkZXRlY3Rpb24uIFRoZSB0YXJnZXQgRE9NIGVsZW1lbnQgY2FuIGJlXG4gICAqIHByb3ZpZGVkIHVzaW5nIHRoZSBgcm9vdFNlbGVjdG9yT3JOb2RlYCBhcmd1bWVudC5cbiAgICpcbiAgICogSWYgdGhlIHRhcmdldCBET00gZWxlbWVudCBpcyBub3QgcHJvdmlkZWQsIEFuZ3VsYXIgdHJpZXMgdG8gZmluZCBvbmUgb24gYSBwYWdlXG4gICAqIHVzaW5nIHRoZSBgc2VsZWN0b3JgIG9mIHRoZSBjb21wb25lbnQgdGhhdCBpcyBiZWluZyBib290c3RyYXBwZWRcbiAgICogKGZpcnN0IG1hdGNoZWQgZWxlbWVudCBpcyB1c2VkKS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogR2VuZXJhbGx5LCB3ZSBkZWZpbmUgdGhlIGNvbXBvbmVudCB0byBib290c3RyYXAgaW4gdGhlIGBib290c3RyYXBgIGFycmF5IG9mIGBOZ01vZHVsZWAsXG4gICAqIGJ1dCBpdCByZXF1aXJlcyB1cyB0byBrbm93IHRoZSBjb21wb25lbnQgd2hpbGUgd3JpdGluZyB0aGUgYXBwbGljYXRpb24gY29kZS5cbiAgICpcbiAgICogSW1hZ2luZSBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFuIEFQSSBjYWxsIHRvIGRlY2lkZSBhYm91dCB0aGUgY29tcG9uZW50IHRvXG4gICAqIGJvb3RzdHJhcC4gV2UgY2FuIHVzZSB0aGUgYG5nRG9Cb290c3RyYXBgIGhvb2sgb2YgdGhlIGBOZ01vZHVsZWAgYW5kIGNhbGwgdGhpcyBtZXRob2QgdG9cbiAgICogZHluYW1pY2FsbHkgYm9vdHN0cmFwIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2NvbXBvbmVudFNlbGVjdG9yJ31cbiAgICpcbiAgICogT3B0aW9uYWxseSwgYSBjb21wb25lbnQgY2FuIGJlIG1vdW50ZWQgb250byBhIERPTSBlbGVtZW50IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlXG4gICAqIHNlbGVjdG9yIG9mIHRoZSBib290c3RyYXBwZWQgY29tcG9uZW50LlxuICAgKlxuICAgKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHdlIGFyZSBwcm92aWRpbmcgYSBDU1Mgc2VsZWN0b3IgdG8gbWF0Y2ggdGhlIHRhcmdldCBlbGVtZW50LlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2Nzc1NlbGVjdG9yJ31cbiAgICpcbiAgICogV2hpbGUgaW4gdGhpcyBleGFtcGxlLCB3ZSBhcmUgcHJvdmlkaW5nIHJlZmVyZW5jZSB0byBhIERPTSBub2RlLlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2RvbU5vZGUnfVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQYXNzaW5nIENvbXBvbmVudCBmYWN0b3JpZXMgYXMgdGhlIGBBcHBsaWNhdGlvbi5ib290c3RyYXBgIGZ1bmN0aW9uIGFyZ3VtZW50IGlzXG4gICAqICAgICBkZXByZWNhdGVkLiBQYXNzIENvbXBvbmVudCBUeXBlcyBpbnN0ZWFkLlxuICAgKi9cbiAgYm9vdHN0cmFwPEM+KFxuICAgIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8Qz4sXG4gICAgcm9vdFNlbGVjdG9yT3JOb2RlPzogc3RyaW5nIHwgYW55LFxuICApOiBDb21wb25lbnRSZWY8Qz47XG5cbiAgLyoqXG4gICAqIEJvb3RzdHJhcCBhIGNvbXBvbmVudCBvbnRvIHRoZSBlbGVtZW50IGlkZW50aWZpZWQgYnkgaXRzIHNlbGVjdG9yIG9yLCBvcHRpb25hbGx5LCB0byBhXG4gICAqIHNwZWNpZmllZCBlbGVtZW50LlxuICAgKlxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiAjIyMgQm9vdHN0cmFwIHByb2Nlc3NcbiAgICpcbiAgICogV2hlbiBib290c3RyYXBwaW5nIGEgY29tcG9uZW50LCBBbmd1bGFyIG1vdW50cyBpdCBvbnRvIGEgdGFyZ2V0IERPTSBlbGVtZW50XG4gICAqIGFuZCBraWNrcyBvZmYgYXV0b21hdGljIGNoYW5nZSBkZXRlY3Rpb24uIFRoZSB0YXJnZXQgRE9NIGVsZW1lbnQgY2FuIGJlXG4gICAqIHByb3ZpZGVkIHVzaW5nIHRoZSBgcm9vdFNlbGVjdG9yT3JOb2RlYCBhcmd1bWVudC5cbiAgICpcbiAgICogSWYgdGhlIHRhcmdldCBET00gZWxlbWVudCBpcyBub3QgcHJvdmlkZWQsIEFuZ3VsYXIgdHJpZXMgdG8gZmluZCBvbmUgb24gYSBwYWdlXG4gICAqIHVzaW5nIHRoZSBgc2VsZWN0b3JgIG9mIHRoZSBjb21wb25lbnQgdGhhdCBpcyBiZWluZyBib290c3RyYXBwZWRcbiAgICogKGZpcnN0IG1hdGNoZWQgZWxlbWVudCBpcyB1c2VkKS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogR2VuZXJhbGx5LCB3ZSBkZWZpbmUgdGhlIGNvbXBvbmVudCB0byBib290c3RyYXAgaW4gdGhlIGBib290c3RyYXBgIGFycmF5IG9mIGBOZ01vZHVsZWAsXG4gICAqIGJ1dCBpdCByZXF1aXJlcyB1cyB0byBrbm93IHRoZSBjb21wb25lbnQgd2hpbGUgd3JpdGluZyB0aGUgYXBwbGljYXRpb24gY29kZS5cbiAgICpcbiAgICogSW1hZ2luZSBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFuIEFQSSBjYWxsIHRvIGRlY2lkZSBhYm91dCB0aGUgY29tcG9uZW50IHRvXG4gICAqIGJvb3RzdHJhcC4gV2UgY2FuIHVzZSB0aGUgYG5nRG9Cb290c3RyYXBgIGhvb2sgb2YgdGhlIGBOZ01vZHVsZWAgYW5kIGNhbGwgdGhpcyBtZXRob2QgdG9cbiAgICogZHluYW1pY2FsbHkgYm9vdHN0cmFwIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2NvbXBvbmVudFNlbGVjdG9yJ31cbiAgICpcbiAgICogT3B0aW9uYWxseSwgYSBjb21wb25lbnQgY2FuIGJlIG1vdW50ZWQgb250byBhIERPTSBlbGVtZW50IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlXG4gICAqIHNlbGVjdG9yIG9mIHRoZSBib290c3RyYXBwZWQgY29tcG9uZW50LlxuICAgKlxuICAgKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHdlIGFyZSBwcm92aWRpbmcgYSBDU1Mgc2VsZWN0b3IgdG8gbWF0Y2ggdGhlIHRhcmdldCBlbGVtZW50LlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2Nzc1NlbGVjdG9yJ31cbiAgICpcbiAgICogV2hpbGUgaW4gdGhpcyBleGFtcGxlLCB3ZSBhcmUgcHJvdmlkaW5nIHJlZmVyZW5jZSB0byBhIERPTSBub2RlLlxuICAgKlxuICAgKiB7QGV4YW1wbGUgY29yZS90cy9wbGF0Zm9ybS9wbGF0Zm9ybS50cyByZWdpb249J2RvbU5vZGUnfVxuICAgKi9cbiAgYm9vdHN0cmFwPEM+KFxuICAgIGNvbXBvbmVudE9yRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxDPiB8IFR5cGU8Qz4sXG4gICAgcm9vdFNlbGVjdG9yT3JOb2RlPzogc3RyaW5nIHwgYW55LFxuICApOiBDb21wb25lbnRSZWY8Qz4ge1xuICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHRoaXMud2FybklmRGVzdHJveWVkKCk7XG4gICAgY29uc3QgaXNDb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50T3JGYWN0b3J5IGluc3RhbmNlb2YgQ29tcG9uZW50RmFjdG9yeTtcbiAgICBjb25zdCBpbml0U3RhdHVzID0gdGhpcy5faW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uSW5pdFN0YXR1cyk7XG5cbiAgICBpZiAoIWluaXRTdGF0dXMuZG9uZSkge1xuICAgICAgY29uc3Qgc3RhbmRhbG9uZSA9ICFpc0NvbXBvbmVudEZhY3RvcnkgJiYgaXNTdGFuZGFsb25lKGNvbXBvbmVudE9yRmFjdG9yeSk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgICAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJlxuICAgICAgICAnQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLicgK1xuICAgICAgICAgIChzdGFuZGFsb25lXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6ICcgQm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLicpO1xuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihSdW50aW1lRXJyb3JDb2RlLkFTWU5DX0lOSVRJQUxJWkVSU19TVElMTF9SVU5OSU5HLCBlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGxldCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PEM+O1xuICAgIGlmIChpc0NvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRPckZhY3Rvcnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5faW5qZWN0b3IuZ2V0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG4gICAgICBjb21wb25lbnRGYWN0b3J5ID0gcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50T3JGYWN0b3J5KSE7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50VHlwZXMucHVzaChjb21wb25lbnRGYWN0b3J5LmNvbXBvbmVudFR5cGUpO1xuXG4gICAgLy8gQ3JlYXRlIGEgZmFjdG9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgbW9kdWxlIGlmIGl0J3Mgbm90IGJvdW5kIHRvIHNvbWUgb3RoZXJcbiAgICBjb25zdCBuZ01vZHVsZSA9IGlzQm91bmRUb01vZHVsZShjb21wb25lbnRGYWN0b3J5KVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogdGhpcy5faW5qZWN0b3IuZ2V0KE5nTW9kdWxlUmVmKTtcbiAgICBjb25zdCBzZWxlY3Rvck9yTm9kZSA9IHJvb3RTZWxlY3Rvck9yTm9kZSB8fCBjb21wb25lbnRGYWN0b3J5LnNlbGVjdG9yO1xuICAgIGNvbnN0IGNvbXBSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZShJbmplY3Rvci5OVUxMLCBbXSwgc2VsZWN0b3JPck5vZGUsIG5nTW9kdWxlKTtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gY29tcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHRlc3RhYmlsaXR5ID0gY29tcFJlZi5pbmplY3Rvci5nZXQoVEVTVEFCSUxJVFksIG51bGwpO1xuICAgIHRlc3RhYmlsaXR5Py5yZWdpc3RlckFwcGxpY2F0aW9uKG5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgY29tcFJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdGhpcy5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xuICAgICAgcmVtb3ZlKHRoaXMuY29tcG9uZW50cywgY29tcFJlZik7XG4gICAgICB0ZXN0YWJpbGl0eT8udW5yZWdpc3RlckFwcGxpY2F0aW9uKG5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9hZENvbXBvbmVudChjb21wUmVmKTtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICBjb25zdCBfY29uc29sZSA9IHRoaXMuX2luamVjdG9yLmdldChDb25zb2xlKTtcbiAgICAgIF9jb25zb2xlLmxvZyhgQW5ndWxhciBpcyBydW5uaW5nIGluIGRldmVsb3BtZW50IG1vZGUuYCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSB0aGlzIG1ldGhvZCB0byBleHBsaWNpdGx5IHByb2Nlc3MgY2hhbmdlIGRldGVjdGlvbiBhbmQgaXRzIHNpZGUtZWZmZWN0cy5cbiAgICpcbiAgICogSW4gZGV2ZWxvcG1lbnQgbW9kZSwgYHRpY2soKWAgYWxzbyBwZXJmb3JtcyBhIHNlY29uZCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHRvIGVuc3VyZSB0aGF0IG5vXG4gICAqIGZ1cnRoZXIgY2hhbmdlcyBhcmUgZGV0ZWN0ZWQuIElmIGFkZGl0aW9uYWwgY2hhbmdlcyBhcmUgcGlja2VkIHVwIGR1cmluZyB0aGlzIHNlY29uZCBjeWNsZSxcbiAgICogYmluZGluZ3MgaW4gdGhlIGFwcCBoYXZlIHNpZGUtZWZmZWN0cyB0aGF0IGNhbm5vdCBiZSByZXNvbHZlZCBpbiBhIHNpbmdsZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIHBhc3MuXG4gICAqIEluIHRoaXMgY2FzZSwgQW5ndWxhciB0aHJvd3MgYW4gZXJyb3IsIHNpbmNlIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gY2FuIG9ubHkgaGF2ZSBvbmUgY2hhbmdlXG4gICAqIGRldGVjdGlvbiBwYXNzIGR1cmluZyB3aGljaCBhbGwgY2hhbmdlIGRldGVjdGlvbiBtdXN0IGNvbXBsZXRlLlxuICAgKi9cbiAgdGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuem9uZWxlc3NFbmFibGVkKSB7XG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgfD0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlR2xvYmFsO1xuICAgIH1cbiAgICB0aGlzLl90aWNrKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF90aWNrKCk6IHZvaWQge1xuICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHRoaXMud2FybklmRGVzdHJveWVkKCk7XG4gICAgaWYgKHRoaXMuX3J1bm5pbmdUaWNrKSB7XG4gICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgICBSdW50aW1lRXJyb3JDb2RlLlJFQ1VSU0lWRV9BUFBMSUNBVElPTl9SRUZfVElDSyxcbiAgICAgICAgbmdEZXZNb2RlICYmICdBcHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseScsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZDb25zdW1lciA9IHNldEFjdGl2ZUNvbnN1bWVyKG51bGwpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9ydW5uaW5nVGljayA9IHRydWU7XG4gICAgICB0aGlzLnN5bmNocm9uaXplKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgZm9yIChsZXQgdmlldyBvZiB0aGlzLl92aWV3cykge1xuICAgICAgICAgIHZpZXcuY2hlY2tOb0NoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIEF0dGVudGlvbjogRG9uJ3QgcmV0aHJvdyBhcyBpdCBjb3VsZCBjYW5jZWwgc3Vic2NyaXB0aW9ucyB0byBPYnNlcnZhYmxlcyFcbiAgICAgIHRoaXMuaW50ZXJuYWxFcnJvckhhbmRsZXIoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3J1bm5pbmdUaWNrID0gZmFsc2U7XG4gICAgICBzZXRBY3RpdmVDb25zdW1lcihwcmV2Q29uc3VtZXIpO1xuICAgICAgdGhpcy5hZnRlclRpY2submV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyB0aGUgY29yZSB3b3JrIG9mIHN5bmNocm9uaXppbmcgdGhlIGFwcGxpY2F0aW9uIHN0YXRlIHdpdGggdGhlIFVJLCByZXNvbHZpbmcgYW55XG4gICAqIHBlbmRpbmcgZGlydGluZXNzIChwb3RlbnRpYWxseSBpbiBhIGxvb3ApLlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jaHJvbml6ZSgpOiB2b2lkIHtcbiAgICBsZXQgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKCEodGhpcy5faW5qZWN0b3IgYXMgUjNJbmplY3RvcikuZGVzdHJveWVkKSB7XG4gICAgICByZW5kZXJlckZhY3RvcnkgPSB0aGlzLl9pbmplY3Rvci5nZXQoUmVuZGVyZXJGYWN0b3J5MiwgbnVsbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBiZWdpbm5pbmcgc3luY2hyb25pemF0aW9uLCBhbGwgZGVmZXJyZWQgZGlydGluZXNzIGJlY29tZXMgYWN0aXZlIGRpcnRpbmVzcy5cbiAgICB0aGlzLmRpcnR5RmxhZ3MgfD0gdGhpcy5kZWZlcnJlZERpcnR5RmxhZ3M7XG4gICAgdGhpcy5kZWZlcnJlZERpcnR5RmxhZ3MgPSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuTm9uZTtcblxuICAgIGxldCBydW5zID0gMDtcbiAgICB3aGlsZSAodGhpcy5kaXJ0eUZsYWdzICE9PSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuTm9uZSAmJiBydW5zKysgPCBNQVhJTVVNX1JFRlJFU0hfUkVSVU5TKSB7XG4gICAgICB0aGlzLnN5bmNocm9uaXplT25jZShyZW5kZXJlckZhY3RvcnkpO1xuICAgIH1cblxuICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiBydW5zID49IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMpIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuSU5GSU5JVEVfQ0hBTkdFX0RFVEVDVElPTixcbiAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgJ0luZmluaXRlIGNoYW5nZSBkZXRlY3Rpb24gd2hpbGUgcmVmcmVzaGluZyBhcHBsaWNhdGlvbiB2aWV3cy4gJyArXG4gICAgICAgICAgICAnRW5zdXJlIHZpZXdzIGFyZSBub3QgY2FsbGluZyBgbWFya0ZvckNoZWNrYCBvbiBldmVyeSB0ZW1wbGF0ZSBleGVjdXRpb24gb3IgJyArXG4gICAgICAgICAgICAndGhhdCBhZnRlclJlbmRlciBob29rcyBhbHdheXMgbWFyayB2aWV3cyBmb3IgY2hlY2suJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBzaW5nbGUgc3luY2hyb25pemF0aW9uIHBhc3MuXG4gICAqL1xuICBwcml2YXRlIHN5bmNocm9uaXplT25jZShyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgfCBudWxsKTogdm9pZCB7XG4gICAgLy8gSWYgd2UgaGFwcGVuZWQgdG8gbG9vcCwgZGVmZXJyZWQgZGlydGluZXNzIGNhbiBiZSBwcm9jZXNzZWQgYXMgYWN0aXZlIGRpcnRpbmVzcyBhZ2Fpbi5cbiAgICB0aGlzLmRpcnR5RmxhZ3MgfD0gdGhpcy5kZWZlcnJlZERpcnR5RmxhZ3M7XG4gICAgdGhpcy5kZWZlcnJlZERpcnR5RmxhZ3MgPSBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuTm9uZTtcblxuICAgIC8vIEZpcnN0IGNoZWNrIGRpcnR5IHZpZXdzLCBpZiB0aGVyZSBhcmUgYW55LlxuICAgIGlmICh0aGlzLmRpcnR5RmxhZ3MgJiBBcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuVmlld1RyZWVBbnkpIHtcbiAgICAgIC8vIENoYW5nZSBkZXRlY3Rpb24gb24gdmlld3Mgc3RhcnRzIGluIHRhcmdldGVkIG1vZGUgKG9ubHkgY2hlY2sgY29tcG9uZW50cyBpZiB0aGV5J3JlXG4gICAgICAvLyBtYXJrZWQgYXMgZGlydHkpIHVubGVzcyBnbG9iYWwgY2hlY2tpbmcgaXMgc3BlY2lmaWNhbGx5IHJlcXVlc3RlZCB2aWEgQVBJcyBsaWtlXG4gICAgICAvLyBgQXBwbGljYXRpb25SZWYudGljaygpYCBhbmQgdGhlIGBOZ1pvbmVgIGludGVncmF0aW9uLlxuICAgICAgY29uc3QgdXNlR2xvYmFsQ2hlY2sgPSBCb29sZWFuKHRoaXMuZGlydHlGbGFncyAmIEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5WaWV3VHJlZUdsb2JhbCk7XG5cbiAgICAgIC8vIENsZWFyIHRoZSB2aWV3LXJlbGF0ZWQgZGlydHkgZmxhZ3MuXG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgJj0gfkFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5WaWV3VHJlZUFueTtcblxuICAgICAgLy8gU2V0IHRoZSBBZnRlclJlbmRlciBiaXQsIGFzIHdlJ3JlIGNoZWNraW5nIHZpZXdzIGFuZCB3aWxsIG5lZWQgdG8gcnVuIGFmdGVyUmVuZGVyIGhvb2tzLlxuICAgICAgdGhpcy5kaXJ0eUZsYWdzIHw9IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5BZnRlclJlbmRlcjtcblxuICAgICAgLy8gQ2hlY2sgYWxsIHBvdGVudGlhbGx5IGRpcnR5IHZpZXdzLlxuICAgICAgdGhpcy5iZWZvcmVSZW5kZXIubmV4dCh1c2VHbG9iYWxDaGVjayk7XG4gICAgICBmb3IgKGxldCB7X2xWaWV3LCBub3RpZnlFcnJvckhhbmRsZXJ9IG9mIHRoaXMuX3ZpZXdzKSB7XG4gICAgICAgIGRldGVjdENoYW5nZXNJblZpZXdJZlJlcXVpcmVkKFxuICAgICAgICAgIF9sVmlldyxcbiAgICAgICAgICBub3RpZnlFcnJvckhhbmRsZXIsXG4gICAgICAgICAgdXNlR2xvYmFsQ2hlY2ssXG4gICAgICAgICAgdGhpcy56b25lbGVzc0VuYWJsZWQsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGBtYXJrRm9yQ2hlY2soKWAgd2FzIGNhbGxlZCBkdXJpbmcgdmlldyBjaGVja2luZywgaXQgd2lsbCBoYXZlIHNldCB0aGUgYFZpZXdUcmVlQ2hlY2tgXG4gICAgICAvLyBmbGFnLiBXZSBjbGVhciB0aGUgZmxhZyBoZXJlIGJlY2F1c2UsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYG1hcmtGb3JDaGVjaygpYFxuICAgICAgLy8gZHVyaW5nIHZpZXcgY2hlY2tpbmcgZG9lc24ndCBjYXVzZSB0aGUgdmlldyB0byBiZSByZS1jaGVja2VkLlxuICAgICAgdGhpcy5kaXJ0eUZsYWdzICY9IH5BcHBsaWNhdGlvblJlZkRpcnR5RmxhZ3MuVmlld1RyZWVDaGVjaztcblxuICAgICAgLy8gQ2hlY2sgaWYgYW55IHZpZXdzIGFyZSBzdGlsbCBkaXJ0eSBhZnRlciBjaGVja2luZyBhbmQgd2UgbmVlZCB0byBsb29wIGJhY2suXG4gICAgICB0aGlzLnN5bmNEaXJ0eUZsYWdzV2l0aFZpZXdzKCk7XG4gICAgICBpZiAodGhpcy5kaXJ0eUZsYWdzICYgQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlQW55KSB7XG4gICAgICAgIC8vIElmIGFueSB2aWV3cyBhcmUgc3RpbGwgZGlydHkgYWZ0ZXIgY2hlY2tpbmcsIGxvb3AgYmFjayBiZWZvcmUgcnVubmluZyByZW5kZXIgaG9va3MuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgd2Ugc2tpcHBlZCByZWZyZXNoaW5nIHZpZXdzIGFib3ZlLCB0aGVyZSBtaWdodCBzdGlsbCBiZSB1bmZsdXNoZWQgYW5pbWF0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBuZXZlciBjYWxsZWQgYGRldGVjdENoYW5nZXNJbnRlcm5hbGAgb24gdGhlIHZpZXdzLlxuICAgICAgcmVuZGVyZXJGYWN0b3J5Py5iZWdpbj8uKCk7XG4gICAgICByZW5kZXJlckZhY3Rvcnk/LmVuZD8uKCk7XG4gICAgfVxuXG4gICAgLy8gRXZlbiBpZiB0aGVyZSB3ZXJlIG5vIGRpcnR5IHZpZXdzLCBhZnRlclJlbmRlciBob29rcyBtaWdodCBzdGlsbCBiZSBkaXJ0eS5cbiAgICBpZiAodGhpcy5kaXJ0eUZsYWdzICYgQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLkFmdGVyUmVuZGVyKSB7XG4gICAgICB0aGlzLmRpcnR5RmxhZ3MgJj0gfkFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5BZnRlclJlbmRlcjtcbiAgICAgIHRoaXMuYWZ0ZXJSZW5kZXJNYW5hZ2VyLmV4ZWN1dGUoKTtcblxuICAgICAgLy8gYWZ0ZXJSZW5kZXIgaG9va3MgbWlnaHQgaW5mbHVlbmNlIGRpcnR5IGZsYWdzLlxuICAgIH1cbiAgICB0aGlzLnN5bmNEaXJ0eUZsYWdzV2l0aFZpZXdzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGBhbGxWaWV3c2AgZm9yIHZpZXdzIHdoaWNoIHJlcXVpcmUgcmVmcmVzaC90cmF2ZXJzYWwsIGFuZCB1cGRhdGVzIGBkaXJ0eUZsYWdzYFxuICAgKiBhY2NvcmRpbmdseSwgd2l0aCB0d28gcG90ZW50aWFsIGJlaGF2aW9yczpcbiAgICpcbiAgICogMS4gSWYgYW55IG9mIG91ciB2aWV3cyByZXF1aXJlIHVwZGF0aW5nLCB0aGVuIHRoaXMgYWRkcyB0aGUgYFZpZXdUcmVlVHJhdmVyc2FsYCBkaXJ0eSBmbGFnLlxuICAgKiAgICBUaGlzIF9zaG91bGRfIGJlIGEgbm8tb3AsIHNpbmNlIHRoZSBzY2hlZHVsZXIgc2hvdWxkJ3ZlIGFkZGVkIHRoZSBmbGFnIGF0IHRoZSBzYW1lIHRpbWUgdGhlXG4gICAqICAgIHZpZXcgd2FzIG1hcmtlZCBhcyBuZWVkaW5nIHVwZGF0aW5nLlxuICAgKlxuICAgKiAgICBUT0RPKGFseGh1Yik6IGZpZ3VyZSBvdXQgaWYgdGhpcyBiZWhhdmlvciBpcyBzdGlsbCBuZWVkZWQgZm9yIGVkZ2UgY2FzZXMuXG4gICAqXG4gICAqIDIuIElmIG5vbmUgb2Ygb3VyIHZpZXdzIHJlcXVpcmUgdXBkYXRpbmcsIHRoZW4gY2xlYXIgdGhlIHZpZXctcmVsYXRlZCBgZGlydHlGbGFnYHMuIFRoaXNcbiAgICogICAgaGFwcGVucyB3aGVuIHRoZSBzY2hlZHVsZXIgaXMgbm90aWZpZWQgb2YgYSB2aWV3IGJlY29taW5nIGRpcnR5LCBidXQgdGhlIHZpZXcgaXRzZWxmIGlzbid0XG4gICAqICAgIHJlYWNoYWJsZSB0aHJvdWdoIHRyYXZlcnNhbCBmcm9tIG91ciByb290cyAoZS5nLiBpdCdzIGRldGFjaGVkIGZyb20gdGhlIENEIHRyZWUpLlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jRGlydHlGbGFnc1dpdGhWaWV3cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxWaWV3cy5zb21lKCh7X2xWaWV3fSkgPT4gcmVxdWlyZXNSZWZyZXNoT3JUcmF2ZXJzYWwoX2xWaWV3KSkpIHtcbiAgICAgIC8vIElmIGFmdGVyIHJ1bm5pbmcgYWxsIGFmdGVyUmVuZGVyIGNhbGxiYWNrcyBuZXcgdmlld3MgYXJlIGRpcnR5LCBlbnN1cmUgd2UgbG9vcCBiYWNrLlxuICAgICAgdGhpcy5kaXJ0eUZsYWdzIHw9IEFwcGxpY2F0aW9uUmVmRGlydHlGbGFncy5WaWV3VHJlZVRyYXZlcnNhbDtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRXZlbiB0aG91Z2ggdGhpcyBmbGFnIG1heSBiZSBzZXQsIG5vbmUgb2YgX291cl8gdmlld3MgcmVxdWlyZSB0cmF2ZXJzYWwsIGFuZCBzbyB0aGVcbiAgICAgIC8vIGBBcHBsaWNhdGlvblJlZmAgZG9lc24ndCByZXF1aXJlIGFueSByZXBlYXRlZCBjaGVja2luZy5cbiAgICAgIHRoaXMuZGlydHlGbGFncyAmPSB+QXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzLlZpZXdUcmVlQW55O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIHZpZXcgc28gdGhhdCBpdCB3aWxsIGJlIGRpcnR5IGNoZWNrZWQuXG4gICAqIFRoZSB2aWV3IHdpbGwgYmUgYXV0b21hdGljYWxseSBkZXRhY2hlZCB3aGVuIGl0IGlzIGRlc3Ryb3llZC5cbiAgICogVGhpcyB3aWxsIHRocm93IGlmIHRoZSB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyLlxuICAgKi9cbiAgYXR0YWNoVmlldyh2aWV3UmVmOiBWaWV3UmVmKTogdm9pZCB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy53YXJuSWZEZXN0cm95ZWQoKTtcbiAgICBjb25zdCB2aWV3ID0gdmlld1JlZiBhcyBJbnRlcm5hbFZpZXdSZWY8dW5rbm93bj47XG4gICAgdGhpcy5fdmlld3MucHVzaCh2aWV3KTtcbiAgICB2aWV3LmF0dGFjaFRvQXBwUmVmKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGFjaGVzIGEgdmlldyBmcm9tIGRpcnR5IGNoZWNraW5nIGFnYWluLlxuICAgKi9cbiAgZGV0YWNoVmlldyh2aWV3UmVmOiBWaWV3UmVmKTogdm9pZCB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy53YXJuSWZEZXN0cm95ZWQoKTtcbiAgICBjb25zdCB2aWV3ID0gdmlld1JlZiBhcyBJbnRlcm5hbFZpZXdSZWY8dW5rbm93bj47XG4gICAgcmVtb3ZlKHRoaXMuX3ZpZXdzLCB2aWV3KTtcbiAgICB2aWV3LmRldGFjaEZyb21BcHBSZWYoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRDb21wb25lbnQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHRoaXMudGljaygpO1xuICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgLy8gR2V0IHRoZSBsaXN0ZW5lcnMgbGF6aWx5IHRvIHByZXZlbnQgREkgY3ljbGVzLlxuICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2luamVjdG9yLmdldChBUFBfQk9PVFNUUkFQX0xJU1RFTkVSLCBbXSk7XG4gICAgaWYgKG5nRGV2TW9kZSAmJiAhQXJyYXkuaXNBcnJheShsaXN0ZW5lcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgICBSdW50aW1lRXJyb3JDb2RlLklOVkFMSURfTVVMVElfUFJPVklERVIsXG4gICAgICAgICdVbmV4cGVjdGVkIHR5cGUgb2YgdGhlIGBBUFBfQk9PVFNUUkFQX0xJU1RFTkVSYCB0b2tlbiB2YWx1ZSAnICtcbiAgICAgICAgICBgKGV4cGVjdGVkIGFuIGFycmF5LCBidXQgZ290ICR7dHlwZW9mIGxpc3RlbmVyc30pLiBgICtcbiAgICAgICAgICAnUGxlYXNlIGNoZWNrIHRoYXQgdGhlIGBBUFBfQk9PVFNUUkFQX0xJU1RFTkVSYCB0b2tlbiBpcyBjb25maWd1cmVkIGFzIGEgJyArXG4gICAgICAgICAgJ2BtdWx0aTogdHJ1ZWAgcHJvdmlkZXIuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIFsuLi50aGlzLl9ib290c3RyYXBMaXN0ZW5lcnMsIC4uLmxpc3RlbmVyc10uZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKGNvbXBvbmVudFJlZikpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgLy8gQ2FsbCBhbGwgdGhlIGxpZmVjeWNsZSBob29rcy5cbiAgICAgIHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKCkpO1xuXG4gICAgICAvLyBEZXN0cm95IGFsbCByZWdpc3RlcmVkIHZpZXdzLlxuICAgICAgdGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKCh2aWV3KSA9PiB2aWV3LmRlc3Ryb3koKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIEluZGljYXRlIHRoYXQgdGhpcyBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICAvLyBSZWxlYXNlIGFsbCByZWZlcmVuY2VzLlxuICAgICAgdGhpcy5fdmlld3MgPSBbXTtcbiAgICAgIHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycyA9IFtdO1xuICAgICAgdGhpcy5fZGVzdHJveUxpc3RlbmVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBsaXN0ZW5lciB0byBiZSBjYWxsZWQgd2hlbiBhbiBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGFkZCBhcyBhIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHdoaWNoIHVucmVnaXN0ZXJzIGEgbGlzdGVuZXIuXG4gICAqL1xuICBvbkRlc3Ryb3koY2FsbGJhY2s6ICgpID0+IHZvaWQpOiBWb2lkRnVuY3Rpb24ge1xuICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHRoaXMud2FybklmRGVzdHJveWVkKCk7XG4gICAgdGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCkgPT4gcmVtb3ZlKHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgYEFwcGxpY2F0aW9uUmVmYC4gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uXG4gICAqIHdpbGwgZGVzdHJveSB0aGUgYXNzb2NpYXRlZCBlbnZpcm9ubWVudCBpbmplY3RvcnMgYXMgd2VsbCBhcyBhbGwgdGhlIGJvb3RzdHJhcHBlZCBjb21wb25lbnRzXG4gICAqIHdpdGggdGhlaXIgdmlld3MuXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuQVBQTElDQVRJT05fUkVGX0FMUkVBRFlfREVTVFJPWUVELFxuICAgICAgICBuZ0Rldk1vZGUgJiYgJ1RoaXMgaW5zdGFuY2Ugb2YgdGhlIGBBcHBsaWNhdGlvblJlZmAgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9pbmplY3RvciBhcyBSM0luamVjdG9yO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGluamVjdG9yIGluc3RhbmNlIHN1cHBvcnRzIGRlc3Ryb3kgb3BlcmF0aW9uLlxuICAgIGlmIChpbmplY3Rvci5kZXN0cm95ICYmICFpbmplY3Rvci5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIERlc3Ryb3lpbmcgYW4gdW5kZXJseWluZyBpbmplY3RvciB3aWxsIHRyaWdnZXIgdGhlIGBuZ09uRGVzdHJveWAgbGlmZWN5Y2xlXG4gICAgICAvLyBob29rLCB3aGljaCBpbnZva2VzIHRoZSByZW1haW5pbmcgY2xlYW51cCBhY3Rpb25zLlxuICAgICAgaW5qZWN0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYXR0YWNoZWQgdmlld3MuXG4gICAqL1xuICBnZXQgdmlld0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3cy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIHdhcm5JZkRlc3Ryb3llZCgpIHtcbiAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgdGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBSdW50aW1lRXJyb3JDb2RlLkFQUExJQ0FUSU9OX1JFRl9BTFJFQURZX0RFU1RST1lFRCxcbiAgICAgICAgICAnVGhpcyBpbnN0YW5jZSBvZiB0aGUgYEFwcGxpY2F0aW9uUmVmYCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4nLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZTxUPihsaXN0OiBUW10sIGVsOiBUKTogdm9pZCB7XG4gIGNvbnN0IGluZGV4ID0gbGlzdC5pbmRleE9mKGVsKTtcbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gQXBwbGljYXRpb25SZWZEaXJ0eUZsYWdzIHtcbiAgTm9uZSA9IDAsXG5cbiAgLyoqXG4gICAqIEEgZ2xvYmFsIGNoYW5nZSBkZXRlY3Rpb24gcm91bmQgaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgVmlld1RyZWVHbG9iYWwgPSAwYjAwMDAwMDAxLFxuXG4gIC8qKlxuICAgKiBQYXJ0IG9mIHRoZSB2aWV3IHRyZWUgaXMgbWFya2VkIGZvciB0cmF2ZXJzYWwuXG4gICAqL1xuICBWaWV3VHJlZVRyYXZlcnNhbCA9IDBiMDAwMDAwMTAsXG5cbiAgLyoqXG4gICAqIFBhcnQgb2YgdGhlIHZpZXcgdHJlZSBpcyBtYXJrZWQgdG8gYmUgY2hlY2tlZCAoZGlydHkpLlxuICAgKi9cbiAgVmlld1RyZWVDaGVjayA9IDBiMDAwMDAxMDAsXG5cbiAgLyoqXG4gICAqIEhlbHBlciBmb3IgYW55IHZpZXcgdHJlZSBiaXQgYmVpbmcgc2V0LlxuICAgKi9cbiAgVmlld1RyZWVBbnkgPSBWaWV3VHJlZUdsb2JhbCB8IFZpZXdUcmVlVHJhdmVyc2FsIHwgVmlld1RyZWVDaGVjayxcblxuICAvKipcbiAgICogQWZ0ZXIgcmVuZGVyIGhvb2tzIG5lZWQgdG8gcnVuLlxuICAgKi9cbiAgQWZ0ZXJSZW5kZXIgPSAwYjAwMDAxMDAwLFxufVxuXG5sZXQgd2hlblN0YWJsZVN0b3JlOiBXZWFrTWFwPEFwcGxpY2F0aW9uUmVmLCBQcm9taXNlPHZvaWQ+PiB8IHVuZGVmaW5lZDtcbi8qKlxuICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBiZWNvbWVzIHN0YWJsZSBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWRcbiAqIHRoZSBmaXJzdCB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hlblN0YWJsZShhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpOiBQcm9taXNlPHZvaWQ+IHtcbiAgd2hlblN0YWJsZVN0b3JlID8/PSBuZXcgV2Vha01hcCgpO1xuICBjb25zdCBjYWNoZWRXaGVuU3RhYmxlID0gd2hlblN0YWJsZVN0b3JlLmdldChhcHBsaWNhdGlvblJlZik7XG4gIGlmIChjYWNoZWRXaGVuU3RhYmxlKSB7XG4gICAgcmV0dXJuIGNhY2hlZFdoZW5TdGFibGU7XG4gIH1cblxuICBjb25zdCB3aGVuU3RhYmxlUHJvbWlzZSA9IGFwcGxpY2F0aW9uUmVmLmlzU3RhYmxlXG4gICAgLnBpcGUoZmlyc3QoKGlzU3RhYmxlKSA9PiBpc1N0YWJsZSkpXG4gICAgLnRvUHJvbWlzZSgpXG4gICAgLnRoZW4oKCkgPT4gdm9pZCAwKTtcbiAgd2hlblN0YWJsZVN0b3JlLnNldChhcHBsaWNhdGlvblJlZiwgd2hlblN0YWJsZVByb21pc2UpO1xuXG4gIC8vIEJlIGEgZ29vZCBjaXRpemVuIGFuZCBjbGVhbiB0aGUgc3RvcmUgYG9uRGVzdHJveWAgZXZlbiB0aG91Z2ggd2UgYXJlIHVzaW5nIGBXZWFrTWFwYC5cbiAgYXBwbGljYXRpb25SZWYub25EZXN0cm95KCgpID0+IHdoZW5TdGFibGVTdG9yZT8uZGVsZXRlKGFwcGxpY2F0aW9uUmVmKSk7XG5cbiAgcmV0dXJuIHdoZW5TdGFibGVQcm9taXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0Q2hhbmdlc0luVmlld0lmUmVxdWlyZWQoXG4gIGxWaWV3OiBMVmlldyxcbiAgbm90aWZ5RXJyb3JIYW5kbGVyOiBib29sZWFuLFxuICBpc0ZpcnN0UGFzczogYm9vbGVhbixcbiAgem9uZWxlc3NFbmFibGVkOiBib29sZWFuLFxuKSB7XG4gIC8vIFdoZW4gcmUtY2hlY2tpbmcsIG9ubHkgY2hlY2sgdmlld3Mgd2hpY2ggYWN0dWFsbHkgbmVlZCBpdC5cbiAgaWYgKCFpc0ZpcnN0UGFzcyAmJiAhcmVxdWlyZXNSZWZyZXNoT3JUcmF2ZXJzYWwobFZpZXcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbW9kZSA9XG4gICAgaXNGaXJzdFBhc3MgJiYgIXpvbmVsZXNzRW5hYmxlZFxuICAgICAgPyAvLyBUaGUgZmlyc3QgcGFzcyBpcyBhbHdheXMgaW4gR2xvYmFsIG1vZGUsIHdoaWNoIGluY2x1ZGVzIGBDaGVja0Fsd2F5c2Agdmlld3MuXG4gICAgICAgIC8vIFdoZW4gdXNpbmcgem9uZWxlc3MsIGFsbCByb290IHZpZXdzIG11c3QgYmUgZXhwbGljaXRseSBtYXJrZWQgZm9yIHJlZnJlc2gsIGV2ZW4gaWYgdGhleSBhcmVcbiAgICAgICAgLy8gYENoZWNrQWx3YXlzYC5cbiAgICAgICAgQ2hhbmdlRGV0ZWN0aW9uTW9kZS5HbG9iYWxcbiAgICAgIDogLy8gT25seSByZWZyZXNoIHZpZXdzIHdpdGggdGhlIGBSZWZyZXNoVmlld2AgZmxhZyBvciB2aWV3cyBpcyBhIGNoYW5nZWQgc2lnbmFsXG4gICAgICAgIENoYW5nZURldGVjdGlvbk1vZGUuVGFyZ2V0ZWQ7XG4gIGRldGVjdENoYW5nZXNJbnRlcm5hbChsVmlldywgbm90aWZ5RXJyb3JIYW5kbGVyLCBtb2RlKTtcbn1cbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { InjectionToken } from '../di/injection_token';
9
9
  import { getDocument } from '../render3/interfaces/document';
@@ -122,4 +122,4 @@ export const IMAGE_CONFIG = new InjectionToken(ngDevMode ? 'ImageConfig' : '', {
122
122
  providedIn: 'root',
123
123
  factory: () => IMAGE_CONFIG_DEFAULTS,
124
124
  });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb25fdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDekUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWM7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsMkNBQTJDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUU1Qjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN4QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDcEYsVUFBVSxFQUFFLFVBQVU7SUFDdEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSx3REFBd0Q7Q0FDbkYsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsU0FBUyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRCxDQUFDO0FBRUYsOEZBQThGO0FBQzlGLDJGQUEyRjtBQUMzRiwyREFBMkQ7QUFFM0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3ZDLENBQUM7QUFFRiwwQ0FBMEM7QUFDMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFnQixTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3ZGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWiwrRkFBK0Y7UUFDL0YsMEZBQTBGO1FBQzFGLDZGQUE2RjtRQUM3RixzRkFBc0Y7UUFDdEYsOEZBQThGO1FBQzlGLDZGQUE2RjtRQUM3Rix1QkFBdUI7UUFDdkIseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRixrQ0FBa0M7UUFDbEMsK0ZBQStGO1FBQy9GLDRGQUE0RjtRQUM1RiwrRkFBK0Y7UUFDL0YsMEJBQTBCO1FBQzFCLDZGQUE2RjtRQUM3Riw4RkFBOEY7UUFDOUYsK0VBQStFO1FBQy9FLE9BQU8sV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQy9GLENBQUM7Q0FDRixDQUFDLENBQUM7QUFzQkgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWdCO0lBQ2hELFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUM3RixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHVCQUF1QixFQUFFLEtBQUs7SUFDOUIsMkJBQTJCLEVBQUUsS0FBSztDQUNuQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUMxRixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCO0NBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICcuLi9kaS9pbmplY3Rpb25fdG9rZW4nO1xuaW1wb3J0IHtnZXREb2N1bWVudH0gZnJvbSAnLi4vcmVuZGVyMy9pbnRlcmZhY2VzL2RvY3VtZW50JztcblxuLyoqXG4gKiBBIERJIHRva2VuIHJlcHJlc2VudGluZyBhIHN0cmluZyBJRCwgdXNlZFxuICogcHJpbWFyaWx5IGZvciBwcmVmaXhpbmcgYXBwbGljYXRpb24gYXR0cmlidXRlcyBhbmQgQ1NTIHN0eWxlcyB3aGVuXG4gKiB7QGxpbmsgVmlld0VuY2Fwc3VsYXRpb24jRW11bGF0ZWR9IGlzIGJlaW5nIHVzZWQuXG4gKlxuICogVGhlIHRva2VuIGlzIG5lZWRlZCBpbiBjYXNlcyB3aGVuIG11bHRpcGxlIGFwcGxpY2F0aW9ucyBhcmUgYm9vdHN0cmFwcGVkIG9uIGEgcGFnZVxuICogKGZvciBleGFtcGxlLCB1c2luZyBgYm9vdHN0cmFwQXBwbGljYXRpb25gIGNhbGxzKS4gSW4gdGhpcyBjYXNlLCBlbnN1cmUgdGhhdCB0aG9zZSBhcHBsaWNhdGlvbnNcbiAqIGhhdmUgZGlmZmVyZW50IGBBUFBfSURgIHZhbHVlIHNldHVwLiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKENvbXBvbmVudEEsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgeyBwcm92aWRlOiBBUFBfSUQsIHVzZVZhbHVlOiAnYXBwLWEnIH0sXG4gKiAgICAgLy8gLi4uIG90aGVyIHByb3ZpZGVycyAuLi5cbiAqICAgXVxuICogfSk7XG4gKlxuICogYm9vdHN0cmFwQXBwbGljYXRpb24oQ29tcG9uZW50Qiwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7IHByb3ZpZGU6IEFQUF9JRCwgdXNlVmFsdWU6ICdhcHAtYicgfSxcbiAqICAgICAvLyAuLi4gb3RoZXIgcHJvdmlkZXJzIC4uLlxuICogICBdXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgYXBwbGljYXRpb24gYm9vdHN0cmFwcGVkLCB5b3UgZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZVxuICogYEFQUF9JRGAgdG9rZW4gKHRoZSBgbmdgIHdpbGwgYmUgdXNlZCBhcyBhbiBhcHAgSUQpLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9JRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KG5nRGV2TW9kZSA/ICdBcHBJZCcgOiAnJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IERFRkFVTFRfQVBQX0lELFxufSk7XG5cbi8qKiBEZWZhdWx0IHZhbHVlIG9mIHRoZSBgQVBQX0lEYCB0b2tlbi4gKi9cbmNvbnN0IERFRkFVTFRfQVBQX0lEID0gJ25nJztcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiBhIHBsYXRmb3JtIGlzIGluaXRpYWxpemVkLlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1fSU5JVElBTElaRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVhZG9ubHlBcnJheTwoKSA9PiB2b2lkPj4oXG4gIG5nRGV2TW9kZSA/ICdQbGF0Zm9ybSBJbml0aWFsaXplcicgOiAnJyxcbik7XG5cbi8qKlxuICogQSB0b2tlbiB0aGF0IGluZGljYXRlcyBhbiBvcGFxdWUgcGxhdGZvcm0gSUQuXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9JRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYmplY3Q+KG5nRGV2TW9kZSA/ICdQbGF0Zm9ybSBJRCcgOiAnJywge1xuICBwcm92aWRlZEluOiAncGxhdGZvcm0nLFxuICBmYWN0b3J5OiAoKSA9PiAndW5rbm93bicsIC8vIHNldCBhIGRlZmF1bHQgcGxhdGZvcm0gbmFtZSwgd2hlbiBub25lIHNldCBleHBsaWNpdGx5XG59KTtcblxuLyoqXG4gKiBBIERJIHRva2VuIHRoYXQgaW5kaWNhdGVzIHRoZSByb290IGRpcmVjdG9yeSBvZlxuICogdGhlIGFwcGxpY2F0aW9uXG4gKiBAcHVibGljQXBpXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgUEFDS0FHRV9ST09UX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICBuZ0Rldk1vZGUgPyAnQXBwbGljYXRpb24gUGFja2FnZXMgUm9vdCBVUkwnIDogJycsXG4pO1xuXG4vLyBXZSBrZWVwIHRoaXMgdG9rZW4gaGVyZSwgcmF0aGVyIHRoYW4gdGhlIGFuaW1hdGlvbnMgcGFja2FnZSwgc28gdGhhdCBtb2R1bGVzIHRoYXQgb25seSBjYXJlXG4vLyBhYm91dCB3aGljaCBhbmltYXRpb25zIG1vZHVsZSBpcyBsb2FkZWQgKGUuZy4gdGhlIENESykgY2FuIHJldHJpZXZlIGl0IHdpdGhvdXQgaGF2aW5nIHRvXG4vLyBpbmNsdWRlIGV4dHJhIGRlcGVuZGVuY2llcy4gU2VlICM0NDk3MCBmb3IgbW9yZSBjb250ZXh0LlxuXG4vKipcbiAqIEEgW0RJIHRva2VuXShhcGkvY29yZS9JbmplY3Rpb25Ub2tlbikgdGhhdCBpbmRpY2F0ZXMgd2hpY2ggYW5pbWF0aW9uc1xuICogbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC5cbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVElPTl9NT0RVTEVfVFlQRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjwnTm9vcEFuaW1hdGlvbnMnIHwgJ0Jyb3dzZXJBbmltYXRpb25zJz4oXG4gIG5nRGV2TW9kZSA/ICdBbmltYXRpb25Nb2R1bGVUeXBlJyA6ICcnLFxuKTtcblxuLy8gVE9ETyhjcmlzYmV0byk6IGxpbmsgdG8gQ1NQIGd1aWRlIGhlcmUuXG4vKipcbiAqIFRva2VuIHVzZWQgdG8gY29uZmlndXJlIHRoZSBbQ29udGVudCBTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vd2ViLmRldi9zdHJpY3QtY3NwLykgbm9uY2UgdGhhdFxuICogQW5ndWxhciB3aWxsIGFwcGx5IHdoZW4gaW5zZXJ0aW5nIGlubGluZSBzdHlsZXMuIElmIG5vdCBwcm92aWRlZCwgQW5ndWxhciB3aWxsIGxvb2sgdXAgaXRzIHZhbHVlXG4gKiBmcm9tIHRoZSBgbmdDc3BOb25jZWAgYXR0cmlidXRlIG9mIHRoZSBhcHBsaWNhdGlvbiByb290IG5vZGUuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgQ1NQX05PTkNFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZyB8IG51bGw+KG5nRGV2TW9kZSA/ICdDU1Agbm9uY2UnIDogJycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgLy8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIHVzZSBgcXVlcnlTZWxlY3RvcmAgaGVyZSBzaW5jZSB3ZSBrbm93IHRoYXQgdGhlIG5vbmNlIHdpbGwgYmUgb25cbiAgICAvLyB0aGUgcm9vdCBub2RlLCBidXQgYmVjYXVzZSB0aGUgdG9rZW4gdmFsdWUgaXMgdXNlZCBpbiByZW5kZXJlcnMsIGl0IGhhcyB0byBiZSBhdmFpbGFibGVcbiAgICAvLyAqdmVyeSogZWFybHkgaW4gdGhlIGJvb3RzdHJhcHBpbmcgcHJvY2Vzcy4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgc2hhbGxvdyBzZWFyY2gsIGJlY2F1c2VcbiAgICAvLyB0aGUgYXBwIHdvbid0IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgRE9NIHlldC4gU29tZSBhcHByb2FjaGVzIHRoYXQgd2VyZSBjb25zaWRlcmVkOlxuICAgIC8vIDEuIEZpbmQgdGhlIHJvb3Qgbm9kZSB0aHJvdWdoIGBBcHBsaWNhdGlvblJlZi5jb21wb25lbnRzW2ldLmxvY2F0aW9uYCAtIG5vcm1hbGx5IHRoaXMgd291bGRcbiAgICAvLyBiZSBlbm91Z2ggZm9yIG91ciBwdXJwb3NlcywgYnV0IHRoZSB0b2tlbiBpcyBpbmplY3RlZCB2ZXJ5IGVhcmx5IHNvIHRoZSBgY29tcG9uZW50c2AgYXJyYXlcbiAgICAvLyBpc24ndCBwb3B1bGF0ZWQgeWV0LlxuICAgIC8vIDIuIEZpbmQgdGhlIHJvb3QgYExWaWV3YCB0aHJvdWdoIHRoZSBjdXJyZW50IGBMVmlld2AgLSByZW5kZXJlcnMgYXJlIGEgcHJlcmVxdWlzaXRlIHRvXG4gICAgLy8gY3JlYXRpbmcgdGhlIGBMVmlld2AuIFRoaXMgbWVhbnMgdGhhdCBubyBgTFZpZXdgIHdpbGwgaGF2ZSBiZWVuIGVudGVyZWQgd2hlbiB0aGlzIGZhY3RvcnkgaXNcbiAgICAvLyBpbnZva2VkIGZvciB0aGUgcm9vdCBjb21wb25lbnQuXG4gICAgLy8gMy4gSGF2ZSB0aGUgdG9rZW4gZmFjdG9yeSByZXR1cm4gYCgpID0+IHN0cmluZ2Agd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgbm9uY2UgaXMgcmVxdWVzdGVkIC1cbiAgICAvLyB0aGUgc2xpZ2h0bHkgbGF0ZXIgZXhlY3V0aW9uIGRvZXMgYWxsb3cgdXMgdG8gZ2V0IGFuIGBMVmlld2AgcmVmZXJlbmNlLCBidXQgdGhlIGZhY3QgdGhhdFxuICAgIC8vIGl0IGlzIGEgZnVuY3Rpb24gbWVhbnMgdGhhdCBpdCBjb3VsZCBiZSBleGVjdXRlZCBhdCAqYW55KiB0aW1lIChpbmNsdWRpbmcgaW1tZWRpYXRlbHkpIHdoaWNoXG4gICAgLy8gbWF5IGxlYWQgdG8gd2VpcmQgYnVncy5cbiAgICAvLyA0LiBIYXZlIHRoZSBgQ29tcG9uZW50RmFjdG9yeWAgcmVhZCB0aGUgYXR0cmlidXRlIGFuZCBwcm92aWRlIGl0IHRvIHRoZSBpbmplY3RvciB1bmRlciB0aGVcbiAgICAvLyBob29kIC0gaGFzIHRoZSBzYW1lIHByb2JsZW0gYXMgIzEgYW5kICMyIGluIHRoYXQgdGhlIHJlbmRlcmVyIGlzIHVzZWQgdG8gcXVlcnkgZm9yIHRoZSByb290XG4gICAgLy8gbm9kZSBhbmQgdGhlIG5vbmNlIHZhbHVlIG5lZWRzIHRvIGJlIGF2YWlsYWJsZSB3aGVuIHRoZSByZW5kZXJlciBpcyBjcmVhdGVkLlxuICAgIHJldHVybiBnZXREb2N1bWVudCgpLmJvZHk/LnF1ZXJ5U2VsZWN0b3IoJ1tuZ0NzcE5vbmNlXScpPy5nZXRBdHRyaWJ1dGUoJ25nQ3NwTm9uY2UnKSB8fCBudWxsO1xuICB9LFxufSk7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGltYWdlLXJlbGF0ZWQgb3B0aW9ucy4gQ29udGFpbnM6XG4gKiAtIGJyZWFrcG9pbnRzOiBBbiBhcnJheSBvZiBpbnRlZ2VyIGJyZWFrcG9pbnRzIHVzZWQgdG8gZ2VuZXJhdGVcbiAqICAgICAgc3Jjc2V0cyBmb3IgcmVzcG9uc2l2ZSBpbWFnZXMuXG4gKiAtIGRpc2FibGVJbWFnZVNpemVXYXJuaW5nOiBBIGJvb2xlYW4gdmFsdWUuIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGxcbiAqICAgICAgZGlzYWJsZSBjb25zb2xlIHdhcm5pbmdzIGFib3V0IG92ZXJzaXplZCBpbWFnZXMuXG4gKiAtIGRpc2FibGVJbWFnZUxhenlMb2FkV2FybmluZzogQSBib29sZWFuIHZhbHVlLiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsXG4gKiAgICAgIGRpc2FibGUgY29uc29sZSB3YXJuaW5ncyBhYm91dCBMQ1AgaW1hZ2VzIGNvbmZpZ3VyZWQgd2l0aCBgbG9hZGluZz1cImxhenlcImAuXG4gKiBMZWFybiBtb3JlIGFib3V0IHRoZSByZXNwb25zaXZlIGltYWdlIGNvbmZpZ3VyYXRpb24gaW4gW3RoZSBOZ09wdGltaXplZEltYWdlXG4gKiBndWlkZV0oZ3VpZGUvaW1hZ2Utb3B0aW1pemF0aW9uKS5cbiAqIExlYXJuIG1vcmUgYWJvdXQgaW1hZ2Ugd2FybmluZyBvcHRpb25zIGluIFt0aGUgcmVsYXRlZCBlcnJvciBwYWdlXShlcnJvcnMvTkcwOTEzKS5cbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VDb25maWcgPSB7XG4gIGJyZWFrcG9pbnRzPzogbnVtYmVyW107XG4gIHBsYWNlaG9sZGVyUmVzb2x1dGlvbj86IG51bWJlcjtcbiAgZGlzYWJsZUltYWdlU2l6ZVdhcm5pbmc/OiBib29sZWFuO1xuICBkaXNhYmxlSW1hZ2VMYXp5TG9hZFdhcm5pbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IElNQUdFX0NPTkZJR19ERUZBVUxUUzogSW1hZ2VDb25maWcgPSB7XG4gIGJyZWFrcG9pbnRzOiBbMTYsIDMyLCA0OCwgNjQsIDk2LCAxMjgsIDI1NiwgMzg0LCA2NDAsIDc1MCwgODI4LCAxMDgwLCAxMjAwLCAxOTIwLCAyMDQ4LCAzODQwXSxcbiAgcGxhY2Vob2xkZXJSZXNvbHV0aW9uOiAzMCxcbiAgZGlzYWJsZUltYWdlU2l6ZVdhcm5pbmc6IGZhbHNlLFxuICBkaXNhYmxlSW1hZ2VMYXp5TG9hZFdhcm5pbmc6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjb25maWd1cmVzIHRoZSBpbWFnZSBvcHRpbWl6ZWQgaW1hZ2UgZnVuY3Rpb25hbGl0eS5cbiAqIFNlZSB7QGxpbmsgSW1hZ2VDb25maWd9IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHBhcmFtZXRlcnMgdGhhdFxuICogY2FuIGJlIHVzZWQuXG4gKlxuICogQHNlZSB7QGxpbmsgTmdPcHRpbWl6ZWRJbWFnZX1cbiAqIEBzZWUge0BsaW5rIEltYWdlQ29uZmlnfVxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgSU1BR0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEltYWdlQ29uZmlnPihuZ0Rldk1vZGUgPyAnSW1hZ2VDb25maWcnIDogJycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBJTUFHRV9DT05GSUdfREVGQVVMVFMsXG59KTtcbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb25fdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDekUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWM7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsMkNBQTJDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUU1Qjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN4QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDcEYsVUFBVSxFQUFFLFVBQVU7SUFDdEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSx3REFBd0Q7Q0FDbkYsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsU0FBUyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRCxDQUFDO0FBRUYsOEZBQThGO0FBQzlGLDJGQUEyRjtBQUMzRiwyREFBMkQ7QUFFM0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3ZDLENBQUM7QUFFRiwwQ0FBMEM7QUFDMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFnQixTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3ZGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWiwrRkFBK0Y7UUFDL0YsMEZBQTBGO1FBQzFGLDZGQUE2RjtRQUM3RixzRkFBc0Y7UUFDdEYsOEZBQThGO1FBQzlGLDZGQUE2RjtRQUM3Rix1QkFBdUI7UUFDdkIseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRixrQ0FBa0M7UUFDbEMsK0ZBQStGO1FBQy9GLDRGQUE0RjtRQUM1RiwrRkFBK0Y7UUFDL0YsMEJBQTBCO1FBQzFCLDZGQUE2RjtRQUM3Riw4RkFBOEY7UUFDOUYsK0VBQStFO1FBQy9FLE9BQU8sV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQy9GLENBQUM7Q0FDRixDQUFDLENBQUM7QUFzQkgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWdCO0lBQ2hELFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUM3RixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHVCQUF1QixFQUFFLEtBQUs7SUFDOUIsMkJBQTJCLEVBQUUsS0FBSztDQUNuQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUMxRixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCO0NBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnLi4vZGkvaW5qZWN0aW9uX3Rva2VuJztcbmltcG9ydCB7Z2V0RG9jdW1lbnR9IGZyb20gJy4uL3JlbmRlcjMvaW50ZXJmYWNlcy9kb2N1bWVudCc7XG5cbi8qKlxuICogQSBESSB0b2tlbiByZXByZXNlbnRpbmcgYSBzdHJpbmcgSUQsIHVzZWRcbiAqIHByaW1hcmlseSBmb3IgcHJlZml4aW5nIGFwcGxpY2F0aW9uIGF0dHJpYnV0ZXMgYW5kIENTUyBzdHlsZXMgd2hlblxuICoge0BsaW5rIFZpZXdFbmNhcHN1bGF0aW9uI0VtdWxhdGVkfSBpcyBiZWluZyB1c2VkLlxuICpcbiAqIFRoZSB0b2tlbiBpcyBuZWVkZWQgaW4gY2FzZXMgd2hlbiBtdWx0aXBsZSBhcHBsaWNhdGlvbnMgYXJlIGJvb3RzdHJhcHBlZCBvbiBhIHBhZ2VcbiAqIChmb3IgZXhhbXBsZSwgdXNpbmcgYGJvb3RzdHJhcEFwcGxpY2F0aW9uYCBjYWxscykuIEluIHRoaXMgY2FzZSwgZW5zdXJlIHRoYXQgdGhvc2UgYXBwbGljYXRpb25zXG4gKiBoYXZlIGRpZmZlcmVudCBgQVBQX0lEYCB2YWx1ZSBzZXR1cC4gRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihDb21wb25lbnRBLCB7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHsgcHJvdmlkZTogQVBQX0lELCB1c2VWYWx1ZTogJ2FwcC1hJyB9LFxuICogICAgIC8vIC4uLiBvdGhlciBwcm92aWRlcnMgLi4uXG4gKiAgIF1cbiAqIH0pO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKENvbXBvbmVudEIsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgeyBwcm92aWRlOiBBUFBfSUQsIHVzZVZhbHVlOiAnYXBwLWInIH0sXG4gKiAgICAgLy8gLi4uIG90aGVyIHByb3ZpZGVycyAuLi5cbiAqICAgXVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBCeSBkZWZhdWx0LCB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGFwcGxpY2F0aW9uIGJvb3RzdHJhcHBlZCwgeW91IGRvbid0IG5lZWQgdG8gcHJvdmlkZSB0aGVcbiAqIGBBUFBfSURgIHRva2VuICh0aGUgYG5nYCB3aWxsIGJlIHVzZWQgYXMgYW4gYXBwIElEKS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfSUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihuZ0Rldk1vZGUgPyAnQXBwSWQnIDogJycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0FQUF9JRCxcbn0pO1xuXG4vKiogRGVmYXVsdCB2YWx1ZSBvZiB0aGUgYEFQUF9JRGAgdG9rZW4uICovXG5jb25zdCBERUZBVUxUX0FQUF9JRCA9ICduZyc7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gYSBwbGF0Zm9ybSBpcyBpbml0aWFsaXplZC5cbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0lOSVRJQUxJWkVSID0gbmV3IEluamVjdGlvblRva2VuPFJlYWRvbmx5QXJyYXk8KCkgPT4gdm9pZD4+KFxuICBuZ0Rldk1vZGUgPyAnUGxhdGZvcm0gSW5pdGlhbGl6ZXInIDogJycsXG4pO1xuXG4vKipcbiAqIEEgdG9rZW4gdGhhdCBpbmRpY2F0ZXMgYW4gb3BhcXVlIHBsYXRmb3JtIElELlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1fSUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JqZWN0PihuZ0Rldk1vZGUgPyAnUGxhdGZvcm0gSUQnIDogJycsIHtcbiAgcHJvdmlkZWRJbjogJ3BsYXRmb3JtJyxcbiAgZmFjdG9yeTogKCkgPT4gJ3Vua25vd24nLCAvLyBzZXQgYSBkZWZhdWx0IHBsYXRmb3JtIG5hbWUsIHdoZW4gbm9uZSBzZXQgZXhwbGljaXRseVxufSk7XG5cbi8qKlxuICogQSBESSB0b2tlbiB0aGF0IGluZGljYXRlcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2ZcbiAqIHRoZSBhcHBsaWNhdGlvblxuICogQHB1YmxpY0FwaVxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfUk9PVF9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgbmdEZXZNb2RlID8gJ0FwcGxpY2F0aW9uIFBhY2thZ2VzIFJvb3QgVVJMJyA6ICcnLFxuKTtcblxuLy8gV2Uga2VlcCB0aGlzIHRva2VuIGhlcmUsIHJhdGhlciB0aGFuIHRoZSBhbmltYXRpb25zIHBhY2thZ2UsIHNvIHRoYXQgbW9kdWxlcyB0aGF0IG9ubHkgY2FyZVxuLy8gYWJvdXQgd2hpY2ggYW5pbWF0aW9ucyBtb2R1bGUgaXMgbG9hZGVkIChlLmcuIHRoZSBDREspIGNhbiByZXRyaWV2ZSBpdCB3aXRob3V0IGhhdmluZyB0b1xuLy8gaW5jbHVkZSBleHRyYSBkZXBlbmRlbmNpZXMuIFNlZSAjNDQ5NzAgZm9yIG1vcmUgY29udGV4dC5cblxuLyoqXG4gKiBBIFtESSB0b2tlbl0oYXBpL2NvcmUvSW5qZWN0aW9uVG9rZW4pIHRoYXQgaW5kaWNhdGVzIHdoaWNoIGFuaW1hdGlvbnNcbiAqIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fTU9EVUxFX1RZUEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48J05vb3BBbmltYXRpb25zJyB8ICdCcm93c2VyQW5pbWF0aW9ucyc+KFxuICBuZ0Rldk1vZGUgPyAnQW5pbWF0aW9uTW9kdWxlVHlwZScgOiAnJyxcbik7XG5cbi8vIFRPRE8oY3Jpc2JldG8pOiBsaW5rIHRvIENTUCBndWlkZSBoZXJlLlxuLyoqXG4gKiBUb2tlbiB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgW0NvbnRlbnQgU2VjdXJpdHkgUG9saWN5XShodHRwczovL3dlYi5kZXYvc3RyaWN0LWNzcC8pIG5vbmNlIHRoYXRcbiAqIEFuZ3VsYXIgd2lsbCBhcHBseSB3aGVuIGluc2VydGluZyBpbmxpbmUgc3R5bGVzLiBJZiBub3QgcHJvdmlkZWQsIEFuZ3VsYXIgd2lsbCBsb29rIHVwIGl0cyB2YWx1ZVxuICogZnJvbSB0aGUgYG5nQ3NwTm9uY2VgIGF0dHJpYnV0ZSBvZiB0aGUgYXBwbGljYXRpb24gcm9vdCBub2RlLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IENTUF9OT05DRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmcgfCBudWxsPihuZ0Rldk1vZGUgPyAnQ1NQIG5vbmNlJyA6ICcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIC8vIElkZWFsbHkgd2Ugd291bGRuJ3QgaGF2ZSB0byB1c2UgYHF1ZXJ5U2VsZWN0b3JgIGhlcmUgc2luY2Ugd2Uga25vdyB0aGF0IHRoZSBub25jZSB3aWxsIGJlIG9uXG4gICAgLy8gdGhlIHJvb3Qgbm9kZSwgYnV0IGJlY2F1c2UgdGhlIHRva2VuIHZhbHVlIGlzIHVzZWQgaW4gcmVuZGVyZXJzLCBpdCBoYXMgdG8gYmUgYXZhaWxhYmxlXG4gICAgLy8gKnZlcnkqIGVhcmx5IGluIHRoZSBib290c3RyYXBwaW5nIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHNoYWxsb3cgc2VhcmNoLCBiZWNhdXNlXG4gICAgLy8gdGhlIGFwcCB3b24ndCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIERPTSB5ZXQuIFNvbWUgYXBwcm9hY2hlcyB0aGF0IHdlcmUgY29uc2lkZXJlZDpcbiAgICAvLyAxLiBGaW5kIHRoZSByb290IG5vZGUgdGhyb3VnaCBgQXBwbGljYXRpb25SZWYuY29tcG9uZW50c1tpXS5sb2NhdGlvbmAgLSBub3JtYWxseSB0aGlzIHdvdWxkXG4gICAgLy8gYmUgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMsIGJ1dCB0aGUgdG9rZW4gaXMgaW5qZWN0ZWQgdmVyeSBlYXJseSBzbyB0aGUgYGNvbXBvbmVudHNgIGFycmF5XG4gICAgLy8gaXNuJ3QgcG9wdWxhdGVkIHlldC5cbiAgICAvLyAyLiBGaW5kIHRoZSByb290IGBMVmlld2AgdGhyb3VnaCB0aGUgY3VycmVudCBgTFZpZXdgIC0gcmVuZGVyZXJzIGFyZSBhIHByZXJlcXVpc2l0ZSB0b1xuICAgIC8vIGNyZWF0aW5nIHRoZSBgTFZpZXdgLiBUaGlzIG1lYW5zIHRoYXQgbm8gYExWaWV3YCB3aWxsIGhhdmUgYmVlbiBlbnRlcmVkIHdoZW4gdGhpcyBmYWN0b3J5IGlzXG4gICAgLy8gaW52b2tlZCBmb3IgdGhlIHJvb3QgY29tcG9uZW50LlxuICAgIC8vIDMuIEhhdmUgdGhlIHRva2VuIGZhY3RvcnkgcmV0dXJuIGAoKSA9PiBzdHJpbmdgIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIG5vbmNlIGlzIHJlcXVlc3RlZCAtXG4gICAgLy8gdGhlIHNsaWdodGx5IGxhdGVyIGV4ZWN1dGlvbiBkb2VzIGFsbG93IHVzIHRvIGdldCBhbiBgTFZpZXdgIHJlZmVyZW5jZSwgYnV0IHRoZSBmYWN0IHRoYXRcbiAgICAvLyBpdCBpcyBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgaXQgY291bGQgYmUgZXhlY3V0ZWQgYXQgKmFueSogdGltZSAoaW5jbHVkaW5nIGltbWVkaWF0ZWx5KSB3aGljaFxuICAgIC8vIG1heSBsZWFkIHRvIHdlaXJkIGJ1Z3MuXG4gICAgLy8gNC4gSGF2ZSB0aGUgYENvbXBvbmVudEZhY3RvcnlgIHJlYWQgdGhlIGF0dHJpYnV0ZSBhbmQgcHJvdmlkZSBpdCB0byB0aGUgaW5qZWN0b3IgdW5kZXIgdGhlXG4gICAgLy8gaG9vZCAtIGhhcyB0aGUgc2FtZSBwcm9ibGVtIGFzICMxIGFuZCAjMiBpbiB0aGF0IHRoZSByZW5kZXJlciBpcyB1c2VkIHRvIHF1ZXJ5IGZvciB0aGUgcm9vdFxuICAgIC8vIG5vZGUgYW5kIHRoZSBub25jZSB2YWx1ZSBuZWVkcyB0byBiZSBhdmFpbGFibGUgd2hlbiB0aGUgcmVuZGVyZXIgaXMgY3JlYXRlZC5cbiAgICByZXR1cm4gZ2V0RG9jdW1lbnQoKS5ib2R5Py5xdWVyeVNlbGVjdG9yKCdbbmdDc3BOb25jZV0nKT8uZ2V0QXR0cmlidXRlKCduZ0NzcE5vbmNlJykgfHwgbnVsbDtcbiAgfSxcbn0pO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBpbWFnZS1yZWxhdGVkIG9wdGlvbnMuIENvbnRhaW5zOlxuICogLSBicmVha3BvaW50czogQW4gYXJyYXkgb2YgaW50ZWdlciBicmVha3BvaW50cyB1c2VkIHRvIGdlbmVyYXRlXG4gKiAgICAgIHNyY3NldHMgZm9yIHJlc3BvbnNpdmUgaW1hZ2VzLlxuICogLSBkaXNhYmxlSW1hZ2VTaXplV2FybmluZzogQSBib29sZWFuIHZhbHVlLiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsXG4gKiAgICAgIGRpc2FibGUgY29uc29sZSB3YXJuaW5ncyBhYm91dCBvdmVyc2l6ZWQgaW1hZ2VzLlxuICogLSBkaXNhYmxlSW1hZ2VMYXp5TG9hZFdhcm5pbmc6IEEgYm9vbGVhbiB2YWx1ZS4gU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbFxuICogICAgICBkaXNhYmxlIGNvbnNvbGUgd2FybmluZ3MgYWJvdXQgTENQIGltYWdlcyBjb25maWd1cmVkIHdpdGggYGxvYWRpbmc9XCJsYXp5XCJgLlxuICogTGVhcm4gbW9yZSBhYm91dCB0aGUgcmVzcG9uc2l2ZSBpbWFnZSBjb25maWd1cmF0aW9uIGluIFt0aGUgTmdPcHRpbWl6ZWRJbWFnZVxuICogZ3VpZGVdKGd1aWRlL2ltYWdlLW9wdGltaXphdGlvbikuXG4gKiBMZWFybiBtb3JlIGFib3V0IGltYWdlIHdhcm5pbmcgb3B0aW9ucyBpbiBbdGhlIHJlbGF0ZWQgZXJyb3IgcGFnZV0oZXJyb3JzL05HMDkxMykuXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlQ29uZmlnID0ge1xuICBicmVha3BvaW50cz86IG51bWJlcltdO1xuICBwbGFjZWhvbGRlclJlc29sdXRpb24/OiBudW1iZXI7XG4gIGRpc2FibGVJbWFnZVNpemVXYXJuaW5nPzogYm9vbGVhbjtcbiAgZGlzYWJsZUltYWdlTGF6eUxvYWRXYXJuaW5nPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBJTUFHRV9DT05GSUdfREVGQVVMVFM6IEltYWdlQ29uZmlnID0ge1xuICBicmVha3BvaW50czogWzE2LCAzMiwgNDgsIDY0LCA5NiwgMTI4LCAyNTYsIDM4NCwgNjQwLCA3NTAsIDgyOCwgMTA4MCwgMTIwMCwgMTkyMCwgMjA0OCwgMzg0MF0sXG4gIHBsYWNlaG9sZGVyUmVzb2x1dGlvbjogMzAsXG4gIGRpc2FibGVJbWFnZVNpemVXYXJuaW5nOiBmYWxzZSxcbiAgZGlzYWJsZUltYWdlTGF6eUxvYWRXYXJuaW5nOiBmYWxzZSxcbn07XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY29uZmlndXJlcyB0aGUgaW1hZ2Ugb3B0aW1pemVkIGltYWdlIGZ1bmN0aW9uYWxpdHkuXG4gKiBTZWUge0BsaW5rIEltYWdlQ29uZmlnfSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBwYXJhbWV0ZXJzIHRoYXRcbiAqIGNhbiBiZSB1c2VkLlxuICpcbiAqIEBzZWUge0BsaW5rIE5nT3B0aW1pemVkSW1hZ2V9XG4gKiBAc2VlIHtAbGluayBJbWFnZUNvbmZpZ31cbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IElNQUdFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbWFnZUNvbmZpZz4obmdEZXZNb2RlID8gJ0ltYWdlQ29uZmlnJyA6ICcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gSU1BR0VfQ09ORklHX0RFRkFVTFRTLFxufSk7XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { internalProvideZoneChangeDetection } from '../change_detection/scheduling/ng_zone_scheduling';
9
9
  import { createOrReusePlatformInjector } from '../platform/platform';
@@ -55,4 +55,4 @@ export function internalCreateApplication(config) {
55
55
  return Promise.reject(e);
56
56
  }
57
57
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FwcGxpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vY3JlYXRlX2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSXJHLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXZFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BSXpDO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUMsR0FBRyxNQUFNLENBQUM7UUFFaEUsSUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkYsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsNkJBQTZCLENBQUMsaUJBQXFDLENBQUMsQ0FBQztRQUU5RiwwRkFBMEY7UUFDMUYsK0VBQStFO1FBQy9FLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxFQUFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUM7WUFDOUUsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDeEIsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksNkJBQTZCLENBQUM7WUFDaEQsU0FBUyxFQUFFLGVBQWU7WUFDMUIsTUFBTSxFQUFFLGdCQUF1QztZQUMvQyxTQUFTLEVBQUUsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEYsd0ZBQXdGO1lBQ3hGLDhEQUE4RDtZQUM5RCwwQkFBMEIsRUFBRSxLQUFLO1NBQ2xDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO1lBQ2YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzVCLGdCQUFnQjtZQUNoQixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtpbnRlcm5hbFByb3ZpZGVab25lQ2hhbmdlRGV0ZWN0aW9ufSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL3NjaGVkdWxpbmcvbmdfem9uZV9zY2hlZHVsaW5nJztcbmltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnLi4vZGkvaW50ZXJmYWNlL3Byb3ZpZGVyJztcbmltcG9ydCB7RW52aXJvbm1lbnRJbmplY3Rvcn0gZnJvbSAnLi4vZGkvcjNfaW5qZWN0b3InO1xuaW1wb3J0IHtUeXBlfSBmcm9tICcuLi9pbnRlcmZhY2UvdHlwZSc7XG5pbXBvcnQge2NyZWF0ZU9yUmV1c2VQbGF0Zm9ybUluamVjdG9yfSBmcm9tICcuLi9wbGF0Zm9ybS9wbGF0Zm9ybSc7XG5pbXBvcnQge2Fzc2VydFN0YW5kYWxvbmVDb21wb25lbnRUeXBlfSBmcm9tICcuLi9yZW5kZXIzL2Vycm9ycyc7XG5pbXBvcnQge0Vudmlyb25tZW50TmdNb2R1bGVSZWZBZGFwdGVyfSBmcm9tICcuLi9yZW5kZXIzL25nX21vZHVsZV9yZWYnO1xuaW1wb3J0IHtOZ1pvbmV9IGZyb20gJy4uL3pvbmUvbmdfem9uZSc7XG5cbmltcG9ydCB7X2NhbGxBbmRSZXBvcnRUb0Vycm9ySGFuZGxlciwgQXBwbGljYXRpb25SZWZ9IGZyb20gJy4vYXBwbGljYXRpb25fcmVmJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVyfSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL3NjaGVkdWxpbmcvem9uZWxlc3Nfc2NoZWR1bGluZyc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblNjaGVkdWxlckltcGx9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rpb24vc2NoZWR1bGluZy96b25lbGVzc19zY2hlZHVsaW5nX2ltcGwnO1xuaW1wb3J0IHtib290c3RyYXB9IGZyb20gJy4uL3BsYXRmb3JtL2Jvb3RzdHJhcCc7XG5cbi8qKlxuICogSW50ZXJuYWwgY3JlYXRlIGFwcGxpY2F0aW9uIEFQSSB0aGF0IGltcGxlbWVudHMgdGhlIGNvcmUgYXBwbGljYXRpb24gY3JlYXRpb24gbG9naWMgYW5kIG9wdGlvbmFsXG4gKiBib290c3RyYXAgbG9naWMuXG4gKlxuICogUGxhdGZvcm1zIChzdWNoIGFzIGBwbGF0Zm9ybS1icm93c2VyYCkgbWF5IHJlcXVpcmUgZGlmZmVyZW50IHNldCBvZiBhcHBsaWNhdGlvbiBhbmQgcGxhdGZvcm1cbiAqIHByb3ZpZGVycyBmb3IgYW4gYXBwbGljYXRpb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBBcyBhIHJlc3VsdCwgcGxhdGZvcm1zIG1heSB1c2UgdGhpcyBmdW5jdGlvblxuICogaW50ZXJuYWxseSBhbmQgc3VwcGx5IHRoZSBuZWNlc3NhcnkgcHJvdmlkZXJzIGR1cmluZyB0aGUgYm9vdHN0cmFwLCB3aGlsZSBleHBvc2luZ1xuICogcGxhdGZvcm0tc3BlY2lmaWMgQVBJcyBhcyBhIHBhcnQgb2YgdGhlaXIgcHVibGljIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXR1cm5zIGFuIGBBcHBsaWNhdGlvblJlZmAgaW5zdGFuY2Ugb25jZSByZXNvbHZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxDcmVhdGVBcHBsaWNhdGlvbihjb25maWc6IHtcbiAgcm9vdENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG4gIGFwcFByb3ZpZGVycz86IEFycmF5PFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnM+O1xuICBwbGF0Zm9ybVByb3ZpZGVycz86IFByb3ZpZGVyW107XG59KTogUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHtyb290Q29tcG9uZW50LCBhcHBQcm92aWRlcnMsIHBsYXRmb3JtUHJvdmlkZXJzfSA9IGNvbmZpZztcblxuICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiByb290Q29tcG9uZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydFN0YW5kYWxvbmVDb21wb25lbnRUeXBlKHJvb3RDb21wb25lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYXRmb3JtSW5qZWN0b3IgPSBjcmVhdGVPclJldXNlUGxhdGZvcm1JbmplY3RvcihwbGF0Zm9ybVByb3ZpZGVycyBhcyBTdGF0aWNQcm92aWRlcltdKTtcblxuICAgIC8vIENyZWF0ZSByb290IGFwcGxpY2F0aW9uIGluamVjdG9yIGJhc2VkIG9uIGEgc2V0IG9mIHByb3ZpZGVycyBjb25maWd1cmVkIGF0IHRoZSBwbGF0Zm9ybVxuICAgIC8vIGJvb3RzdHJhcCBsZXZlbCBhcyB3ZWxsIGFzIHByb3ZpZGVycyBwYXNzZWQgdG8gdGhlIGJvb3RzdHJhcCBjYWxsIGJ5IGEgdXNlci5cbiAgICBjb25zdCBhbGxBcHBQcm92aWRlcnMgPSBbXG4gICAgICBpbnRlcm5hbFByb3ZpZGVab25lQ2hhbmdlRGV0ZWN0aW9uKHt9KSxcbiAgICAgIHtwcm92aWRlOiBDaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXIsIHVzZUV4aXN0aW5nOiBDaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXJJbXBsfSxcbiAgICAgIC4uLihhcHBQcm92aWRlcnMgfHwgW10pLFxuICAgIF07XG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBFbnZpcm9ubWVudE5nTW9kdWxlUmVmQWRhcHRlcih7XG4gICAgICBwcm92aWRlcnM6IGFsbEFwcFByb3ZpZGVycyxcbiAgICAgIHBhcmVudDogcGxhdGZvcm1JbmplY3RvciBhcyBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgZGVidWdOYW1lOiB0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUgPyAnRW52aXJvbm1lbnQgSW5qZWN0b3InIDogJycsXG4gICAgICAvLyBXZSBza2lwIGVudmlyb25tZW50IGluaXRpYWxpemVycyBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHRoZW0gaW5zaWRlIHRoZSBOZ1pvbmUsIHdoaWNoXG4gICAgICAvLyBoYXBwZW5zIGFmdGVyIHdlIGdldCB0aGUgTmdab25lIGluc3RhbmNlIGZyb20gdGhlIEluamVjdG9yLlxuICAgICAgcnVuRW52aXJvbm1lbnRJbml0aWFsaXplcnM6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvb3RzdHJhcCh7XG4gICAgICByM0luamVjdG9yOiBhZGFwdGVyLmluamVjdG9yLFxuICAgICAgcGxhdGZvcm1JbmplY3RvcixcbiAgICAgIHJvb3RDb21wb25lbnQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gIH1cbn1cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FwcGxpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXBwbGljYXRpb24vY3JlYXRlX2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSXJHLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXZFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BSXpDO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUMsR0FBRyxNQUFNLENBQUM7UUFFaEUsSUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkYsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsNkJBQTZCLENBQUMsaUJBQXFDLENBQUMsQ0FBQztRQUU5RiwwRkFBMEY7UUFDMUYsK0VBQStFO1FBQy9FLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxFQUFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUM7WUFDOUUsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDeEIsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksNkJBQTZCLENBQUM7WUFDaEQsU0FBUyxFQUFFLGVBQWU7WUFDMUIsTUFBTSxFQUFFLGdCQUF1QztZQUMvQyxTQUFTLEVBQUUsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEYsd0ZBQXdGO1lBQ3hGLDhEQUE4RDtZQUM5RCwwQkFBMEIsRUFBRSxLQUFLO1NBQ2xDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO1lBQ2YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzVCLGdCQUFnQjtZQUNoQixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCB7aW50ZXJuYWxQcm92aWRlWm9uZUNoYW5nZURldGVjdGlvbn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdGlvbi9zY2hlZHVsaW5nL25nX3pvbmVfc2NoZWR1bGluZyc7XG5pbXBvcnQge0Vudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJy4uL2RpL2ludGVyZmFjZS9wcm92aWRlcic7XG5pbXBvcnQge0Vudmlyb25tZW50SW5qZWN0b3J9IGZyb20gJy4uL2RpL3IzX2luamVjdG9yJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3R5cGUnO1xuaW1wb3J0IHtjcmVhdGVPclJldXNlUGxhdGZvcm1JbmplY3Rvcn0gZnJvbSAnLi4vcGxhdGZvcm0vcGxhdGZvcm0nO1xuaW1wb3J0IHthc3NlcnRTdGFuZGFsb25lQ29tcG9uZW50VHlwZX0gZnJvbSAnLi4vcmVuZGVyMy9lcnJvcnMnO1xuaW1wb3J0IHtFbnZpcm9ubWVudE5nTW9kdWxlUmVmQWRhcHRlcn0gZnJvbSAnLi4vcmVuZGVyMy9uZ19tb2R1bGVfcmVmJztcbmltcG9ydCB7Tmdab25lfSBmcm9tICcuLi96b25lL25nX3pvbmUnO1xuXG5pbXBvcnQge19jYWxsQW5kUmVwb3J0VG9FcnJvckhhbmRsZXIsIEFwcGxpY2F0aW9uUmVmfSBmcm9tICcuL2FwcGxpY2F0aW9uX3JlZic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblNjaGVkdWxlcn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdGlvbi9zY2hlZHVsaW5nL3pvbmVsZXNzX3NjaGVkdWxpbmcnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXJJbXBsfSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL3NjaGVkdWxpbmcvem9uZWxlc3Nfc2NoZWR1bGluZ19pbXBsJztcbmltcG9ydCB7Ym9vdHN0cmFwfSBmcm9tICcuLi9wbGF0Zm9ybS9ib290c3RyYXAnO1xuXG4vKipcbiAqIEludGVybmFsIGNyZWF0ZSBhcHBsaWNhdGlvbiBBUEkgdGhhdCBpbXBsZW1lbnRzIHRoZSBjb3JlIGFwcGxpY2F0aW9uIGNyZWF0aW9uIGxvZ2ljIGFuZCBvcHRpb25hbFxuICogYm9vdHN0cmFwIGxvZ2ljLlxuICpcbiAqIFBsYXRmb3JtcyAoc3VjaCBhcyBgcGxhdGZvcm0tYnJvd3NlcmApIG1heSByZXF1aXJlIGRpZmZlcmVudCBzZXQgb2YgYXBwbGljYXRpb24gYW5kIHBsYXRmb3JtXG4gKiBwcm92aWRlcnMgZm9yIGFuIGFwcGxpY2F0aW9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gQXMgYSByZXN1bHQsIHBsYXRmb3JtcyBtYXkgdXNlIHRoaXMgZnVuY3Rpb25cbiAqIGludGVybmFsbHkgYW5kIHN1cHBseSB0aGUgbmVjZXNzYXJ5IHByb3ZpZGVycyBkdXJpbmcgdGhlIGJvb3RzdHJhcCwgd2hpbGUgZXhwb3NpbmdcbiAqIHBsYXRmb3JtLXNwZWNpZmljIEFQSXMgYXMgYSBwYXJ0IG9mIHRoZWlyIHB1YmxpYyBBUEkuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmV0dXJucyBhbiBgQXBwbGljYXRpb25SZWZgIGluc3RhbmNlIG9uY2UgcmVzb2x2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsQ3JlYXRlQXBwbGljYXRpb24oY29uZmlnOiB7XG4gIHJvb3RDb21wb25lbnQ/OiBUeXBlPHVua25vd24+O1xuICBhcHBQcm92aWRlcnM/OiBBcnJheTxQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzPjtcbiAgcGxhdGZvcm1Qcm92aWRlcnM/OiBQcm92aWRlcltdO1xufSk6IFByb21pc2U8QXBwbGljYXRpb25SZWY+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7cm9vdENvbXBvbmVudCwgYXBwUHJvdmlkZXJzLCBwbGF0Zm9ybVByb3ZpZGVyc30gPSBjb25maWc7XG5cbiAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgcm9vdENvbXBvbmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NlcnRTdGFuZGFsb25lQ29tcG9uZW50VHlwZShyb290Q29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF0Zm9ybUluamVjdG9yID0gY3JlYXRlT3JSZXVzZVBsYXRmb3JtSW5qZWN0b3IocGxhdGZvcm1Qcm92aWRlcnMgYXMgU3RhdGljUHJvdmlkZXJbXSk7XG5cbiAgICAvLyBDcmVhdGUgcm9vdCBhcHBsaWNhdGlvbiBpbmplY3RvciBiYXNlZCBvbiBhIHNldCBvZiBwcm92aWRlcnMgY29uZmlndXJlZCBhdCB0aGUgcGxhdGZvcm1cbiAgICAvLyBib290c3RyYXAgbGV2ZWwgYXMgd2VsbCBhcyBwcm92aWRlcnMgcGFzc2VkIHRvIHRoZSBib290c3RyYXAgY2FsbCBieSBhIHVzZXIuXG4gICAgY29uc3QgYWxsQXBwUHJvdmlkZXJzID0gW1xuICAgICAgaW50ZXJuYWxQcm92aWRlWm9uZUNoYW5nZURldGVjdGlvbih7fSksXG4gICAgICB7cHJvdmlkZTogQ2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVyLCB1c2VFeGlzdGluZzogQ2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVySW1wbH0sXG4gICAgICAuLi4oYXBwUHJvdmlkZXJzIHx8IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgRW52aXJvbm1lbnROZ01vZHVsZVJlZkFkYXB0ZXIoe1xuICAgICAgcHJvdmlkZXJzOiBhbGxBcHBQcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHBsYXRmb3JtSW5qZWN0b3IgYXMgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIGRlYnVnTmFtZTogdHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlID8gJ0Vudmlyb25tZW50IEluamVjdG9yJyA6ICcnLFxuICAgICAgLy8gV2Ugc2tpcCBlbnZpcm9ubWVudCBpbml0aWFsaXplcnMgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biB0aGVtIGluc2lkZSB0aGUgTmdab25lLCB3aGljaFxuICAgICAgLy8gaGFwcGVucyBhZnRlciB3ZSBnZXQgdGhlIE5nWm9uZSBpbnN0YW5jZSBmcm9tIHRoZSBJbmplY3Rvci5cbiAgICAgIHJ1bkVudmlyb25tZW50SW5pdGlhbGl6ZXJzOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBib290c3RyYXAoe1xuICAgICAgcjNJbmplY3RvcjogYWRhcHRlci5pbmplY3RvcixcbiAgICAgIHBsYXRmb3JtSW5qZWN0b3IsXG4gICAgICByb290Q29tcG9uZW50LFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { assertInInjectionContext } from '../../di';
9
9
  import { createInputSignal, } from './input_signal';
@@ -71,4 +71,4 @@ export const input = (() => {
71
71
  inputFunction.required = inputRequiredFunction;
72
72
  return inputFunction;
73
73
  })();
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvaW5wdXQvaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxELE9BQU8sRUFDTCxpQkFBaUIsR0FNbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxNQUFNLFVBQVUsYUFBYSxDQUMzQixZQUFvQixFQUNwQixJQUFrQztJQUVsQyxTQUFTLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsSUFBa0M7SUFFbEMsU0FBUyxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8saUJBQWlCLENBQUMsb0JBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQXVERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQWtCLENBQUMsR0FBRyxFQUFFO0lBQ3hDLHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzVFLGFBQXFCLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO0lBQ3hELE9BQU8sYUFBZ0YsQ0FBQztBQUMxRixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7YXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICcuLi8uLi9kaSc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUlucHV0U2lnbmFsLFxuICBJbnB1dE9wdGlvbnMsXG4gIElucHV0T3B0aW9uc1dpdGhvdXRUcmFuc2Zvcm0sXG4gIElucHV0T3B0aW9uc1dpdGhUcmFuc2Zvcm0sXG4gIElucHV0U2lnbmFsLFxuICBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm0sXG59IGZyb20gJy4vaW5wdXRfc2lnbmFsJztcbmltcG9ydCB7UkVRVUlSRURfVU5TRVRfVkFMVUV9IGZyb20gJy4vaW5wdXRfc2lnbmFsX25vZGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5wdXRGdW5jdGlvbjxSZWFkVCwgV3JpdGVUPihcbiAgaW5pdGlhbFZhbHVlPzogUmVhZFQsXG4gIG9wdHM/OiBJbnB1dE9wdGlvbnM8UmVhZFQsIFdyaXRlVD4sXG4pOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08UmVhZFQgfCB1bmRlZmluZWQsIFdyaXRlVD4ge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGlucHV0KTtcbiAgcmV0dXJuIGNyZWF0ZUlucHV0U2lnbmFsKGluaXRpYWxWYWx1ZSwgb3B0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFJlcXVpcmVkRnVuY3Rpb248UmVhZFQsIFdyaXRlVCA9IFJlYWRUPihcbiAgb3B0cz86IElucHV0T3B0aW9uczxSZWFkVCwgV3JpdGVUPixcbik6IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxSZWFkVCwgV3JpdGVUPiB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoaW5wdXQpO1xuICByZXR1cm4gY3JlYXRlSW5wdXRTaWduYWwoUkVRVUlSRURfVU5TRVRfVkFMVUUgYXMgbmV2ZXIsIG9wdHMpO1xufVxuXG4vKipcbiAqIFRoZSBgaW5wdXRgIGZ1bmN0aW9uIGFsbG93cyBkZWNsYXJhdGlvbiBvZiBpbnB1dHMgaW4gZGlyZWN0aXZlcyBhbmRcbiAqIGNvbXBvbmVudHMuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGV4cG9zZXMgYW4gQVBJIGZvciBhbHNvIGRlY2xhcmluZyByZXF1aXJlZCBpbnB1dHMgdmlhIHRoZVxuICogYGlucHV0LnJlcXVpcmVkYCBmdW5jdGlvbi5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICogQGRvY3NQcml2YXRlIElnbm9yZWQgYmVjYXVzZSBgaW5wdXRgIGlzIHRoZSBjYW5vbmljYWwgQVBJIGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0RnVuY3Rpb24ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYW4gaW5wdXQgb2YgdHlwZSBgVGAgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIGB1bmRlZmluZWRgLlxuICAgKiBBbmd1bGFyIHdpbGwgaW1wbGljaXRseSB1c2UgYHVuZGVmaW5lZGAgYXMgaW5pdGlhbCB2YWx1ZS5cbiAgICovXG4gIDxUPigpOiBJbnB1dFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbiAgLyoqIERlY2xhcmVzIGFuIGlucHV0IG9mIHR5cGUgYFRgIHdpdGggYW4gZXhwbGljaXQgaW5pdGlhbCB2YWx1ZS4gKi9cbiAgPFQ+KGluaXRpYWxWYWx1ZTogVCwgb3B0cz86IElucHV0T3B0aW9uc1dpdGhvdXRUcmFuc2Zvcm08VD4pOiBJbnB1dFNpZ25hbDxUPjtcbiAgLyoqXG4gICAqIERlY2xhcmVzIGFuIGlucHV0IG9mIHR5cGUgYFRgIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBhbmQgYSB0cmFuc2Zvcm1cbiAgICogZnVuY3Rpb24uXG4gICAqXG4gICAqIFRoZSBpbnB1dCBhY2NlcHRzIHZhbHVlcyBvZiB0eXBlIGBUcmFuc2Zvcm1UYCBhbmQgdGhlIGdpdmVuXG4gICAqIHRyYW5zZm9ybSBmdW5jdGlvbiB3aWxsIHRyYW5zZm9ybSB0aGUgdmFsdWUgdG8gdHlwZSBgVGAuXG4gICAqL1xuICA8VCwgVHJhbnNmb3JtVD4oXG4gICAgaW5pdGlhbFZhbHVlOiBULFxuICAgIG9wdHM6IElucHV0T3B0aW9uc1dpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD4sXG4gICk6IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxULCBUcmFuc2Zvcm1UPjtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSByZXF1aXJlZCBpbnB1dC5cbiAgICpcbiAgICogQ29uc3VtZXJzIG9mIHlvdXIgZGlyZWN0aXZlL2NvbXBvbmVudCBuZWVkIHRvIGJpbmQgdG8gdGhpc1xuICAgKiBpbnB1dC4gSWYgdW5zZXQsIGEgY29tcGlsZSB0aW1lIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuXG4gICAqXG4gICAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gICAqL1xuICByZXF1aXJlZDoge1xuICAgIC8qKiBEZWNsYXJlcyBhIHJlcXVpcmVkIGlucHV0IG9mIHR5cGUgYFRgLiAqL1xuICAgIDxUPihvcHRzPzogSW5wdXRPcHRpb25zV2l0aG91dFRyYW5zZm9ybTxUPik6IElucHV0U2lnbmFsPFQ+O1xuICAgIC8qKlxuICAgICAqIERlY2xhcmVzIGEgcmVxdWlyZWQgaW5wdXQgb2YgdHlwZSBgVGAgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSBpbnB1dCBhY2NlcHRzIHZhbHVlcyBvZiB0eXBlIGBUcmFuc2Zvcm1UYCBhbmQgdGhlIGdpdmVuXG4gICAgICogdHJhbnNmb3JtIGZ1bmN0aW9uIHdpbGwgdHJhbnNmb3JtIHRoZSB2YWx1ZSB0byB0eXBlIGBUYC5cbiAgICAgKi9cbiAgICA8VCwgVHJhbnNmb3JtVD4oXG4gICAgICBvcHRzOiBJbnB1dE9wdGlvbnNXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+LFxuICAgICk6IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxULCBUcmFuc2Zvcm1UPjtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgYGlucHV0YCBmdW5jdGlvbiBhbGxvd3MgZGVjbGFyYXRpb24gb2YgQW5ndWxhciBpbnB1dHMgaW4gZGlyZWN0aXZlc1xuICogYW5kIGNvbXBvbmVudHMuXG4gKlxuICogVGhlcmUgYXJlIHR3byB2YXJpYW50cyBvZiBpbnB1dHMgdGhhdCBjYW4gYmUgZGVjbGFyZWQ6XG4gKlxuICogICAxLiAqKk9wdGlvbmFsIGlucHV0cyoqIHdpdGggYW4gaW5pdGlhbCB2YWx1ZS5cbiAqICAgMi4gKipSZXF1aXJlZCBpbnB1dHMqKiB0aGF0IGNvbnN1bWVycyBuZWVkIHRvIHNldC5cbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGUgYGlucHV0YCBmdW5jdGlvbiB3aWxsIGRlY2xhcmUgb3B0aW9uYWwgaW5wdXRzIHRoYXRcbiAqIGFsd2F5cyBoYXZlIGFuIGluaXRpYWwgdmFsdWUuIFJlcXVpcmVkIGlucHV0cyBjYW4gYmUgZGVjbGFyZWRcbiAqIHVzaW5nIHRoZSBgaW5wdXQucmVxdWlyZWQoKWAgZnVuY3Rpb24uXG4gKlxuICogSW5wdXRzIGFyZSBzaWduYWxzLiBUaGUgdmFsdWVzIG9mIGFuIGlucHV0IGFyZSBleHBvc2VkIGFzIGEgYFNpZ25hbGAuXG4gKiBUaGUgc2lnbmFsIGFsd2F5cyBob2xkcyB0aGUgbGF0ZXN0IHZhbHVlIG9mIHRoZSBpbnB1dCB0aGF0IGlzIGJvdW5kXG4gKiBmcm9tIHRoZSBwYXJlbnQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFRvIHVzZSBzaWduYWwtYmFzZWQgaW5wdXRzLCBpbXBvcnQgYGlucHV0YCBmcm9tIGBAYW5ndWxhci9jb3JlYC5cbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7aW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmVgO1xuICogYGBgXG4gKlxuICogSW5zaWRlIHlvdXIgY29tcG9uZW50LCBpbnRyb2R1Y2UgYSBuZXcgY2xhc3MgbWVtYmVyIGFuZCBpbml0aWFsaXplXG4gKiBpdCB3aXRoIGEgY2FsbCB0byBgaW5wdXRgIG9yIGBpbnB1dC5yZXF1aXJlZGAuXG4gKlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe1xuICogICAuLi5cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQge1xuICogICBmaXJzdE5hbWUgPSBpbnB1dDxzdHJpbmc+KCk7ICAgICAgICAgICAgIC8vIFNpZ25hbDxzdHJpbmd8dW5kZWZpbmVkPlxuICogICBsYXN0TmFtZSAgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7ICAgIC8vIFNpZ25hbDxzdHJpbmc+XG4gKiAgIGFnZSAgICAgICA9IGlucHV0KDApICAgICAgICAgICAgICAgICAgICAgLy8gU2lnbmFsPG51bWJlcj5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEluc2lkZSB5b3VyIGNvbXBvbmVudCB0ZW1wbGF0ZSwgeW91IGNhbiBkaXNwbGF5IHZhbHVlcyBvZiB0aGUgaW5wdXRzXG4gKiBieSBjYWxsaW5nIHRoZSBzaWduYWwuXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4+e3tmaXJzdE5hbWUoKX19PC9zcGFuPlxuICogYGBgXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqIEBpbml0aWFsaXplckFwaUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dDogSW5wdXRGdW5jdGlvbiA9ICgoKSA9PiB7XG4gIC8vIE5vdGU6IFRoaXMgbWF5IGJlIGNvbnNpZGVyZWQgYSBzaWRlLWVmZmVjdCwgYnV0IG5vdGhpbmcgd2lsbCBkZXBlbmQgb25cbiAgLy8gdGhpcyBhc3NpZ25tZW50LCB1bmxlc3MgdGhpcyBgaW5wdXRgIGNvbnN0YW50IGV4cG9ydCBpcyBhY2Nlc3NlZC4gSXQncyBhXG4gIC8vIHNlbGYtY29udGFpbmVkIHNpZGUgZWZmZWN0IHRoYXQgaXMgbG9jYWwgdG8gdGhlIHVzZXIgZmFjaW5nYGlucHV0YCBleHBvcnQuXG4gIChpbnB1dEZ1bmN0aW9uIGFzIGFueSkucmVxdWlyZWQgPSBpbnB1dFJlcXVpcmVkRnVuY3Rpb247XG4gIHJldHVybiBpbnB1dEZ1bmN0aW9uIGFzIHR5cGVvZiBpbnB1dEZ1bmN0aW9uICYge3JlcXVpcmVkOiB0eXBlb2YgaW5wdXRSZXF1aXJlZEZ1bmN0aW9ufTtcbn0pKCk7XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvaW5wdXQvaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxELE9BQU8sRUFDTCxpQkFBaUIsR0FNbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxNQUFNLFVBQVUsYUFBYSxDQUMzQixZQUFvQixFQUNwQixJQUFrQztJQUVsQyxTQUFTLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsSUFBa0M7SUFFbEMsU0FBUyxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8saUJBQWlCLENBQUMsb0JBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQXVERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQWtCLENBQUMsR0FBRyxFQUFFO0lBQ3hDLHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzVFLGFBQXFCLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO0lBQ3hELE9BQU8sYUFBZ0YsQ0FBQztBQUMxRixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2Fzc2VydEluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vLi4vZGknO1xuXG5pbXBvcnQge1xuICBjcmVhdGVJbnB1dFNpZ25hbCxcbiAgSW5wdXRPcHRpb25zLFxuICBJbnB1dE9wdGlvbnNXaXRob3V0VHJhbnNmb3JtLFxuICBJbnB1dE9wdGlvbnNXaXRoVHJhbnNmb3JtLFxuICBJbnB1dFNpZ25hbCxcbiAgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtLFxufSBmcm9tICcuL2lucHV0X3NpZ25hbCc7XG5pbXBvcnQge1JFUVVJUkVEX1VOU0VUX1ZBTFVFfSBmcm9tICcuL2lucHV0X3NpZ25hbF9ub2RlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlucHV0RnVuY3Rpb248UmVhZFQsIFdyaXRlVD4oXG4gIGluaXRpYWxWYWx1ZT86IFJlYWRULFxuICBvcHRzPzogSW5wdXRPcHRpb25zPFJlYWRULCBXcml0ZVQ+LFxuKTogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPFJlYWRUIHwgdW5kZWZpbmVkLCBXcml0ZVQ+IHtcbiAgbmdEZXZNb2RlICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChpbnB1dCk7XG4gIHJldHVybiBjcmVhdGVJbnB1dFNpZ25hbChpbml0aWFsVmFsdWUsIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5wdXRSZXF1aXJlZEZ1bmN0aW9uPFJlYWRULCBXcml0ZVQgPSBSZWFkVD4oXG4gIG9wdHM/OiBJbnB1dE9wdGlvbnM8UmVhZFQsIFdyaXRlVD4sXG4pOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08UmVhZFQsIFdyaXRlVD4ge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGlucHV0KTtcbiAgcmV0dXJuIGNyZWF0ZUlucHV0U2lnbmFsKFJFUVVJUkVEX1VOU0VUX1ZBTFVFIGFzIG5ldmVyLCBvcHRzKTtcbn1cblxuLyoqXG4gKiBUaGUgYGlucHV0YCBmdW5jdGlvbiBhbGxvd3MgZGVjbGFyYXRpb24gb2YgaW5wdXRzIGluIGRpcmVjdGl2ZXMgYW5kXG4gKiBjb21wb25lbnRzLlxuICpcbiAqIFRoZSBmdW5jdGlvbiBleHBvc2VzIGFuIEFQSSBmb3IgYWxzbyBkZWNsYXJpbmcgcmVxdWlyZWQgaW5wdXRzIHZpYSB0aGVcbiAqIGBpbnB1dC5yZXF1aXJlZGAgZnVuY3Rpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqIEBkb2NzUHJpdmF0ZSBJZ25vcmVkIGJlY2F1c2UgYGlucHV0YCBpcyB0aGUgY2Fub25pY2FsIEFQSSBlbnRyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dEZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGFuIGlucHV0IG9mIHR5cGUgYFRgIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiBgdW5kZWZpbmVkYC5cbiAgICogQW5ndWxhciB3aWxsIGltcGxpY2l0bHkgdXNlIGB1bmRlZmluZWRgIGFzIGluaXRpYWwgdmFsdWUuXG4gICAqL1xuICA8VD4oKTogSW5wdXRTaWduYWw8VCB8IHVuZGVmaW5lZD47XG4gIC8qKiBEZWNsYXJlcyBhbiBpbnB1dCBvZiB0eXBlIGBUYCB3aXRoIGFuIGV4cGxpY2l0IGluaXRpYWwgdmFsdWUuICovXG4gIDxUPihpbml0aWFsVmFsdWU6IFQsIG9wdHM/OiBJbnB1dE9wdGlvbnNXaXRob3V0VHJhbnNmb3JtPFQ+KTogSW5wdXRTaWduYWw8VD47XG4gIC8qKlxuICAgKiBEZWNsYXJlcyBhbiBpbnB1dCBvZiB0eXBlIGBUYCB3aXRoIGFuIGluaXRpYWwgdmFsdWUgYW5kIGEgdHJhbnNmb3JtXG4gICAqIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBUaGUgaW5wdXQgYWNjZXB0cyB2YWx1ZXMgb2YgdHlwZSBgVHJhbnNmb3JtVGAgYW5kIHRoZSBnaXZlblxuICAgKiB0cmFuc2Zvcm0gZnVuY3Rpb24gd2lsbCB0cmFuc2Zvcm0gdGhlIHZhbHVlIHRvIHR5cGUgYFRgLlxuICAgKi9cbiAgPFQsIFRyYW5zZm9ybVQ+KFxuICAgIGluaXRpYWxWYWx1ZTogVCxcbiAgICBvcHRzOiBJbnB1dE9wdGlvbnNXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+LFxuICApOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD47XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgcmVxdWlyZWQgaW5wdXQuXG4gICAqXG4gICAqIENvbnN1bWVycyBvZiB5b3VyIGRpcmVjdGl2ZS9jb21wb25lbnQgbmVlZCB0byBiaW5kIHRvIHRoaXNcbiAgICogaW5wdXQuIElmIHVuc2V0LCBhIGNvbXBpbGUgdGltZSBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLlxuICAgKlxuICAgKiBAZGV2ZWxvcGVyUHJldmlld1xuICAgKi9cbiAgcmVxdWlyZWQ6IHtcbiAgICAvKiogRGVjbGFyZXMgYSByZXF1aXJlZCBpbnB1dCBvZiB0eXBlIGBUYC4gKi9cbiAgICA8VD4ob3B0cz86IElucHV0T3B0aW9uc1dpdGhvdXRUcmFuc2Zvcm08VD4pOiBJbnB1dFNpZ25hbDxUPjtcbiAgICAvKipcbiAgICAgKiBEZWNsYXJlcyBhIHJlcXVpcmVkIGlucHV0IG9mIHR5cGUgYFRgIHdpdGggYSB0cmFuc2Zvcm0gZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgaW5wdXQgYWNjZXB0cyB2YWx1ZXMgb2YgdHlwZSBgVHJhbnNmb3JtVGAgYW5kIHRoZSBnaXZlblxuICAgICAqIHRyYW5zZm9ybSBmdW5jdGlvbiB3aWxsIHRyYW5zZm9ybSB0aGUgdmFsdWUgdG8gdHlwZSBgVGAuXG4gICAgICovXG4gICAgPFQsIFRyYW5zZm9ybVQ+KFxuICAgICAgb3B0czogSW5wdXRPcHRpb25zV2l0aFRyYW5zZm9ybTxULCBUcmFuc2Zvcm1UPixcbiAgICApOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD47XG4gIH07XG59XG5cbi8qKlxuICogVGhlIGBpbnB1dGAgZnVuY3Rpb24gYWxsb3dzIGRlY2xhcmF0aW9uIG9mIEFuZ3VsYXIgaW5wdXRzIGluIGRpcmVjdGl2ZXNcbiAqIGFuZCBjb21wb25lbnRzLlxuICpcbiAqIFRoZXJlIGFyZSB0d28gdmFyaWFudHMgb2YgaW5wdXRzIHRoYXQgY2FuIGJlIGRlY2xhcmVkOlxuICpcbiAqICAgMS4gKipPcHRpb25hbCBpbnB1dHMqKiB3aXRoIGFuIGluaXRpYWwgdmFsdWUuXG4gKiAgIDIuICoqUmVxdWlyZWQgaW5wdXRzKiogdGhhdCBjb25zdW1lcnMgbmVlZCB0byBzZXQuXG4gKlxuICogQnkgZGVmYXVsdCwgdGhlIGBpbnB1dGAgZnVuY3Rpb24gd2lsbCBkZWNsYXJlIG9wdGlvbmFsIGlucHV0cyB0aGF0XG4gKiBhbHdheXMgaGF2ZSBhbiBpbml0aWFsIHZhbHVlLiBSZXF1aXJlZCBpbnB1dHMgY2FuIGJlIGRlY2xhcmVkXG4gKiB1c2luZyB0aGUgYGlucHV0LnJlcXVpcmVkKClgIGZ1bmN0aW9uLlxuICpcbiAqIElucHV0cyBhcmUgc2lnbmFscy4gVGhlIHZhbHVlcyBvZiBhbiBpbnB1dCBhcmUgZXhwb3NlZCBhcyBhIGBTaWduYWxgLlxuICogVGhlIHNpZ25hbCBhbHdheXMgaG9sZHMgdGhlIGxhdGVzdCB2YWx1ZSBvZiB0aGUgaW5wdXQgdGhhdCBpcyBib3VuZFxuICogZnJvbSB0aGUgcGFyZW50LlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKiBUbyB1c2Ugc2lnbmFsLWJhc2VkIGlucHV0cywgaW1wb3J0IGBpbnB1dGAgZnJvbSBgQGFuZ3VsYXIvY29yZWAuXG4gKlxuICogYGBgXG4gKiBpbXBvcnQge2lucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlYDtcbiAqIGBgYFxuICpcbiAqIEluc2lkZSB5b3VyIGNvbXBvbmVudCwgaW50cm9kdWNlIGEgbmV3IGNsYXNzIG1lbWJlciBhbmQgaW5pdGlhbGl6ZVxuICogaXQgd2l0aCBhIGNhbGwgdG8gYGlucHV0YCBvciBgaW5wdXQucmVxdWlyZWRgLlxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgLi4uXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFVzZXJQcm9maWxlQ29tcG9uZW50IHtcbiAqICAgZmlyc3ROYW1lID0gaW5wdXQ8c3RyaW5nPigpOyAgICAgICAgICAgICAvLyBTaWduYWw8c3RyaW5nfHVuZGVmaW5lZD5cbiAqICAgbGFzdE5hbWUgID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpOyAgICAvLyBTaWduYWw8c3RyaW5nPlxuICogICBhZ2UgICAgICAgPSBpbnB1dCgwKSAgICAgICAgICAgICAgICAgICAgIC8vIFNpZ25hbDxudW1iZXI+XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJbnNpZGUgeW91ciBjb21wb25lbnQgdGVtcGxhdGUsIHlvdSBjYW4gZGlzcGxheSB2YWx1ZXMgb2YgdGhlIGlucHV0c1xuICogYnkgY2FsbGluZyB0aGUgc2lnbmFsLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzcGFuPnt7Zmlyc3ROYW1lKCl9fTwvc3Bhbj5cbiAqIGBgYFxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKiBAaW5pdGlhbGl6ZXJBcGlGdW5jdGlvblxuICovXG5leHBvcnQgY29uc3QgaW5wdXQ6IElucHV0RnVuY3Rpb24gPSAoKCkgPT4ge1xuICAvLyBOb3RlOiBUaGlzIG1heSBiZSBjb25zaWRlcmVkIGEgc2lkZS1lZmZlY3QsIGJ1dCBub3RoaW5nIHdpbGwgZGVwZW5kIG9uXG4gIC8vIHRoaXMgYXNzaWdubWVudCwgdW5sZXNzIHRoaXMgYGlucHV0YCBjb25zdGFudCBleHBvcnQgaXMgYWNjZXNzZWQuIEl0J3MgYVxuICAvLyBzZWxmLWNvbnRhaW5lZCBzaWRlIGVmZmVjdCB0aGF0IGlzIGxvY2FsIHRvIHRoZSB1c2VyIGZhY2luZ2BpbnB1dGAgZXhwb3J0LlxuICAoaW5wdXRGdW5jdGlvbiBhcyBhbnkpLnJlcXVpcmVkID0gaW5wdXRSZXF1aXJlZEZ1bmN0aW9uO1xuICByZXR1cm4gaW5wdXRGdW5jdGlvbiBhcyB0eXBlb2YgaW5wdXRGdW5jdGlvbiAmIHtyZXF1aXJlZDogdHlwZW9mIGlucHV0UmVxdWlyZWRGdW5jdGlvbn07XG59KSgpO1xuIl19
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { producerAccessed, SIGNAL } from '@angular/core/primitives/signals';
9
9
  import { RuntimeError } from '../../errors';
@@ -37,4 +37,4 @@ export function createInputSignal(initialValue, options) {
37
37
  }
38
38
  return inputValueFn;
39
39
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfc2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXV0aG9yaW5nL2lucHV0L2lucHV0X3NpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFMUUsT0FBTyxFQUFDLFlBQVksRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFHNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFtQixvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBeUM3RixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdEUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBNkN2RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFlBQWUsRUFDZixPQUFxQztJQUVyQyxNQUFNLElBQUksR0FBbUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTlFLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO0lBRTFCLHdFQUF3RTtJQUN4RSw0RUFBNEU7SUFDNUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBRXRDLFNBQVMsWUFBWTtRQUNuQiw2Q0FBNkM7UUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLG9CQUFvQixFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLFlBQVksc0RBRXBCLFNBQVMsSUFBSSxrREFBa0QsQ0FDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVBLFlBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRXJDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixZQUFZLEVBQUUsR0FBRyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPLFlBQXVELENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3Byb2R1Y2VyQWNjZXNzZWQsIFNJR05BTH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMnO1xuXG5pbXBvcnQge1J1bnRpbWVFcnJvciwgUnVudGltZUVycm9yQ29kZX0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7U2lnbmFsfSBmcm9tICcuLi8uLi9yZW5kZXIzL3JlYWN0aXZpdHkvYXBpJztcblxuaW1wb3J0IHtJTlBVVF9TSUdOQUxfTk9ERSwgSW5wdXRTaWduYWxOb2RlLCBSRVFVSVJFRF9VTlNFVF9WQUxVRX0gZnJvbSAnLi9pbnB1dF9zaWduYWxfbm9kZSc7XG5cbi8qKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqXG4gKiBPcHRpb25zIGZvciBzaWduYWwgaW5wdXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3B0aW9uczxULCBUcmFuc2Zvcm1UPiB7XG4gIC8qKiBPcHRpb25hbCBwdWJsaWMgbmFtZSBmb3IgdGhlIGlucHV0LiBCeSBkZWZhdWx0LCB0aGUgY2xhc3MgZmllbGQgbmFtZSBpcyB1c2VkLiAqL1xuICBhbGlhcz86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRyYW5zZm9ybSB0aGF0IHJ1bnMgd2hlbmV2ZXIgYSBuZXcgdmFsdWUgaXMgYm91bmQuIENhbiBiZSB1c2VkIHRvXG4gICAqIHRyYW5zZm9ybSB0aGUgaW5wdXQgdmFsdWUgYmVmb3JlIHRoZSBpbnB1dCBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBUaGUgdHJhbnNmb3JtIGZ1bmN0aW9uIGNhbiB3aWRlbiB0aGUgdHlwZSBvZiB0aGUgaW5wdXQuIEZvciBleGFtcGxlLCBjb25zaWRlclxuICAgKiBhbiBpbnB1dCBmb3IgYGRpc2FibGVkYC4gSW4gcHJhY3RpY2UsIGFzIHRoZSBjb21wb25lbnQgYXV0aG9yLCB5b3Ugd2FudCB0byBvbmx5XG4gICAqIGRlYWwgd2l0aCBhIGJvb2xlYW4sIGJ1dCB1c2VycyBtYXkgd2FudCB0byBiaW5kIGEgc3RyaW5nIGlmIHRoZXkganVzdCB1c2UgdGhlXG4gICAqIGF0dHJpYnV0ZSBmb3JtIHRvIGJpbmQgdG8gdGhlIGlucHV0IHZpYSBgPG15LWRpciBpbnB1dD5gLiBBIHRyYW5zZm9ybSBjYW4gdGhlblxuICAgKiBoYW5kbGUgc3VjaCBzdHJpbmcgdmFsdWVzIGFuZCBjb252ZXJ0IHRoZW0gdG8gYGJvb2xlYW5gLiBTZWU6IHtAbGluayBib29sZWFuQXR0cmlidXRlfS5cbiAgICovXG4gIHRyYW5zZm9ybT86ICh2OiBUcmFuc2Zvcm1UKSA9PiBUO1xufVxuXG4vKipcbiAqIFNpZ25hbCBpbnB1dCBvcHRpb25zIHdpdGhvdXQgdGhlIHRyYW5zZm9ybSBvcHRpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRPcHRpb25zV2l0aG91dFRyYW5zZm9ybTxUPiA9XG4gIC8vIE5vdGU6IFdlIHN0aWxsIGtlZXAgYSBub3Rpb24gb2YgYHRyYW5zZm9ybWAgZm9yIGF1dG8tY29tcGxldGlvbi5cbiAgT21pdDxJbnB1dE9wdGlvbnM8VCwgVD4sICd0cmFuc2Zvcm0nPiAmIHt0cmFuc2Zvcm0/OiB1bmRlZmluZWR9O1xuLyoqXG4gKiBTaWduYWwgaW5wdXQgb3B0aW9ucyB3aXRoIHRoZSB0cmFuc2Zvcm0gb3B0aW9uIHJlcXVpcmVkLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCB0eXBlIElucHV0T3B0aW9uc1dpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD4gPSBSZXF1aXJlZDxcbiAgUGljazxJbnB1dE9wdGlvbnM8VCwgVHJhbnNmb3JtVD4sICd0cmFuc2Zvcm0nPlxuPiAmXG4gIElucHV0T3B0aW9uczxULCBUcmFuc2Zvcm1UPjtcblxuZXhwb3J0IGNvbnN0IMm1SU5QVVRfU0lHTkFMX0JSQU5EX1JFQURfVFlQRSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woKTtcbmV4cG9ydCBjb25zdCDJtUlOUFVUX1NJR05BTF9CUkFORF9XUklURV9UWVBFID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgpO1xuXG4vKipcbiAqIGBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm1gIHJlcHJlc2VudHMgYSBzcGVjaWFsIGBTaWduYWxgIGZvciBhXG4gKiBkaXJlY3RpdmUvY29tcG9uZW50IGlucHV0IHdpdGggYSBgdHJhbnNmb3JtYCBmdW5jdGlvbi5cbiAqXG4gKiBTaWduYWwgaW5wdXRzIHdpdGggdHJhbnNmb3JtcyBjYXB0dXJlIGFuIGV4dHJhIGdlbmVyaWMgZm9yIHRoZWlyIHRyYW5zZm9ybSB3cml0ZVxuICogdHlwZS4gVHJhbnNmb3JtcyBjYW4gZXhwYW5kIHRoZSBhY2NlcHRlZCBib3VuZCB2YWx1ZXMgZm9yIGFuIGlucHV0IHdoaWxlIGVuc3VyaW5nXG4gKiB2YWx1ZSByZXRyaWV2YWxzIG9mIHRoZSBzaWduYWwgaW5wdXQgYXJlIHN0aWxsIG1hdGNoaW5nIHRoZSBnZW5lcmljIGlucHV0IHR5cGUuXG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIE15RGlyIHtcbiAqICAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICogICAgIHRyYW5zZm9ybTogKHY6IHN0cmluZ3xib29sZWFuKSA9PiBjb252ZXJ0VG9Cb29sZWFuKHYpLFxuICogICB9KTsgLy8gSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPGJvb2xlYW4sIHN0cmluZ3xib29sZWFuPlxuICpcbiAqICAgY2xpY2soKSB7XG4gKiAgICAgdGhpcy5kaXNhYmxlZCgpIC8vIGFsd2F5cyByZXR1cm5zIGEgYGJvb2xlYW5gLlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayBJbnB1dFNpZ25hbH0gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD4gZXh0ZW5kcyBTaWduYWw8VD4ge1xuICBbU0lHTkFMXTogSW5wdXRTaWduYWxOb2RlPFQsIFRyYW5zZm9ybVQ+O1xuICBbybVJTlBVVF9TSUdOQUxfQlJBTkRfUkVBRF9UWVBFXTogVDtcbiAgW8m1SU5QVVRfU0lHTkFMX0JSQU5EX1dSSVRFX1RZUEVdOiBUcmFuc2Zvcm1UO1xufVxuXG4vKipcbiAqIGBJbnB1dFNpZ25hbGAgcmVwcmVzZW50cyBhIHNwZWNpYWwgYFNpZ25hbGAgZm9yIGEgZGlyZWN0aXZlL2NvbXBvbmVudCBpbnB1dC5cbiAqXG4gKiBBbiBpbnB1dCBzaWduYWwgaXMgc2ltaWxhciB0byBhIG5vbi13cml0YWJsZSBzaWduYWwgZXhjZXB0IHRoYXQgaXQgYWxzb1xuICogY2FycmllcyBhZGRpdGlvbmFsIHR5cGUtaW5mb3JtYXRpb24gZm9yIHRyYW5zZm9ybXMsIGFuZCB0aGF0IEFuZ3VsYXIgaW50ZXJuYWxseVxuICogdXBkYXRlcyB0aGUgc2lnbmFsIHdoZW5ldmVyIGEgbmV3IHZhbHVlIGlzIGJvdW5kLlxuICpcbiAqIEBzZWUge0BsaW5rIElucHV0T3B0aW9uc1dpdGhUcmFuc2Zvcm19IGZvciBpbnB1dHMgd2l0aCB0cmFuc2Zvcm1zLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTaWduYWw8VD4gZXh0ZW5kcyBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVD4ge31cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGlucHV0IHNpZ25hbC5cbiAqXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIFRoZSBpbml0aWFsIHZhbHVlLlxuICogICBDYW4gYmUgc2V0IHRvIHtAbGluayBSRVFVSVJFRF9VTlNFVF9WQUxVRX0gZm9yIHJlcXVpcmVkIGlucHV0cy5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGlucHV0LiBlLmcuIGEgdHJhbnNmb3JtLCBvciBhbiBhbGlhcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUlucHV0U2lnbmFsPFQsIFRyYW5zZm9ybVQ+KFxuICBpbml0aWFsVmFsdWU6IFQsXG4gIG9wdGlvbnM/OiBJbnB1dE9wdGlvbnM8VCwgVHJhbnNmb3JtVD4sXG4pOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD4ge1xuICBjb25zdCBub2RlOiBJbnB1dFNpZ25hbE5vZGU8VCwgVHJhbnNmb3JtVD4gPSBPYmplY3QuY3JlYXRlKElOUFVUX1NJR05BTF9OT0RFKTtcblxuICBub2RlLnZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIC8vIFBlcmYgbm90ZTogQWx3YXlzIHNldCBgdHJhbnNmb3JtRm5gIGhlcmUgdG8gZW5zdXJlIHRoYXQgYG5vZGVgIGFsd2F5c1xuICAvLyBoYXMgdGhlIHNhbWUgdjggY2xhc3Mgc2hhcGUsIGFsbG93aW5nIG1vbm9tb3JwaGljIHJlYWRzIG9uIGlucHV0IHNpZ25hbHMuXG4gIG5vZGUudHJhbnNmb3JtRm4gPSBvcHRpb25zPy50cmFuc2Zvcm07XG5cbiAgZnVuY3Rpb24gaW5wdXRWYWx1ZUZuKCkge1xuICAgIC8vIFJlY29yZCB0aGF0IHNvbWVvbmUgbG9va2VkIGF0IHRoaXMgc2lnbmFsLlxuICAgIHByb2R1Y2VyQWNjZXNzZWQobm9kZSk7XG5cbiAgICBpZiAobm9kZS52YWx1ZSA9PT0gUkVRVUlSRURfVU5TRVRfVkFMVUUpIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuUkVRVUlSRURfSU5QVVRfTk9fVkFMVUUsXG4gICAgICAgIG5nRGV2TW9kZSAmJiAnSW5wdXQgaXMgcmVxdWlyZWQgYnV0IG5vIHZhbHVlIGlzIGF2YWlsYWJsZSB5ZXQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gIH1cblxuICAoaW5wdXRWYWx1ZUZuIGFzIGFueSlbU0lHTkFMXSA9IG5vZGU7XG5cbiAgaWYgKG5nRGV2TW9kZSkge1xuICAgIGlucHV0VmFsdWVGbi50b1N0cmluZyA9ICgpID0+IGBbSW5wdXQgU2lnbmFsOiAke2lucHV0VmFsdWVGbigpfV1gO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0VmFsdWVGbiBhcyBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08VCwgVHJhbnNmb3JtVD47XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfc2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYXV0aG9yaW5nL2lucHV0L2lucHV0X3NpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFMUUsT0FBTyxFQUFDLFlBQVksRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFHNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFtQixvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBeUM3RixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdEUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBNkN2RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFlBQWUsRUFDZixPQUFxQztJQUVyQyxNQUFNLElBQUksR0FBbUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTlFLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO0lBRTFCLHdFQUF3RTtJQUN4RSw0RUFBNEU7SUFDNUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBRXRDLFNBQVMsWUFBWTtRQUNuQiw2Q0FBNkM7UUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLG9CQUFvQixFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLFlBQVksc0RBRXBCLFNBQVMsSUFBSSxrREFBa0QsQ0FDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVBLFlBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRXJDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixZQUFZLEVBQUUsR0FBRyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPLFlBQXVELENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtwcm9kdWNlckFjY2Vzc2VkLCBTSUdOQUx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcHJpbWl0aXZlcy9zaWduYWxzJztcblxuaW1wb3J0IHtSdW50aW1lRXJyb3IsIFJ1bnRpbWVFcnJvckNvZGV9IGZyb20gJy4uLy4uL2Vycm9ycyc7XG5pbXBvcnQge1NpZ25hbH0gZnJvbSAnLi4vLi4vcmVuZGVyMy9yZWFjdGl2aXR5L2FwaSc7XG5cbmltcG9ydCB7SU5QVVRfU0lHTkFMX05PREUsIElucHV0U2lnbmFsTm9kZSwgUkVRVUlSRURfVU5TRVRfVkFMVUV9IGZyb20gJy4vaW5wdXRfc2lnbmFsX25vZGUnO1xuXG4vKipcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKlxuICogT3B0aW9ucyBmb3Igc2lnbmFsIGlucHV0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbnM8VCwgVHJhbnNmb3JtVD4ge1xuICAvKiogT3B0aW9uYWwgcHVibGljIG5hbWUgZm9yIHRoZSBpbnB1dC4gQnkgZGVmYXVsdCwgdGhlIGNsYXNzIGZpZWxkIG5hbWUgaXMgdXNlZC4gKi9cbiAgYWxpYXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB0cmFuc2Zvcm0gdGhhdCBydW5zIHdoZW5ldmVyIGEgbmV3IHZhbHVlIGlzIGJvdW5kLiBDYW4gYmUgdXNlZCB0b1xuICAgKiB0cmFuc2Zvcm0gdGhlIGlucHV0IHZhbHVlIGJlZm9yZSB0aGUgaW5wdXQgaXMgdXBkYXRlZC5cbiAgICpcbiAgICogVGhlIHRyYW5zZm9ybSBmdW5jdGlvbiBjYW4gd2lkZW4gdGhlIHR5cGUgb2YgdGhlIGlucHV0LiBGb3IgZXhhbXBsZSwgY29uc2lkZXJcbiAgICogYW4gaW5wdXQgZm9yIGBkaXNhYmxlZGAuIEluIHByYWN0aWNlLCBhcyB0aGUgY29tcG9uZW50IGF1dGhvciwgeW91IHdhbnQgdG8gb25seVxuICAgKiBkZWFsIHdpdGggYSBib29sZWFuLCBidXQgdXNlcnMgbWF5IHdhbnQgdG8gYmluZCBhIHN0cmluZyBpZiB0aGV5IGp1c3QgdXNlIHRoZVxuICAgKiBhdHRyaWJ1dGUgZm9ybSB0byBiaW5kIHRvIHRoZSBpbnB1dCB2aWEgYDxteS1kaXIgaW5wdXQ+YC4gQSB0cmFuc2Zvcm0gY2FuIHRoZW5cbiAgICogaGFuZGxlIHN1Y2ggc3RyaW5nIHZhbHVlcyBhbmQgY29udmVydCB0aGVtIHRvIGBib29sZWFuYC4gU2VlOiB7QGxpbmsgYm9vbGVhbkF0dHJpYnV0ZX0uXG4gICAqL1xuICB0cmFuc2Zvcm0/OiAodjogVHJhbnNmb3JtVCkgPT4gVDtcbn1cblxuLyoqXG4gKiBTaWduYWwgaW5wdXQgb3B0aW9ucyB3aXRob3V0IHRoZSB0cmFuc2Zvcm0gb3B0aW9uLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCB0eXBlIElucHV0T3B0aW9uc1dpdGhvdXRUcmFuc2Zvcm08VD4gPVxuICAvLyBOb3RlOiBXZSBzdGlsbCBrZWVwIGEgbm90aW9uIG9mIGB0cmFuc2Zvcm1gIGZvciBhdXRvLWNvbXBsZXRpb24uXG4gIE9taXQ8SW5wdXRPcHRpb25zPFQsIFQ+LCAndHJhbnNmb3JtJz4gJiB7dHJhbnNmb3JtPzogdW5kZWZpbmVkfTtcbi8qKlxuICogU2lnbmFsIGlucHV0IG9wdGlvbnMgd2l0aCB0aGUgdHJhbnNmb3JtIG9wdGlvbiByZXF1aXJlZC5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgdHlwZSBJbnB1dE9wdGlvbnNXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+ID0gUmVxdWlyZWQ8XG4gIFBpY2s8SW5wdXRPcHRpb25zPFQsIFRyYW5zZm9ybVQ+LCAndHJhbnNmb3JtJz5cbj4gJlxuICBJbnB1dE9wdGlvbnM8VCwgVHJhbnNmb3JtVD47XG5cbmV4cG9ydCBjb25zdCDJtUlOUFVUX1NJR05BTF9CUkFORF9SRUFEX1RZUEUgPSAvKiBAX19QVVJFX18gKi8gU3ltYm9sKCk7XG5leHBvcnQgY29uc3QgybVJTlBVVF9TSUdOQUxfQlJBTkRfV1JJVEVfVFlQRSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woKTtcblxuLyoqXG4gKiBgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtYCByZXByZXNlbnRzIGEgc3BlY2lhbCBgU2lnbmFsYCBmb3IgYVxuICogZGlyZWN0aXZlL2NvbXBvbmVudCBpbnB1dCB3aXRoIGEgYHRyYW5zZm9ybWAgZnVuY3Rpb24uXG4gKlxuICogU2lnbmFsIGlucHV0cyB3aXRoIHRyYW5zZm9ybXMgY2FwdHVyZSBhbiBleHRyYSBnZW5lcmljIGZvciB0aGVpciB0cmFuc2Zvcm0gd3JpdGVcbiAqIHR5cGUuIFRyYW5zZm9ybXMgY2FuIGV4cGFuZCB0aGUgYWNjZXB0ZWQgYm91bmQgdmFsdWVzIGZvciBhbiBpbnB1dCB3aGlsZSBlbnN1cmluZ1xuICogdmFsdWUgcmV0cmlldmFscyBvZiB0aGUgc2lnbmFsIGlucHV0IGFyZSBzdGlsbCBtYXRjaGluZyB0aGUgZ2VuZXJpYyBpbnB1dCB0eXBlLlxuICpcbiAqIGBgYHRzXG4gKiBjbGFzcyBNeURpciB7XG4gKiAgIGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHtcbiAqICAgICB0cmFuc2Zvcm06ICh2OiBzdHJpbmd8Ym9vbGVhbikgPT4gY29udmVydFRvQm9vbGVhbih2KSxcbiAqICAgfSk7IC8vIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxib29sZWFuLCBzdHJpbmd8Ym9vbGVhbj5cbiAqXG4gKiAgIGNsaWNrKCkge1xuICogICAgIHRoaXMuZGlzYWJsZWQoKSAvLyBhbHdheXMgcmV0dXJucyBhIGBib29sZWFuYC5cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgSW5wdXRTaWduYWx9IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+IGV4dGVuZHMgU2lnbmFsPFQ+IHtcbiAgW1NJR05BTF06IElucHV0U2lnbmFsTm9kZTxULCBUcmFuc2Zvcm1UPjtcbiAgW8m1SU5QVVRfU0lHTkFMX0JSQU5EX1JFQURfVFlQRV06IFQ7XG4gIFvJtUlOUFVUX1NJR05BTF9CUkFORF9XUklURV9UWVBFXTogVHJhbnNmb3JtVDtcbn1cblxuLyoqXG4gKiBgSW5wdXRTaWduYWxgIHJlcHJlc2VudHMgYSBzcGVjaWFsIGBTaWduYWxgIGZvciBhIGRpcmVjdGl2ZS9jb21wb25lbnQgaW5wdXQuXG4gKlxuICogQW4gaW5wdXQgc2lnbmFsIGlzIHNpbWlsYXIgdG8gYSBub24td3JpdGFibGUgc2lnbmFsIGV4Y2VwdCB0aGF0IGl0IGFsc29cbiAqIGNhcnJpZXMgYWRkaXRpb25hbCB0eXBlLWluZm9ybWF0aW9uIGZvciB0cmFuc2Zvcm1zLCBhbmQgdGhhdCBBbmd1bGFyIGludGVybmFsbHlcbiAqIHVwZGF0ZXMgdGhlIHNpZ25hbCB3aGVuZXZlciBhIG5ldyB2YWx1ZSBpcyBib3VuZC5cbiAqXG4gKiBAc2VlIHtAbGluayBJbnB1dE9wdGlvbnNXaXRoVHJhbnNmb3JtfSBmb3IgaW5wdXRzIHdpdGggdHJhbnNmb3Jtcy5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0U2lnbmFsPFQ+IGV4dGVuZHMgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPFQsIFQ+IHt9XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnB1dCBzaWduYWwuXG4gKlxuICogQHBhcmFtIGluaXRpYWxWYWx1ZSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqICAgQ2FuIGJlIHNldCB0byB7QGxpbmsgUkVRVUlSRURfVU5TRVRfVkFMVUV9IGZvciByZXF1aXJlZCBpbnB1dHMuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBpbnB1dC4gZS5nLiBhIHRyYW5zZm9ybSwgb3IgYW4gYWxpYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnB1dFNpZ25hbDxULCBUcmFuc2Zvcm1UPihcbiAgaW5pdGlhbFZhbHVlOiBULFxuICBvcHRpb25zPzogSW5wdXRPcHRpb25zPFQsIFRyYW5zZm9ybVQ+LFxuKTogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+IHtcbiAgY29uc3Qgbm9kZTogSW5wdXRTaWduYWxOb2RlPFQsIFRyYW5zZm9ybVQ+ID0gT2JqZWN0LmNyZWF0ZShJTlBVVF9TSUdOQUxfTk9ERSk7XG5cbiAgbm9kZS52YWx1ZSA9IGluaXRpYWxWYWx1ZTtcblxuICAvLyBQZXJmIG5vdGU6IEFsd2F5cyBzZXQgYHRyYW5zZm9ybUZuYCBoZXJlIHRvIGVuc3VyZSB0aGF0IGBub2RlYCBhbHdheXNcbiAgLy8gaGFzIHRoZSBzYW1lIHY4IGNsYXNzIHNoYXBlLCBhbGxvd2luZyBtb25vbW9ycGhpYyByZWFkcyBvbiBpbnB1dCBzaWduYWxzLlxuICBub2RlLnRyYW5zZm9ybUZuID0gb3B0aW9ucz8udHJhbnNmb3JtO1xuXG4gIGZ1bmN0aW9uIGlucHV0VmFsdWVGbigpIHtcbiAgICAvLyBSZWNvcmQgdGhhdCBzb21lb25lIGxvb2tlZCBhdCB0aGlzIHNpZ25hbC5cbiAgICBwcm9kdWNlckFjY2Vzc2VkKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUudmFsdWUgPT09IFJFUVVJUkVEX1VOU0VUX1ZBTFVFKSB7XG4gICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgICBSdW50aW1lRXJyb3JDb2RlLlJFUVVJUkVEX0lOUFVUX05PX1ZBTFVFLFxuICAgICAgICBuZ0Rldk1vZGUgJiYgJ0lucHV0IGlzIHJlcXVpcmVkIGJ1dCBubyB2YWx1ZSBpcyBhdmFpbGFibGUgeWV0LicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlLnZhbHVlO1xuICB9XG5cbiAgKGlucHV0VmFsdWVGbiBhcyBhbnkpW1NJR05BTF0gPSBub2RlO1xuXG4gIGlmIChuZ0Rldk1vZGUpIHtcbiAgICBpbnB1dFZhbHVlRm4udG9TdHJpbmcgPSAoKSA9PiBgW0lucHV0IFNpZ25hbDogJHtpbnB1dFZhbHVlRm4oKX1dYDtcbiAgfVxuXG4gIHJldHVybiBpbnB1dFZhbHVlRm4gYXMgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPFQsIFRyYW5zZm9ybVQ+O1xufVxuIl19
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { SIGNAL_NODE, signalSetFn } from '@angular/core/primitives/signals';
9
9
  export const REQUIRED_UNSET_VALUE = /* @__PURE__ */ Symbol('InputSignalNode#UNSET');
@@ -19,4 +19,4 @@ export const INPUT_SIGNAL_NODE = /* @__PURE__ */ (() => {
19
19
  },
20
20
  };
21
21
  })();
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfc2lnbmFsX25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvaW5wdXQvaW5wdXRfc2lnbmFsX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFdBQVcsRUFBYyxXQUFXLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUF3QnBGLGtGQUFrRjtBQUNsRiwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFzQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDeEYsT0FBTztRQUNMLEdBQUcsV0FBVztRQUNkLFdBQVcsRUFBRSxTQUFTO1FBRXRCLHVCQUF1QixDQUFnQixJQUFvQyxFQUFFLEtBQVE7WUFDbkYsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTSUdOQUxfTk9ERSwgU2lnbmFsTm9kZSwgc2lnbmFsU2V0Rm59IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcHJpbWl0aXZlcy9zaWduYWxzJztcblxuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1VOU0VUX1ZBTFVFID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgnSW5wdXRTaWduYWxOb2RlI1VOU0VUJyk7XG5cbi8qKlxuICogUmVhY3RpdmUgbm9kZSB0eXBlIGZvciBhbiBpbnB1dCBzaWduYWwuIEFuIGlucHV0IHNpZ25hbCBleHRlbmRzIGEgc2lnbmFsLlxuICogVGhlcmUgYXJlIHNwZWNpYWwgcHJvcGVydGllcyB0byBlbmFibGUgdHJhbnNmb3JtcyBhbmQgcmVxdWlyZWQgaW5wdXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0U2lnbmFsTm9kZTxULCBUcmFuc2Zvcm1UPiBleHRlbmRzIFNpZ25hbE5vZGU8VD4ge1xuICAvKipcbiAgICogVXNlci1jb25maWd1cmVkIHRyYW5zZm9ybSB0aGF0IHdpbGwgcnVuIHdoZW5ldmVyIGEgbmV3IHZhbHVlIGlzIGFwcGxpZWRcbiAgICogdG8gdGhlIGlucHV0IHNpZ25hbCBub2RlLlxuICAgKi9cbiAgdHJhbnNmb3JtRm46ICgodmFsdWU6IFRyYW5zZm9ybVQpID0+IFQpIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgbmV3IHZhbHVlIHRvIHRoZSBpbnB1dCBzaWduYWwuIEV4cGVjdHMgdHJhbnNmb3JtcyB0byBiZSBydW5cbiAgICogbWFudWFsbHkgYmVmb3JlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgZnJhbWV3b3JrIHJ1bnRpbWUgY29kZSB3aGVuZXZlciBhIGJpbmRpbmdcbiAgICogY2hhbmdlcy4gVGhlIHZhbHVlIGNhbiBpbiBwcmFjdGljZSBiZSBhbnl0aGluZyBhdCBydW50aW1lLCBidXQgZm9yIHR5cGluZ1xuICAgKiBwdXJwb3NlcyB3ZSBhc3N1bWUgaXQncyBhIHZhbGlkIGBUYCB2YWx1ZS4gVHlwZS1jaGVja2luZyB3aWxsIGVuZm9yY2UgdGhhdC5cbiAgICovXG4gIGFwcGx5VmFsdWVUb0lucHV0U2lnbmFsPFQsIFRyYW5zZm9ybVQ+KG5vZGU6IElucHV0U2lnbmFsTm9kZTxULCBUcmFuc2Zvcm1UPiwgdmFsdWU6IFQpOiB2b2lkO1xufVxuXG4vLyBOb3RlOiBVc2luZyBhbiBJSUZFIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIHNwcmVhZCBhc3NpZ25tZW50IGlzIG5vdCBjb25zaWRlcmVkXG4vLyBhIHNpZGUtZWZmZWN0LCBlbmRpbmcgdXAgcHJlc2VydmluZyBgQ09NUFVURURfTk9ERWAgYW5kIGBSRUFDVElWRV9OT0RFYC5cbi8vIFRPRE86IHJlbW92ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkL2lzc3Vlcy8zMzkyIGlzIHJlc29sdmVkLlxuZXhwb3J0IGNvbnN0IElOUFVUX1NJR05BTF9OT0RFOiBJbnB1dFNpZ25hbE5vZGU8dW5rbm93biwgdW5rbm93bj4gPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5TSUdOQUxfTk9ERSxcbiAgICB0cmFuc2Zvcm1GbjogdW5kZWZpbmVkLFxuXG4gICAgYXBwbHlWYWx1ZVRvSW5wdXRTaWduYWw8VCwgVHJhbnNmb3JtVD4obm9kZTogSW5wdXRTaWduYWxOb2RlPFQsIFRyYW5zZm9ybVQ+LCB2YWx1ZTogVCkge1xuICAgICAgc2lnbmFsU2V0Rm4obm9kZSwgdmFsdWUpO1xuICAgIH0sXG4gIH07XG59KSgpO1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfc2lnbmFsX25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvaW5wdXQvaW5wdXRfc2lnbmFsX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFdBQVcsRUFBYyxXQUFXLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUF3QnBGLGtGQUFrRjtBQUNsRiwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFzQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDeEYsT0FBTztRQUNMLEdBQUcsV0FBVztRQUNkLFdBQVcsRUFBRSxTQUFTO1FBRXRCLHVCQUF1QixDQUFnQixJQUFvQyxFQUFFLEtBQVE7WUFDbkYsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCB7U0lHTkFMX05PREUsIFNpZ25hbE5vZGUsIHNpZ25hbFNldEZufSBmcm9tICdAYW5ndWxhci9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscyc7XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9VTlNFVF9WQUxVRSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woJ0lucHV0U2lnbmFsTm9kZSNVTlNFVCcpO1xuXG4vKipcbiAqIFJlYWN0aXZlIG5vZGUgdHlwZSBmb3IgYW4gaW5wdXQgc2lnbmFsLiBBbiBpbnB1dCBzaWduYWwgZXh0ZW5kcyBhIHNpZ25hbC5cbiAqIFRoZXJlIGFyZSBzcGVjaWFsIHByb3BlcnRpZXMgdG8gZW5hYmxlIHRyYW5zZm9ybXMgYW5kIHJlcXVpcmVkIGlucHV0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFNpZ25hbE5vZGU8VCwgVHJhbnNmb3JtVD4gZXh0ZW5kcyBTaWduYWxOb2RlPFQ+IHtcbiAgLyoqXG4gICAqIFVzZXItY29uZmlndXJlZCB0cmFuc2Zvcm0gdGhhdCB3aWxsIHJ1biB3aGVuZXZlciBhIG5ldyB2YWx1ZSBpcyBhcHBsaWVkXG4gICAqIHRvIHRoZSBpbnB1dCBzaWduYWwgbm9kZS5cbiAgICovXG4gIHRyYW5zZm9ybUZuOiAoKHZhbHVlOiBUcmFuc2Zvcm1UKSA9PiBUKSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQXBwbGllcyBhIG5ldyB2YWx1ZSB0byB0aGUgaW5wdXQgc2lnbmFsLiBFeHBlY3RzIHRyYW5zZm9ybXMgdG8gYmUgcnVuXG4gICAqIG1hbnVhbGx5IGJlZm9yZS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGZyYW1ld29yayBydW50aW1lIGNvZGUgd2hlbmV2ZXIgYSBiaW5kaW5nXG4gICAqIGNoYW5nZXMuIFRoZSB2YWx1ZSBjYW4gaW4gcHJhY3RpY2UgYmUgYW55dGhpbmcgYXQgcnVudGltZSwgYnV0IGZvciB0eXBpbmdcbiAgICogcHVycG9zZXMgd2UgYXNzdW1lIGl0J3MgYSB2YWxpZCBgVGAgdmFsdWUuIFR5cGUtY2hlY2tpbmcgd2lsbCBlbmZvcmNlIHRoYXQuXG4gICAqL1xuICBhcHBseVZhbHVlVG9JbnB1dFNpZ25hbDxULCBUcmFuc2Zvcm1UPihub2RlOiBJbnB1dFNpZ25hbE5vZGU8VCwgVHJhbnNmb3JtVD4sIHZhbHVlOiBUKTogdm9pZDtcbn1cblxuLy8gTm90ZTogVXNpbmcgYW4gSUlGRSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBzcHJlYWQgYXNzaWdubWVudCBpcyBub3QgY29uc2lkZXJlZFxuLy8gYSBzaWRlLWVmZmVjdCwgZW5kaW5nIHVwIHByZXNlcnZpbmcgYENPTVBVVEVEX05PREVgIGFuZCBgUkVBQ1RJVkVfTk9ERWAuXG4vLyBUT0RPOiByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzM5MiBpcyByZXNvbHZlZC5cbmV4cG9ydCBjb25zdCBJTlBVVF9TSUdOQUxfTk9ERTogSW5wdXRTaWduYWxOb2RlPHVua25vd24sIHVua25vd24+ID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uU0lHTkFMX05PREUsXG4gICAgdHJhbnNmb3JtRm46IHVuZGVmaW5lZCxcblxuICAgIGFwcGx5VmFsdWVUb0lucHV0U2lnbmFsPFQsIFRyYW5zZm9ybVQ+KG5vZGU6IElucHV0U2lnbmFsTm9kZTxULCBUcmFuc2Zvcm1UPiwgdmFsdWU6IFQpIHtcbiAgICAgIHNpZ25hbFNldEZuKG5vZGUsIHZhbHVlKTtcbiAgICB9LFxuICB9O1xufSkoKTtcbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfdHlwZV9jaGVja2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2F1dGhvcmluZy9pbnB1dC9pbnB1dF90eXBlX2NoZWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0lucHV0U2lnbmFsV2l0aFRyYW5zZm9ybX0gZnJvbSAnLi9pbnB1dF9zaWduYWwnO1xuXG4vKiogUmV0cmlldmVzIHRoZSB3cml0ZSB0eXBlIG9mIGFuIGBJbnB1dFNpZ25hbGAgYW5kIGBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm1gLiAqL1xuZXhwb3J0IHR5cGUgybVVbndyYXBJbnB1dFNpZ25hbFdyaXRlVHlwZTxGaWVsZD4gPVxuICBGaWVsZCBleHRlbmRzIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxhbnksIGluZmVyIFdyaXRlVD4gPyBXcml0ZVQgOiBuZXZlcjtcblxuLyoqXG4gKiBVbndyYXBzIGFsbCBgSW5wdXRTaWduYWxgL2BJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm1gIGNsYXNzIGZpZWxkcyBvZlxuICogdGhlIGdpdmVuIGRpcmVjdGl2ZS5cbiAqL1xuZXhwb3J0IHR5cGUgybVVbndyYXBEaXJlY3RpdmVTaWduYWxJbnB1dHM8RGlyLCBGaWVsZHMgZXh0ZW5kcyBrZXlvZiBEaXI+ID0ge1xuICBbUCBpbiBGaWVsZHNdOiDJtVVud3JhcElucHV0U2lnbmFsV3JpdGVUeXBlPERpcltQXT47XG59O1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfdHlwZV9jaGVja2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2F1dGhvcmluZy9pbnB1dC9pbnB1dF90eXBlX2NoZWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm19IGZyb20gJy4vaW5wdXRfc2lnbmFsJztcblxuLyoqIFJldHJpZXZlcyB0aGUgd3JpdGUgdHlwZSBvZiBhbiBgSW5wdXRTaWduYWxgIGFuZCBgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtYC4gKi9cbmV4cG9ydCB0eXBlIMm1VW53cmFwSW5wdXRTaWduYWxXcml0ZVR5cGU8RmllbGQ+ID1cbiAgRmllbGQgZXh0ZW5kcyBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08YW55LCBpbmZlciBXcml0ZVQ+ID8gV3JpdGVUIDogbmV2ZXI7XG5cbi8qKlxuICogVW53cmFwcyBhbGwgYElucHV0U2lnbmFsYC9gSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtYCBjbGFzcyBmaWVsZHMgb2ZcbiAqIHRoZSBnaXZlbiBkaXJlY3RpdmUuXG4gKi9cbmV4cG9ydCB0eXBlIMm1VW53cmFwRGlyZWN0aXZlU2lnbmFsSW5wdXRzPERpciwgRmllbGRzIGV4dGVuZHMga2V5b2YgRGlyPiA9IHtcbiAgW1AgaW4gRmllbGRzXTogybVVbndyYXBJbnB1dFNpZ25hbFdyaXRlVHlwZTxEaXJbUF0+O1xufTtcbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { assertInInjectionContext } from '../../di';
9
9
  import { REQUIRED_UNSET_VALUE } from '../input/input_signal_node';
@@ -70,4 +70,4 @@ export const model = (() => {
70
70
  modelFunction.required = modelRequiredFunction;
71
71
  return modelFunction;
72
72
  })();
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBNEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxNQUFNLFVBQVUsYUFBYSxDQUFJLFlBQWdCO0lBQy9DLFNBQVMsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxPQUFPLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLFNBQVMsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxPQUFPLGlCQUFpQixDQUFDLG9CQUF5QixDQUFDLENBQUM7QUFDdEQsQ0FBQztBQWlDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBa0IsQ0FBQyxHQUFHLEVBQUU7SUFDeEMseUVBQXlFO0lBQ3pFLDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDN0UsYUFBcUIsQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUM7SUFDeEQsT0FBTyxhQUFnRixDQUFDO0FBQzFGLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHthc3NlcnRJbkluamVjdGlvbkNvbnRleHR9IGZyb20gJy4uLy4uL2RpJztcbmltcG9ydCB7UkVRVUlSRURfVU5TRVRfVkFMVUV9IGZyb20gJy4uL2lucHV0L2lucHV0X3NpZ25hbF9ub2RlJztcblxuaW1wb3J0IHtjcmVhdGVNb2RlbFNpZ25hbCwgTW9kZWxPcHRpb25zLCBNb2RlbFNpZ25hbH0gZnJvbSAnLi9tb2RlbF9zaWduYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxGdW5jdGlvbjxUPihpbml0aWFsVmFsdWU/OiBUKTogTW9kZWxTaWduYWw8VCB8IHVuZGVmaW5lZD4ge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KG1vZGVsKTtcblxuICByZXR1cm4gY3JlYXRlTW9kZWxTaWduYWwoaW5pdGlhbFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsUmVxdWlyZWRGdW5jdGlvbjxUPigpOiBNb2RlbFNpZ25hbDxUPiB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQobW9kZWwpO1xuXG4gIHJldHVybiBjcmVhdGVNb2RlbFNpZ25hbChSRVFVSVJFRF9VTlNFVF9WQUxVRSBhcyBUKTtcbn1cblxuLyoqXG4gKiBgbW9kZWxgIGRlY2xhcmVzIGEgd3JpdGVhYmxlIHNpZ25hbCB0aGF0IGlzIGV4cG9zZWQgYXMgYW4gaW5wdXQvb3V0cHV0IHBhaXIgb24gdGhlIGNvbnRhaW5pbmdcbiAqIGRpcmVjdGl2ZS4gVGhlIGlucHV0IG5hbWUgaXMgdGFrZW4gZWl0aGVyIGZyb20gdGhlIGNsYXNzIG1lbWJlciBvciBmcm9tIHRoZSBgYWxpYXNgIG9wdGlvbi5cbiAqIFRoZSBvdXRwdXQgbmFtZSBpcyBnZW5lcmF0ZWQgYnkgdGFraW5nIHRoZSBpbnB1dCBuYW1lIGFuZCBhcHBlbmRpbmcgYENoYW5nZWAuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGV4cG9zZXMgYW4gQVBJIGZvciBhbHNvIGRlY2xhcmluZyByZXF1aXJlZCBtb2RlbHMgdmlhIHRoZVxuICogYG1vZGVsLnJlcXVpcmVkYCBmdW5jdGlvbi5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICogQGRvY3NQcml2YXRlIElnbm9yZWQgYmVjYXVzZSBgbW9kZWxgIGlzIHRoZSBjYW5vbmljYWwgQVBJIGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsRnVuY3Rpb24ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSBtb2RlbCBvZiB0eXBlIGBUYCB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgYHVuZGVmaW5lZGAuXG4gICAqIEFuZ3VsYXIgd2lsbCBpbXBsaWNpdGx5IHVzZSBgdW5kZWZpbmVkYCBhcyBpbml0aWFsIHZhbHVlLlxuICAgKi9cbiAgPFQ+KCk6IE1vZGVsU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuICAvKiogSW5pdGlhbGl6ZXMgYSBtb2RlbCBvZiB0eXBlIGBUYCB3aXRoIHRoZSBnaXZlbiBpbml0aWFsIHZhbHVlLiAqL1xuICA8VD4oaW5pdGlhbFZhbHVlOiBULCBvcHRzPzogTW9kZWxPcHRpb25zKTogTW9kZWxTaWduYWw8VD47XG5cbiAgcmVxdWlyZWQ6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhIHJlcXVpcmVkIG1vZGVsLlxuICAgICAqXG4gICAgICogVXNlcnMgb2YgeW91ciBkaXJlY3RpdmUvY29tcG9uZW50IG5lZWQgdG8gYmluZCB0byB0aGUgaW5wdXQgc2lkZSBvZiB0aGUgbW9kZWwuXG4gICAgICogSWYgdW5zZXQsIGEgY29tcGlsZSB0aW1lIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuXG4gICAgICovXG4gICAgPFQ+KG9wdHM/OiBNb2RlbE9wdGlvbnMpOiBNb2RlbFNpZ25hbDxUPjtcbiAgfTtcbn1cblxuLyoqXG4gKiBgbW9kZWxgIGRlY2xhcmVzIGEgd3JpdGVhYmxlIHNpZ25hbCB0aGF0IGlzIGV4cG9zZWQgYXMgYW4gaW5wdXQvb3V0cHV0XG4gKiBwYWlyIG9uIHRoZSBjb250YWluaW5nIGRpcmVjdGl2ZS5cbiAqXG4gKiBUaGUgaW5wdXQgbmFtZSBpcyB0YWtlbiBlaXRoZXIgZnJvbSB0aGUgY2xhc3MgbWVtYmVyIG9yIGZyb20gdGhlIGBhbGlhc2Agb3B0aW9uLlxuICogVGhlIG91dHB1dCBuYW1lIGlzIGdlbmVyYXRlZCBieSB0YWtpbmcgdGhlIGlucHV0IG5hbWUgYW5kIGFwcGVuZGluZyBgQ2hhbmdlYC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqIFRvIHVzZSBgbW9kZWwoKWAsIGltcG9ydCB0aGUgZnVuY3Rpb24gZnJvbSBgQGFuZ3VsYXIvY29yZWAuXG4gKlxuICogYGBgXG4gKiBpbXBvcnQge21vZGVsfSBmcm9tICdAYW5ndWxhci9jb3JlYDtcbiAqIGBgYFxuICpcbiAqIEluc2lkZSB5b3VyIGNvbXBvbmVudCwgaW50cm9kdWNlIGEgbmV3IGNsYXNzIG1lbWJlciBhbmQgaW5pdGlhbGl6ZVxuICogaXQgd2l0aCBhIGNhbGwgdG8gYG1vZGVsYCBvciBgbW9kZWwucmVxdWlyZWRgLlxuICpcbiAqIGBgYHRzXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgLi4uXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE15RGlyIHtcbiAqICAgZmlyc3ROYW1lID0gbW9kZWw8c3RyaW5nPigpOyAgICAgICAgICAgIC8vIE1vZGVsU2lnbmFsPHN0cmluZ3x1bmRlZmluZWQ+XG4gKiAgIGxhc3ROYW1lICA9IG1vZGVsLnJlcXVpcmVkPHN0cmluZz4oKTsgICAvLyBNb2RlbFNpZ25hbDxzdHJpbmc+XG4gKiAgIGFnZSAgICAgICA9IG1vZGVsKDApOyAgICAgICAgICAgICAgICAgICAvLyBNb2RlbFNpZ25hbDxudW1iZXI+XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJbnNpZGUgeW91ciBjb21wb25lbnQgdGVtcGxhdGUsIHlvdSBjYW4gZGlzcGxheSB0aGUgdmFsdWUgb2YgYSBgbW9kZWxgXG4gKiBieSBjYWxsaW5nIHRoZSBzaWduYWwuXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4+e3tmaXJzdE5hbWUoKX19PC9zcGFuPlxuICogYGBgXG4gKlxuICogVXBkYXRpbmcgdGhlIGBtb2RlbGAgaXMgZXF1aXZhbGVudCB0byB1cGRhdGluZyBhIHdyaXRhYmxlIHNpZ25hbC5cbiAqXG4gKiBgYGB0c1xuICogdXBkYXRlTmFtZShuZXdGaXJzdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICogICB0aGlzLmZpcnN0TmFtZS5zZXQobmV3Rmlyc3ROYW1lKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKiBAaW5pdGlhbGl6ZXJBcGlGdW5jdGlvblxuICovXG5leHBvcnQgY29uc3QgbW9kZWw6IE1vZGVsRnVuY3Rpb24gPSAoKCkgPT4ge1xuICAvLyBOb3RlOiBUaGlzIG1heSBiZSBjb25zaWRlcmVkIGEgc2lkZS1lZmZlY3QsIGJ1dCBub3RoaW5nIHdpbGwgZGVwZW5kIG9uXG4gIC8vIHRoaXMgYXNzaWdubWVudCwgdW5sZXNzIHRoaXMgYG1vZGVsYCBjb25zdGFudCBleHBvcnQgaXMgYWNjZXNzZWQuIEl0J3MgYVxuICAvLyBzZWxmLWNvbnRhaW5lZCBzaWRlIGVmZmVjdCB0aGF0IGlzIGxvY2FsIHRvIHRoZSB1c2VyIGZhY2luZyBgbW9kZWxgIGV4cG9ydC5cbiAgKG1vZGVsRnVuY3Rpb24gYXMgYW55KS5yZXF1aXJlZCA9IG1vZGVsUmVxdWlyZWRGdW5jdGlvbjtcbiAgcmV0dXJuIG1vZGVsRnVuY3Rpb24gYXMgdHlwZW9mIG1vZGVsRnVuY3Rpb24gJiB7cmVxdWlyZWQ6IHR5cGVvZiBtb2RlbFJlcXVpcmVkRnVuY3Rpb259O1xufSkoKTtcbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hdXRob3JpbmcvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBNEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxNQUFNLFVBQVUsYUFBYSxDQUFJLFlBQWdCO0lBQy9DLFNBQVMsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxPQUFPLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLFNBQVMsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxPQUFPLGlCQUFpQixDQUFDLG9CQUF5QixDQUFDLENBQUM7QUFDdEQsQ0FBQztBQWlDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBa0IsQ0FBQyxHQUFHLEVBQUU7SUFDeEMseUVBQXlFO0lBQ3pFLDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDN0UsYUFBcUIsQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUM7SUFDeEQsT0FBTyxhQUFnRixDQUFDO0FBQzFGLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCB7YXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICcuLi8uLi9kaSc7XG5pbXBvcnQge1JFUVVJUkVEX1VOU0VUX1ZBTFVFfSBmcm9tICcuLi9pbnB1dC9pbnB1dF9zaWduYWxfbm9kZSc7XG5cbmltcG9ydCB7Y3JlYXRlTW9kZWxTaWduYWwsIE1vZGVsT3B0aW9ucywgTW9kZWxTaWduYWx9IGZyb20gJy4vbW9kZWxfc2lnbmFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsRnVuY3Rpb248VD4oaW5pdGlhbFZhbHVlPzogVCk6IE1vZGVsU2lnbmFsPFQgfCB1bmRlZmluZWQ+IHtcbiAgbmdEZXZNb2RlICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChtb2RlbCk7XG5cbiAgcmV0dXJuIGNyZWF0ZU1vZGVsU2lnbmFsKGluaXRpYWxWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFJlcXVpcmVkRnVuY3Rpb248VD4oKTogTW9kZWxTaWduYWw8VD4ge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KG1vZGVsKTtcblxuICByZXR1cm4gY3JlYXRlTW9kZWxTaWduYWwoUkVRVUlSRURfVU5TRVRfVkFMVUUgYXMgVCk7XG59XG5cbi8qKlxuICogYG1vZGVsYCBkZWNsYXJlcyBhIHdyaXRlYWJsZSBzaWduYWwgdGhhdCBpcyBleHBvc2VkIGFzIGFuIGlucHV0L291dHB1dCBwYWlyIG9uIHRoZSBjb250YWluaW5nXG4gKiBkaXJlY3RpdmUuIFRoZSBpbnB1dCBuYW1lIGlzIHRha2VuIGVpdGhlciBmcm9tIHRoZSBjbGFzcyBtZW1iZXIgb3IgZnJvbSB0aGUgYGFsaWFzYCBvcHRpb24uXG4gKiBUaGUgb3V0cHV0IG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IHRha2luZyB0aGUgaW5wdXQgbmFtZSBhbmQgYXBwZW5kaW5nIGBDaGFuZ2VgLlxuICpcbiAqIFRoZSBmdW5jdGlvbiBleHBvc2VzIGFuIEFQSSBmb3IgYWxzbyBkZWNsYXJpbmcgcmVxdWlyZWQgbW9kZWxzIHZpYSB0aGVcbiAqIGBtb2RlbC5yZXF1aXJlZGAgZnVuY3Rpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqIEBkb2NzUHJpdmF0ZSBJZ25vcmVkIGJlY2F1c2UgYG1vZGVsYCBpcyB0aGUgY2Fub25pY2FsIEFQSSBlbnRyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbEZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgbW9kZWwgb2YgdHlwZSBgVGAgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIGB1bmRlZmluZWRgLlxuICAgKiBBbmd1bGFyIHdpbGwgaW1wbGljaXRseSB1c2UgYHVuZGVmaW5lZGAgYXMgaW5pdGlhbCB2YWx1ZS5cbiAgICovXG4gIDxUPigpOiBNb2RlbFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbiAgLyoqIEluaXRpYWxpemVzIGEgbW9kZWwgb2YgdHlwZSBgVGAgd2l0aCB0aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZS4gKi9cbiAgPFQ+KGluaXRpYWxWYWx1ZTogVCwgb3B0cz86IE1vZGVsT3B0aW9ucyk6IE1vZGVsU2lnbmFsPFQ+O1xuXG4gIHJlcXVpcmVkOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYSByZXF1aXJlZCBtb2RlbC5cbiAgICAgKlxuICAgICAqIFVzZXJzIG9mIHlvdXIgZGlyZWN0aXZlL2NvbXBvbmVudCBuZWVkIHRvIGJpbmQgdG8gdGhlIGlucHV0IHNpZGUgb2YgdGhlIG1vZGVsLlxuICAgICAqIElmIHVuc2V0LCBhIGNvbXBpbGUgdGltZSBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLlxuICAgICAqL1xuICAgIDxUPihvcHRzPzogTW9kZWxPcHRpb25zKTogTW9kZWxTaWduYWw8VD47XG4gIH07XG59XG5cbi8qKlxuICogYG1vZGVsYCBkZWNsYXJlcyBhIHdyaXRlYWJsZSBzaWduYWwgdGhhdCBpcyBleHBvc2VkIGFzIGFuIGlucHV0L291dHB1dFxuICogcGFpciBvbiB0aGUgY29udGFpbmluZyBkaXJlY3RpdmUuXG4gKlxuICogVGhlIGlucHV0IG5hbWUgaXMgdGFrZW4gZWl0aGVyIGZyb20gdGhlIGNsYXNzIG1lbWJlciBvciBmcm9tIHRoZSBgYWxpYXNgIG9wdGlvbi5cbiAqIFRoZSBvdXRwdXQgbmFtZSBpcyBnZW5lcmF0ZWQgYnkgdGFraW5nIHRoZSBpbnB1dCBuYW1lIGFuZCBhcHBlbmRpbmcgYENoYW5nZWAuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiBUbyB1c2UgYG1vZGVsKClgLCBpbXBvcnQgdGhlIGZ1bmN0aW9uIGZyb20gYEBhbmd1bGFyL2NvcmVgLlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHttb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY29yZWA7XG4gKiBgYGBcbiAqXG4gKiBJbnNpZGUgeW91ciBjb21wb25lbnQsIGludHJvZHVjZSBhIG5ldyBjbGFzcyBtZW1iZXIgYW5kIGluaXRpYWxpemVcbiAqIGl0IHdpdGggYSBjYWxsIHRvIGBtb2RlbGAgb3IgYG1vZGVsLnJlcXVpcmVkYC5cbiAqXG4gKiBgYGB0c1xuICogQERpcmVjdGl2ZSh7XG4gKiAgIC4uLlxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeURpciB7XG4gKiAgIGZpcnN0TmFtZSA9IG1vZGVsPHN0cmluZz4oKTsgICAgICAgICAgICAvLyBNb2RlbFNpZ25hbDxzdHJpbmd8dW5kZWZpbmVkPlxuICogICBsYXN0TmFtZSAgPSBtb2RlbC5yZXF1aXJlZDxzdHJpbmc+KCk7ICAgLy8gTW9kZWxTaWduYWw8c3RyaW5nPlxuICogICBhZ2UgICAgICAgPSBtb2RlbCgwKTsgICAgICAgICAgICAgICAgICAgLy8gTW9kZWxTaWduYWw8bnVtYmVyPlxuICogfVxuICogYGBgXG4gKlxuICogSW5zaWRlIHlvdXIgY29tcG9uZW50IHRlbXBsYXRlLCB5b3UgY2FuIGRpc3BsYXkgdGhlIHZhbHVlIG9mIGEgYG1vZGVsYFxuICogYnkgY2FsbGluZyB0aGUgc2lnbmFsLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzcGFuPnt7Zmlyc3ROYW1lKCl9fTwvc3Bhbj5cbiAqIGBgYFxuICpcbiAqIFVwZGF0aW5nIHRoZSBgbW9kZWxgIGlzIGVxdWl2YWxlbnQgdG8gdXBkYXRpbmcgYSB3cml0YWJsZSBzaWduYWwuXG4gKlxuICogYGBgdHNcbiAqIHVwZGF0ZU5hbWUobmV3Rmlyc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAqICAgdGhpcy5maXJzdE5hbWUuc2V0KG5ld0ZpcnN0TmFtZSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICogQGluaXRpYWxpemVyQXBpRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IG1vZGVsOiBNb2RlbEZ1bmN0aW9uID0gKCgpID0+IHtcbiAgLy8gTm90ZTogVGhpcyBtYXkgYmUgY29uc2lkZXJlZCBhIHNpZGUtZWZmZWN0LCBidXQgbm90aGluZyB3aWxsIGRlcGVuZCBvblxuICAvLyB0aGlzIGFzc2lnbm1lbnQsIHVubGVzcyB0aGlzIGBtb2RlbGAgY29uc3RhbnQgZXhwb3J0IGlzIGFjY2Vzc2VkLiBJdCdzIGFcbiAgLy8gc2VsZi1jb250YWluZWQgc2lkZSBlZmZlY3QgdGhhdCBpcyBsb2NhbCB0byB0aGUgdXNlciBmYWNpbmcgYG1vZGVsYCBleHBvcnQuXG4gIChtb2RlbEZ1bmN0aW9uIGFzIGFueSkucmVxdWlyZWQgPSBtb2RlbFJlcXVpcmVkRnVuY3Rpb247XG4gIHJldHVybiBtb2RlbEZ1bmN0aW9uIGFzIHR5cGVvZiBtb2RlbEZ1bmN0aW9uICYge3JlcXVpcmVkOiB0eXBlb2YgbW9kZWxSZXF1aXJlZEZ1bmN0aW9ufTtcbn0pKCk7XG4iXX0=