@sapui5/sap.fe.core 1.121.2 → 1.123.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +1 -2
  5. package/src/sap/fe/core/CommonUtils.js +14 -171
  6. package/src/sap/fe/core/CommonUtils.ts +15 -221
  7. package/src/sap/fe/core/PageController.js +13 -1
  8. package/src/sap/fe/core/PageController.ts +16 -0
  9. package/src/sap/fe/core/TemplateComponent.js +6 -1
  10. package/src/sap/fe/core/TemplateComponent.ts +8 -0
  11. package/src/sap/fe/core/UIProvider.js +23 -0
  12. package/src/sap/fe/core/UIProvider.ts +38 -0
  13. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
  14. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
  21. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
  23. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
  24. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
  25. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
  26. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
  29. package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
  30. package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
  47. package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
  48. package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
  49. package/src/sap/fe/core/controllerextensions/Share.js +7 -7
  50. package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
  55. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
  56. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
  65. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
  66. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
  67. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
  68. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
  69. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
  70. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
  73. package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
  74. package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
  77. package/src/sap/fe/core/converters/ConverterContext.js +17 -9
  78. package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
  79. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  80. package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
  81. package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
  82. package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
  83. package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
  84. package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
  85. package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
  86. package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
  87. package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
  88. package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
  89. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
  90. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
  91. package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
  92. package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
  93. package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
  94. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
  95. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
  96. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
  97. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
  98. package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
  99. package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
  100. package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
  101. package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
  102. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
  103. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
  104. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
  105. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
  106. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
  107. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
  108. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  109. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
  110. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  111. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
  112. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
  113. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
  114. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
  115. package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
  116. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
  117. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
  118. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  119. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
  120. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  121. package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
  122. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
  123. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
  124. package/src/sap/fe/core/converters/helpers/Key.js +2 -2
  125. package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
  126. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  127. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
  128. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
  129. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
  130. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  131. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
  132. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
  133. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
  134. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
  135. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
  136. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
  137. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
  138. package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
  139. package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
  141. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
  142. package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
  143. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  144. package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
  145. package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
  146. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
  147. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
  150. package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
  151. package/src/sap/fe/core/fpm/manifest.json +1 -1
  152. package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
  153. package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
  154. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
  155. package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
  156. package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
  157. package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
  158. package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
  159. package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
  160. package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
  161. package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
  162. package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
  163. package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
  166. package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
  167. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
  168. package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
  169. package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
  170. package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
  171. package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
  172. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
  173. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
  174. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  175. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
  176. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
  177. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
  178. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  179. package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
  180. package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
  181. package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
  182. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
  183. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
  184. package/src/sap/fe/core/library.js +1 -1
  185. package/src/sap/fe/core/messagebundle.properties +5 -2
  186. package/src/sap/fe/core/messagebundle_da.properties +1 -1
  187. package/src/sap/fe/core/messagebundle_en.properties +267 -2
  188. package/src/sap/fe/core/messagebundle_sl.properties +1 -1
  189. package/src/sap/fe/core/operationsHelper.js +2 -1
  190. package/src/sap/fe/core/operationsHelper.ts +1 -0
  191. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
  192. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
  193. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  194. package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
  195. package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
  196. package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
  197. package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
  198. package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
  201. package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
  203. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
  204. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  205. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  206. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
  207. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  208. package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
  209. package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
  210. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  211. package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
  212. package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
  213. package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
  214. package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
  215. package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
  216. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  217. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
  218. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  219. package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
  220. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
  221. package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
  222. package/src/sap/fe/core/templating/FilterHelper.js +13 -10
  223. package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
  224. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  225. package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
  226. package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
  227. package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
  228. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  229. package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
  230. package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
  231. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
  232. package/src/sap/fe/core/templating/UIFormatters.js +23 -22
  233. package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
  234. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  235. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
  236. package/src/sap/fe/core/type/EDM.js +1 -1
  237. package/src/sap/fe/core/type/EDM.ts +2 -2
  238. package/src/sap/fe/core/type/Email.js +1 -1
  239. package/src/sap/fe/core/type/Email.ts +1 -1
  240. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  241. package/src/sap/fe/core/type/FiscalDate.ts +2 -2
@@ -109,7 +109,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
109
109
  */;
110
110
  _proto._checkNavigationToErrorPage = function _checkNavigationToErrorPage(mParameters) {
111
111
  const model = this.base.getView().getModel();
112
- const aUnboundMessages = messageHandling.getMessages(undefined, undefined, undefined, model);
112
+ const aUnboundMessages = messageHandling.getMessages();
113
113
  const bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog();
114
114
  const aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [];
115
115
  const aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [];
@@ -198,4 +198,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
198
198
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
199
199
  return MessageHandler;
200
200
  }, false);
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwic2hvd01lc3NhZ2VEaWFsb2ciLCJtUGFyYW1ldGVycyIsImN1c3RvbU1lc3NhZ2VzIiwidW5kZWZpbmVkIiwib09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJ2aWV3VHlwZSIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJjb25jdXJyZW50RWRpdEZsYWciLCJjb250cm9sIiwic0FjdGlvbk5hbWUiLCJvbkJlZm9yZVNob3dNZXNzYWdlIiwidGhlbiIsImNhdGNoIiwicmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzIiwia2VlcEJvdW5kTWVzc2FnZSIsImtlZXBVbmJvdW5kTWVzc2FnZSIsInNQYXRoVG9CZVJlbW92ZWQiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsInJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJfY2hlY2tOYXZpZ2F0aW9uVG9FcnJvclBhZ2UiLCJtb2RlbCIsImdldE1vZGVsIiwiYVVuYm91bmRNZXNzYWdlcyIsImdldE1lc3NhZ2VzIiwiYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsImJJc1N0aWNreUVkaXRNb2RlIiwiQ29tbW9uVXRpbHMiLCJpc1N0aWNreUVkaXRNb2RlIiwibU1lc3NhZ2VQYWdlUGFyYW1ldGVycyIsImlzRGF0YVJlY2VpdmVkRXJyb3IiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibmF2aWdhdGVCYWNrVG9PcmlnaW4iLCJlcnJvclR5cGUiLCJsZW5ndGgiLCJpc0luaXRpYWxMb2FkNTAzRXJyb3IiLCJvTWVzc2FnZSIsIm9UZWNobmljYWxEZXRhaWxzIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsImh0dHBTdGF0dXMiLCJfZ2V0SFRUUDUwM01lc3NhZ2VQYXJhbWV0ZXJzIiwibWVzc2FnZSIsInRlY2huaWNhbERldGFpbHMiLCJtZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJzZWNvbmRzQmVmb3JlUmV0cnkiLCJyZXRyeUFmdGVyIiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwicmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImdldE1lc3NhZ2UiLCJkUmV0cnlBZnRlciIsImRDdXJyZW50RGF0ZVRpbWUiLCJEYXRlIiwiaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiZ2V0VGltZSIsImlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImlTZWNvbmRzQmVmb3JlUmV0cnkiLCJzaG93TWVzc2FnZXMiLCJwYXJhbWV0ZXJzIiwibWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2siLCJoYW5kbGVTaGVsbEJhY2siLCJzaGVsbEJhY2siLCJvUmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9NZXNzYWdlUGFnZSIsImdldFRleHQiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNZXNzYWdlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVRlY2huaWNhbERldGFpbHMsIFNob3dNZXNzYWdlUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9tZXNzYWdlSGFuZGxlci9tZXNzYWdlSGFuZGxpbmdcIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvcmVMaWIgZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG50eXBlIE9iamVjdFdpdGhDb252ZXJ0ZXJUeXBlID0gb2JqZWN0ICYge1xuXHRjb252ZXJ0ZXJUeXBlOiBzdHJpbmc7XG59O1xudHlwZSBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VQYXJhbWV0ZXIgPSB7XG5cdGN1c3RvbU1lc3NhZ2VzPzogQ3VzdG9tTWVzc2FnZVtdO1xuXHRjb25jdXJyZW50RWRpdEZsYWc/OiBib29sZWFuO1xuXHRpc0RhdGFSZWNlaXZlZEVycm9yPzogYm9vbGVhbjtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRpc0luaXRpYWxMb2FkNTAzRXJyb3I/OiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCA9IHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRlcnJvclR5cGU/OiBzdHJpbmc7XG5cdG5hdmlnYXRlQmFja1RvT3JpZ2luPzogYm9vbGVhbjtcblx0aGFuZGxlU2hlbGxCYWNrPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBDdXN0b21NZXNzYWdlID0ge1xuXHRjb2RlOiBzdHJpbmc7XG5cdHRleHQ6IHN0cmluZztcblx0cGVyc2lzdGVudDogYm9vbGVhbjtcblx0dHlwZTogQ29yZUxpYi5NZXNzYWdlVHlwZTtcbn07XG50eXBlIFNob3dNZXNzYWdlRGlhbG9nUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0aXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuPzogYm9vbGVhbjtcblx0Y29udGV4dD86IENvbnRleHQ7XG5cdGNvbmN1cnJlbnRFZGl0RmxhZz86IGJvb2xlYW47XG5cdGNvbnRyb2w/OiBDb250cm9sO1xuXHRzQWN0aW9uTmFtZT86IHN0cmluZztcblx0YVNlbGVjdGVkQ29udGV4dHM/OiBPRGF0YVY0Q29udGV4dFtdO1xuXHRvbkJlZm9yZVNob3dNZXNzYWdlPzogKG1lc3NhZ2VzOiBNZXNzYWdlW10sIHNob3dNZXNzYWdlUGFyYW1ldGVyczogU2hvd01lc3NhZ2VQYXJhbWV0ZXJzKSA9PiBTaG93TWVzc2FnZVBhcmFtZXRlcnM7XG59O1xuXG4vKipcbiAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgbWVzc2FnZSBoYW5kbGluZy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS45MC4wXG4gKiBAc2luY2UgMS45MC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyXCIpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMgRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgZGlhbG9nIHdpdGggdHJhbnNpdGlvbiBtZXNzYWdlcyBpZiB0aGVyZSBhcmUgYW55LlxuXHQgKiBUaGUgbWVzc2FnZSBkaWFsb2cgaXMgc2hvd24gYXMgYSBtb2RhbCBkaWFsb2cuIE9uY2UgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRpYWxvZywgYWxsIHRyYW5zaXRpb24gbWVzc2FnZXNcblx0ICogYXJlIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBtZXNzYWdlLCBhIGxpc3Qgb2YgbWVzc2FnZXMgaXMgc2hvd24uIFRoZSB1c2VyXG5cdCAqIGNhbiBmaWx0ZXIgb24gbWVzc2FnZSB0eXBlcyBhbmQgY2FuIGRpc3BsYXkgZGV0YWlscyBhcyB3ZWxsIGFzIHRoZSBsb25nIHRleHQuIElmIHRoZXJlIGlzIG9uZSBtZXNzYWdlLFxuXHQgKiB0aGUgZGlhbG9nIGltbWVkaWF0ZWx5IHNob3dzIHRoZSBkZXRhaWxzIG9mIHRoZSBtZXNzYWdlLiBJZiB0aGVyZSBpcyBqdXN0IG9uZSBzdWNjZXNzIG1lc3NhZ2UsIGEgbWVzc2FnZVxuXHQgKiB0b2FzdCBpcyBzaG93biBpbnN0ZWFkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgUFJJVkFURVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBwdWJsaWNcblx0ICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuXHQgKiBAc2luY2UgMS45MC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgc2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlcik6IFByb21pc2U8Ym9vbGVhbiB8IERpYWxvZz4ge1xuXHRcdGNvbnN0IGN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IHVuZGVmaW5lZCxcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgdmlld1R5cGUgPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIE9iamVjdFdpdGhDb252ZXJ0ZXJUeXBlKS5jb252ZXJ0ZXJUeXBlO1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IChcblx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdCkgYXMgT0RhdGFWNENvbnRleHQ7XG5cdFx0Ly9jb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbiB8IERpYWxvZz4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCk6IHZvaWQge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRtZXNzYWdlSGFuZGxpbmdcblx0XHRcdFx0XHQuc2hvd1VuYm91bmRNZXNzYWdlcyhcblx0XHRcdFx0XHRcdGN1c3RvbU1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0YlNob3dCb3VuZE1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LmNvbmN1cnJlbnRFZGl0RmxhZyxcblx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzPy5jb250cm9sLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LnNBY3Rpb25OYW1lLFxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/Lm9uQmVmb3JlU2hvd01lc3NhZ2UsXG5cdFx0XHRcdFx0XHR2aWV3VHlwZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogWW91IGNhbiByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggdGhpcyBtZXRob2QuXG5cdCAqIFdpdGggZXZlcnkgdXNlciBpbnRlcmFjdGlvbiB0aGF0IGNhdXNlcyBzZXJ2ZXIgY29tbXVuaWNhdGlvbiAobGlrZSBjbGlja2luZyBvbiBhbiBhY3Rpb24sIGNoYW5naW5nIGRhdGEpLFxuXHQgKiB0aGlzIG1ldGhvZCByZW1vdmVzIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKiBAcGFyYW0ga2VlcFVuYm91bmRNZXNzYWdlXG5cdCAqIEBwYXJhbSBzUGF0aFRvQmVSZW1vdmVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKGtlZXBCb3VuZE1lc3NhZ2U/OiBib29sZWFuLCBrZWVwVW5ib3VuZE1lc3NhZ2U/OiBib29sZWFuLCBzUGF0aFRvQmVSZW1vdmVkPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKCFrZWVwQm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoc1BhdGhUb0JlUmVtb3ZlZCk7XG5cdFx0fVxuXHRcdGlmICgha2VlcFVuYm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdGhhdCByZXR1cm5zIGFsbCB0aGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBlcnJvciBwYWdlLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnNcblx0ICogQHJldHVybnMgVGhlIHBhcmFtZXRlcnMgbmVjZXNzYXJ5IGZvciB0aGUgbmF2aWdhdGlvbiB0byB0aGUgZXJyb3IgcGFnZVxuXHQgKi9cblx0X2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlKG1QYXJhbWV0ZXJzPzogTmF2aWdhdGlvblRvRXJyb3JQYWdlUGFyYW1ldGVyKTogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBhVW5ib3VuZE1lc3NhZ2VzID0gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG1vZGVsKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzOiBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VSZXN1bHQgfCB1bmRlZmluZWQ7XG5cblx0XHQvLyBUT0RPOiBTdGljayBtb2RlIGNoZWNrIGlzIG9rYXkgYXMgbG9uZyBhcyB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaXMgdXNlZCB3aXRoIHNhcC5mZS5jb3JlIGFuZCBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuXG5cdFx0Ly8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIHByb3ZpZGUgYW4gZXh0ZW5zaW9uIHRvIHRoZSBjb25zdW1lciBvZiB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdG8gcHJvdmlkZSB0aGlzIHZhbHVlLlxuXG5cdFx0Ly8gVGhlIG1lc3NhZ2UgcGFnZSBjYW4gb25seSBzaG93IDEgbWVzc2FnZSB0b2RheSwgc28gd2UgbmF2aWdhdGUgdG8gaXQgd2hlbiA6XG5cdFx0Ly8gMS4gVGhlcmUgYXJlIG5vIGJvdW5kIHRyYW5zaXRpb24gbWVzc2FnZXMgdG8gc2hvdyxcblx0XHQvLyAyLiBUaGVyZSBhcmUgbm8gY3VzdG9tIG1lc3NhZ2VzIHRvIHNob3csICZcblx0XHQvLyAzLiBUaGVyZSBpcyBleGFjdGx5IDEgdW5ib3VuZCBtZXNzYWdlIGluIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggc3RhdHVzQ29kZT01MDMgYW5kIHJldHJ5LUFmdGVyIGF2YWlsYWJsZVxuXHRcdC8vIDQuIHJldHJ5QWZ0ZXIgaXMgZ3JlYXRlciB0aGFuIDEyMCBzZWNvbmRzXG5cdFx0Ly9cblx0XHQvLyBJbiBBZGRpdGlvbiwgbmF2aWdhdGluZyBhd2F5IGZyb20gYSBzdGlja3kgc2Vzc2lvbiB3aWxsIGRlc3Ryb3kgdGhlIHNlc3Npb24gc28gd2UgZG8gbm90IG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZSBmb3Igbm93LlxuXHRcdC8vIFRPRE86IGNoZWNrIGlmIG5hdmlnYXRpb24gc2hvdWxkIGJlIGRvbmUgaW4gc3RpY2t5IGVkaXQgbW9kZS5cblx0XHRpZiAobVBhcmFtZXRlcnM/LmlzRGF0YVJlY2VpdmVkRXJyb3IgPT09IHRydWUpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZSxcblx0XHRcdFx0ZXJyb3JUeXBlOiBcIlBhZ2VOb3RGb3VuZFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQhYklzU3RpY2t5RWRpdE1vZGUgJiZcblx0XHRcdCFhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMubGVuZ3RoICYmXG5cdFx0XHQhYUN1c3RvbU1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0KGFVbmJvdW5kTWVzc2FnZXMubGVuZ3RoID09PSAxIHx8IG1QYXJhbWV0ZXJzPy5pc0luaXRpYWxMb2FkNTAzRXJyb3IgPT09IHRydWUpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBvTWVzc2FnZSA9IGFVbmJvdW5kTWVzc2FnZXNbMF07XG5cdFx0XHRjb25zdCBvVGVjaG5pY2FsRGV0YWlscyA9IG9NZXNzYWdlLmdldFRlY2huaWNhbERldGFpbHMoKSBhcyBNZXNzYWdlVGVjaG5pY2FsRGV0YWlscyB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChvVGVjaG5pY2FsRGV0YWlscz8uaHR0cFN0YXR1cyA9PT0gNTAzKSB7XG5cdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB0aGlzLl9nZXRIVFRQNTAzTWVzc2FnZVBhcmFtZXRlcnMob01lc3NhZ2UsIG9UZWNobmljYWxEZXRhaWxzKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0SFRUUDUwM01lc3NhZ2VQYXJhbWV0ZXJzKG1lc3NhZ2U6IE1lc3NhZ2UsIHRlY2huaWNhbERldGFpbHM6IE1lc3NhZ2VUZWNobmljYWxEZXRhaWxzKTogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWVzc2FnZVBhZ2VQYXJhbWV0ZXJzOiBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VSZXN1bHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBzZWNvbmRzQmVmb3JlUmV0cnkgPVxuXHRcdFx0dGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyICE9PSB1bmRlZmluZWQgPyB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcih0ZWNobmljYWxEZXRhaWxzLnJldHJ5QWZ0ZXIpIDogdW5kZWZpbmVkO1xuXG5cdFx0aWYgKHNlY29uZHNCZWZvcmVSZXRyeSA9PT0gdW5kZWZpbmVkIHx8IHNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0Y29uc3QgcmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2UobWVzc2FnZSk7XG5cdFx0XHRtZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdGRlc2NyaXB0aW9uOiByZXRyeUFmdGVyTWVzc2FnZSA/IGAke3JldHJ5QWZ0ZXJNZXNzYWdlfSAke21lc3NhZ2UuZ2V0TWVzc2FnZSgpfWAgOiBtZXNzYWdlLmdldE1lc3NhZ2UoKSxcblx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWUsXG5cdFx0XHRcdGVycm9yVHlwZTogXCJVbmFibGVUb0xvYWRcIlxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXHR9XG5cblx0X2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyKGRSZXRyeUFmdGVyOiBEYXRlKTogbnVtYmVyIHtcblx0XHRjb25zdCBkQ3VycmVudERhdGVUaW1lID0gbmV3IERhdGUoKSxcblx0XHRcdGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyA9IGRDdXJyZW50RGF0ZVRpbWUuZ2V0VGltZSgpLFxuXHRcdFx0aVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZFJldHJ5QWZ0ZXIuZ2V0VGltZSgpLFxuXHRcdFx0aVNlY29uZHNCZWZvcmVSZXRyeSA9IChpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgLSBpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMpIC8gMTAwMDtcblx0XHRyZXR1cm4gaVNlY29uZHNCZWZvcmVSZXRyeTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSBbcGFyYW1ldGVyc11cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlciBjbG9zZXMgdGhlIG1lc3NhZ2UgZGlhbG9nIG9yIHdoZW4gbmF2aWdhdGlvbiB0byB0aGUgbWVzc2FnZSBwYWdlIGlzIGNvbXBsZXRlLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgc2hvd01lc3NhZ2VzKFxuXHRcdHBhcmFtZXRlcnM/OiBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlciAmIHtcblx0XHRcdG1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cdFx0XHRzaGVsbEJhY2s/OiBGdW5jdGlvbjtcblx0XHRcdGlzRGF0YVJlY2VpdmVkRXJyb3I/OiBib29sZWFuO1xuXHRcdH1cblx0KTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbiB8IERpYWxvZz4ge1xuXHRcdGNvbnN0IG1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlKHBhcmFtZXRlcnMpO1xuXG5cdFx0aWYgKG1lc3NhZ2VQYWdlUGFyYW1ldGVycykge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0Ly8gaGFuZGxlciBiZWZvcmUgcGFnZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUgdG8gY2xvc2UgdGhlIGFjdGlvbiBwYXJhbWV0ZXIgZGlhbG9nXG5cdFx0XHRpZiAocGFyYW1ldGVycz8ubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2spIHtcblx0XHRcdFx0cGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaygpO1xuXHRcdFx0fVxuXG5cdFx0XHRtZXNzYWdlUGFnZVBhcmFtZXRlcnMuaGFuZGxlU2hlbGxCYWNrID0gIXBhcmFtZXRlcnM/LnNoZWxsQmFjaztcblx0XHRcdHRoaXMucmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKCk7XG5cdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0XHR0aGlzLmJhc2UuX3JvdXRpbmdcblx0XHRcdFx0XHRcdC5uYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnM/LmlzRGF0YVJlY2VpdmVkRXJyb3IgPT09IHRydWVcblx0XHRcdFx0XHRcdFx0XHQ/IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfREFUQV9SRUNFSVZFRF9FUlJPUlwiKVxuXHRcdFx0XHRcdFx0XHRcdDogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfNTAzX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlUGFnZVBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBkaWFsb2dcblx0XHRcdHJldHVybiB0aGlzLnNob3dNZXNzYWdlRGlhbG9nKHBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7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
201
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwic2hvd01lc3NhZ2VEaWFsb2ciLCJtUGFyYW1ldGVycyIsImN1c3RvbU1lc3NhZ2VzIiwidW5kZWZpbmVkIiwib09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJ2aWV3VHlwZSIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJjb25jdXJyZW50RWRpdEZsYWciLCJjb250cm9sIiwic0FjdGlvbk5hbWUiLCJvbkJlZm9yZVNob3dNZXNzYWdlIiwidGhlbiIsImNhdGNoIiwicmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzIiwia2VlcEJvdW5kTWVzc2FnZSIsImtlZXBVbmJvdW5kTWVzc2FnZSIsInNQYXRoVG9CZVJlbW92ZWQiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsInJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJfY2hlY2tOYXZpZ2F0aW9uVG9FcnJvclBhZ2UiLCJtb2RlbCIsImdldE1vZGVsIiwiYVVuYm91bmRNZXNzYWdlcyIsImdldE1lc3NhZ2VzIiwiYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsImJJc1N0aWNreUVkaXRNb2RlIiwiQ29tbW9uVXRpbHMiLCJpc1N0aWNreUVkaXRNb2RlIiwibU1lc3NhZ2VQYWdlUGFyYW1ldGVycyIsImlzRGF0YVJlY2VpdmVkRXJyb3IiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibmF2aWdhdGVCYWNrVG9PcmlnaW4iLCJlcnJvclR5cGUiLCJsZW5ndGgiLCJpc0luaXRpYWxMb2FkNTAzRXJyb3IiLCJvTWVzc2FnZSIsIm9UZWNobmljYWxEZXRhaWxzIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsImh0dHBTdGF0dXMiLCJfZ2V0SFRUUDUwM01lc3NhZ2VQYXJhbWV0ZXJzIiwibWVzc2FnZSIsInRlY2huaWNhbERldGFpbHMiLCJtZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJzZWNvbmRzQmVmb3JlUmV0cnkiLCJyZXRyeUFmdGVyIiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwicmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImdldE1lc3NhZ2UiLCJkUmV0cnlBZnRlciIsImRDdXJyZW50RGF0ZVRpbWUiLCJEYXRlIiwiaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiZ2V0VGltZSIsImlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImlTZWNvbmRzQmVmb3JlUmV0cnkiLCJzaG93TWVzc2FnZXMiLCJwYXJhbWV0ZXJzIiwibWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2siLCJoYW5kbGVTaGVsbEJhY2siLCJzaGVsbEJhY2siLCJvUmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9NZXNzYWdlUGFnZSIsImdldFRleHQiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNZXNzYWdlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVRlY2huaWNhbERldGFpbHMsIFNob3dNZXNzYWdlUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9tZXNzYWdlSGFuZGxlci9tZXNzYWdlSGFuZGxpbmdcIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvcmVMaWIgZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG50eXBlIE9iamVjdFdpdGhDb252ZXJ0ZXJUeXBlID0gb2JqZWN0ICYge1xuXHRjb252ZXJ0ZXJUeXBlOiBzdHJpbmc7XG59O1xudHlwZSBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VQYXJhbWV0ZXIgPSB7XG5cdGN1c3RvbU1lc3NhZ2VzPzogQ3VzdG9tTWVzc2FnZVtdO1xuXHRjb25jdXJyZW50RWRpdEZsYWc/OiBib29sZWFuO1xuXHRpc0RhdGFSZWNlaXZlZEVycm9yPzogYm9vbGVhbjtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRpc0luaXRpYWxMb2FkNTAzRXJyb3I/OiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCA9IHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRlcnJvclR5cGU/OiBzdHJpbmc7XG5cdG5hdmlnYXRlQmFja1RvT3JpZ2luPzogYm9vbGVhbjtcblx0aGFuZGxlU2hlbGxCYWNrPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBDdXN0b21NZXNzYWdlID0ge1xuXHRjb2RlOiBzdHJpbmc7XG5cdHRleHQ6IHN0cmluZztcblx0cGVyc2lzdGVudDogYm9vbGVhbjtcblx0dHlwZTogQ29yZUxpYi5NZXNzYWdlVHlwZTtcbn07XG50eXBlIFNob3dNZXNzYWdlRGlhbG9nUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0aXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuPzogYm9vbGVhbjtcblx0Y29udGV4dD86IENvbnRleHQ7XG5cdGNvbmN1cnJlbnRFZGl0RmxhZz86IGJvb2xlYW47XG5cdGNvbnRyb2w/OiBDb250cm9sO1xuXHRzQWN0aW9uTmFtZT86IHN0cmluZztcblx0YVNlbGVjdGVkQ29udGV4dHM/OiBPRGF0YVY0Q29udGV4dFtdO1xuXHRvbkJlZm9yZVNob3dNZXNzYWdlPzogKG1lc3NhZ2VzOiBNZXNzYWdlW10sIHNob3dNZXNzYWdlUGFyYW1ldGVyczogU2hvd01lc3NhZ2VQYXJhbWV0ZXJzKSA9PiBTaG93TWVzc2FnZVBhcmFtZXRlcnM7XG59O1xuXG4vKipcbiAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgbWVzc2FnZSBoYW5kbGluZy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS45MC4wXG4gKiBAc2luY2UgMS45MC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyXCIpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMgRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgZGlhbG9nIHdpdGggdHJhbnNpdGlvbiBtZXNzYWdlcyBpZiB0aGVyZSBhcmUgYW55LlxuXHQgKiBUaGUgbWVzc2FnZSBkaWFsb2cgaXMgc2hvd24gYXMgYSBtb2RhbCBkaWFsb2cuIE9uY2UgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRpYWxvZywgYWxsIHRyYW5zaXRpb24gbWVzc2FnZXNcblx0ICogYXJlIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBtZXNzYWdlLCBhIGxpc3Qgb2YgbWVzc2FnZXMgaXMgc2hvd24uIFRoZSB1c2VyXG5cdCAqIGNhbiBmaWx0ZXIgb24gbWVzc2FnZSB0eXBlcyBhbmQgY2FuIGRpc3BsYXkgZGV0YWlscyBhcyB3ZWxsIGFzIHRoZSBsb25nIHRleHQuIElmIHRoZXJlIGlzIG9uZSBtZXNzYWdlLFxuXHQgKiB0aGUgZGlhbG9nIGltbWVkaWF0ZWx5IHNob3dzIHRoZSBkZXRhaWxzIG9mIHRoZSBtZXNzYWdlLiBJZiB0aGVyZSBpcyBqdXN0IG9uZSBzdWNjZXNzIG1lc3NhZ2UsIGEgbWVzc2FnZVxuXHQgKiB0b2FzdCBpcyBzaG93biBpbnN0ZWFkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgUFJJVkFURVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBwdWJsaWNcblx0ICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuXHQgKiBAc2luY2UgMS45MC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgc2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlcik6IFByb21pc2U8Ym9vbGVhbiB8IERpYWxvZz4ge1xuXHRcdGNvbnN0IGN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IHVuZGVmaW5lZCxcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgdmlld1R5cGUgPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIE9iamVjdFdpdGhDb252ZXJ0ZXJUeXBlKS5jb252ZXJ0ZXJUeXBlO1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IChcblx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdCkgYXMgT0RhdGFWNENvbnRleHQ7XG5cdFx0Ly9jb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbiB8IERpYWxvZz4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCk6IHZvaWQge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRtZXNzYWdlSGFuZGxpbmdcblx0XHRcdFx0XHQuc2hvd1VuYm91bmRNZXNzYWdlcyhcblx0XHRcdFx0XHRcdGN1c3RvbU1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0YlNob3dCb3VuZE1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LmNvbmN1cnJlbnRFZGl0RmxhZyxcblx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzPy5jb250cm9sLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LnNBY3Rpb25OYW1lLFxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/Lm9uQmVmb3JlU2hvd01lc3NhZ2UsXG5cdFx0XHRcdFx0XHR2aWV3VHlwZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogWW91IGNhbiByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggdGhpcyBtZXRob2QuXG5cdCAqIFdpdGggZXZlcnkgdXNlciBpbnRlcmFjdGlvbiB0aGF0IGNhdXNlcyBzZXJ2ZXIgY29tbXVuaWNhdGlvbiAobGlrZSBjbGlja2luZyBvbiBhbiBhY3Rpb24sIGNoYW5naW5nIGRhdGEpLFxuXHQgKiB0aGlzIG1ldGhvZCByZW1vdmVzIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKiBAcGFyYW0ga2VlcFVuYm91bmRNZXNzYWdlXG5cdCAqIEBwYXJhbSBzUGF0aFRvQmVSZW1vdmVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKGtlZXBCb3VuZE1lc3NhZ2U/OiBib29sZWFuLCBrZWVwVW5ib3VuZE1lc3NhZ2U/OiBib29sZWFuLCBzUGF0aFRvQmVSZW1vdmVkPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKCFrZWVwQm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoc1BhdGhUb0JlUmVtb3ZlZCk7XG5cdFx0fVxuXHRcdGlmICgha2VlcFVuYm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdGhhdCByZXR1cm5zIGFsbCB0aGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBlcnJvciBwYWdlLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnNcblx0ICogQHJldHVybnMgVGhlIHBhcmFtZXRlcnMgbmVjZXNzYXJ5IGZvciB0aGUgbmF2aWdhdGlvbiB0byB0aGUgZXJyb3IgcGFnZVxuXHQgKi9cblx0X2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlKG1QYXJhbWV0ZXJzPzogTmF2aWdhdGlvblRvRXJyb3JQYWdlUGFyYW1ldGVyKTogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBhVW5ib3VuZE1lc3NhZ2VzID0gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKCk7XG5cdFx0Y29uc3QgYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IHRoaXMuZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKTtcblx0XHRjb25zdCBhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPSBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID8gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKHRydWUsIHRydWUpIDogW107XG5cdFx0Y29uc3QgYUN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IFtdO1xuXHRcdGNvbnN0IGJJc1N0aWNreUVkaXRNb2RlID0gQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZSh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVyczogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzPy5pc0RhdGFSZWNlaXZlZEVycm9yID09PSB0cnVlKSB7XG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHR0aXRsZTogbVBhcmFtZXRlcnMudGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbixcblx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWUsXG5cdFx0XHRcdGVycm9yVHlwZTogXCJQYWdlTm90Rm91bmRcIlxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCBtUGFyYW1ldGVycz8uaXNJbml0aWFsTG9hZDUwM0Vycm9yID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgb01lc3NhZ2UgPSBhVW5ib3VuZE1lc3NhZ2VzWzBdO1xuXHRcdFx0Y29uc3Qgb1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCkgYXMgTWVzc2FnZVRlY2huaWNhbERldGFpbHMgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHM/Lmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0gdGhpcy5fZ2V0SFRUUDUwM01lc3NhZ2VQYXJhbWV0ZXJzKG9NZXNzYWdlLCBvVGVjaG5pY2FsRGV0YWlscyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXHR9XG5cblx0X2dldEhUVFA1MDNNZXNzYWdlUGFyYW1ldGVycyhtZXNzYWdlOiBNZXNzYWdlLCB0ZWNobmljYWxEZXRhaWxzOiBNZXNzYWdlVGVjaG5pY2FsRGV0YWlscyk6IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG1lc3NhZ2VQYWdlUGFyYW1ldGVyczogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3Qgc2Vjb25kc0JlZm9yZVJldHJ5ID1cblx0XHRcdHRlY2huaWNhbERldGFpbHMucmV0cnlBZnRlciAhPT0gdW5kZWZpbmVkID8gdGhpcy5fZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIodGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKSA6IHVuZGVmaW5lZDtcblxuXHRcdGlmIChzZWNvbmRzQmVmb3JlUmV0cnkgPT09IHVuZGVmaW5lZCB8fCBzZWNvbmRzQmVmb3JlUmV0cnkgPiAxMjApIHtcblx0XHRcdGNvbnN0IHJldHJ5QWZ0ZXJNZXNzYWdlID0gbWVzc2FnZUhhbmRsaW5nLmdldFJldHJ5QWZ0ZXJNZXNzYWdlKG1lc3NhZ2UpO1xuXHRcdFx0bWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRkZXNjcmlwdGlvbjogcmV0cnlBZnRlck1lc3NhZ2UgPyBgJHtyZXRyeUFmdGVyTWVzc2FnZX0gJHttZXNzYWdlLmdldE1lc3NhZ2UoKX1gIDogbWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlLFxuXHRcdFx0XHRlcnJvclR5cGU6IFwiVW5hYmxlVG9Mb2FkXCJcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lc3NhZ2VQYWdlUGFyYW1ldGVycztcblx0fVxuXG5cdF9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihkUmV0cnlBZnRlcjogRGF0ZSk6IG51bWJlciB7XG5cdFx0Y29uc3QgZEN1cnJlbnREYXRlVGltZSA9IG5ldyBEYXRlKCksXG5cdFx0XHRpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkQ3VycmVudERhdGVUaW1lLmdldFRpbWUoKSxcblx0XHRcdGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyA9IGRSZXRyeUFmdGVyLmdldFRpbWUoKSxcblx0XHRcdGlTZWNvbmRzQmVmb3JlUmV0cnkgPSAoaVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzIC0gaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzKSAvIDEwMDA7XG5cdFx0cmV0dXJuIGlTZWNvbmRzQmVmb3JlUmV0cnk7XG5cdH1cblxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIHBhZ2Ugb3IgYSBtZXNzYWdlIGRpYWxvZyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKlxuXHQgKiBAcGFyYW0gW3BhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXIgY2xvc2VzIHRoZSBtZXNzYWdlIGRpYWxvZyBvciB3aGVuIG5hdmlnYXRpb24gdG8gdGhlIG1lc3NhZ2UgcGFnZSBpcyBjb21wbGV0ZS4gSWYgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzXG5cdCAqIHRvIGJlIHNob3duLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBpbW1lZGlhdGVseVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHNob3dNZXNzYWdlcyhcblx0XHRwYXJhbWV0ZXJzPzogU2hvd01lc3NhZ2VEaWFsb2dQYXJhbWV0ZXIgJiB7XG5cdFx0XHRtZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRcdFx0c2hlbGxCYWNrPzogRnVuY3Rpb247XG5cdFx0XHRpc0RhdGFSZWNlaXZlZEVycm9yPzogYm9vbGVhbjtcblx0XHR9XG5cdCk6IFByb21pc2U8dm9pZCB8IGJvb2xlYW4gfCBEaWFsb2c+IHtcblx0XHRjb25zdCBtZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB0aGlzLl9jaGVja05hdmlnYXRpb25Ub0Vycm9yUGFnZShwYXJhbWV0ZXJzKTtcblxuXHRcdGlmIChtZXNzYWdlUGFnZVBhcmFtZXRlcnMpIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZS5cblx0XHRcdC8vIGhhbmRsZXIgYmVmb3JlIHBhZ2UgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQsIGZvciBleGFtcGxlIHRvIGNsb3NlIHRoZSBhY3Rpb24gcGFyYW1ldGVyIGRpYWxvZ1xuXHRcdFx0aWYgKHBhcmFtZXRlcnM/Lm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrKSB7XG5cdFx0XHRcdHBhcmFtZXRlcnMubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2soKTtcblx0XHRcdH1cblxuXHRcdFx0bWVzc2FnZVBhZ2VQYXJhbWV0ZXJzLmhhbmRsZVNoZWxsQmFjayA9ICFwYXJhbWV0ZXJzPy5zaGVsbEJhY2s7XG5cdFx0XHR0aGlzLnJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdFx0dGhpcy5iYXNlLl9yb3V0aW5nXG5cdFx0XHRcdFx0XHQubmF2aWdhdGVUb01lc3NhZ2VQYWdlKFxuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzPy5pc0RhdGFSZWNlaXZlZEVycm9yID09PSB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0PyBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0RBVEFfUkVDRUlWRURfRVJST1JcIilcblx0XHRcdFx0XHRcdFx0XHQ6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFXzUwM19USVRMRVwiKSxcblx0XHRcdFx0XHRcdFx0bWVzc2FnZVBhZ2VQYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgZGlhbG9nXG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZURpYWxvZyhwYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBbURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
@@ -162,7 +162,7 @@ class MessageHandler extends ControllerExtension {
162
162
  */
163
163
  _checkNavigationToErrorPage(mParameters?: NavigationToErrorPageParameter): NavigationToErrorPageResult | undefined {
164
164
  const model = this.base.getView().getModel();
165
- const aUnboundMessages = messageHandling.getMessages(undefined, undefined, undefined, model);
165
+ const aUnboundMessages = messageHandling.getMessages();
166
166
  const bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog();
167
167
  const aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [];
168
168
  const aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [];
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2024 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQueryWatcher", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/services/TemplatedViewServiceFactory", "sap/ui/base/EventProvider", "sap/ui/core/Component", "sap/ui/core/Core", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "../CommonUtils"], function (Log, DataQueryWatcher, ClassSupport, TemplatedViewServiceFactory, EventProvider, Component, Core, ControllerExtension, OverrideExecution, CommonUtils) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQueryWatcher", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/services/TemplatedViewServiceFactory", "sap/ui/base/EventProvider", "sap/ui/core/Component", "sap/ui/core/Core", "sap/ui/core/Rendering", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "../CommonUtils"], function (Log, DataQueryWatcher, ClassSupport, TemplatedViewServiceFactory, EventProvider, Component, Core, Rendering, ControllerExtension, OverrideExecution, CommonUtils) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _class, _class2;
@@ -220,7 +220,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
220
220
  let bFromNav = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
221
221
  const fnUIUpdated = () => {
222
222
  // Wait until the UI is no longer dirty
223
- if (!Core.getUIDirty()) {
223
+ if (!Rendering.isPending()) {
224
224
  Core.detachEvent("UIUpdated", fnUIUpdated);
225
225
  this._bWaitingForRefresh = false;
226
226
  this.checkPageReadyDebounced();
@@ -229,7 +229,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
229
229
 
230
230
  // In case UIUpdate does not get called, check if UI is not dirty and then call _checkPageReady
231
231
  const checkUIUpdated = () => {
232
- if (Core.getUIDirty()) {
232
+ if (Rendering.isPending()) {
233
233
  setTimeout(checkUIUpdated, 500);
234
234
  } else if (this._bWaitingForRefresh) {
235
235
  this._bWaitingForRefresh = false;
@@ -239,13 +239,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
239
239
  };
240
240
  if (this.bShown && this.queryWatcher.isDataReceived() !== false && this.bTablesChartsLoaded !== false && (!this.isContextExpected() || this.bHasContext) // Either no context is expected or there is one
241
241
  ) {
242
- if (this.queryWatcher.isDataReceived() === true && !bFromNav && !this._bWaitingForRefresh && Core.getUIDirty()) {
242
+ if (this.queryWatcher.isDataReceived() === true && !bFromNav && !this._bWaitingForRefresh && Rendering.isPending()) {
243
243
  // If we requested data we get notified as soon as the data arrived, so before the next rendering tick
244
244
  this.queryWatcher.resetDataReceived();
245
245
  this._bWaitingForRefresh = true;
246
246
  Core.attachEvent("UIUpdated", fnUIUpdated);
247
247
  setTimeout(checkUIUpdated, 500);
248
- } else if (!this._bWaitingForRefresh && Core.getUIDirty() || this._nbWaits !== 0 || TemplatedViewServiceFactory.getNumberOfViewsInCreationState() > 0 || this.queryWatcher.isSearchPending()) {
248
+ } else if (!this._bWaitingForRefresh && Rendering.isPending() || this._nbWaits !== 0 || TemplatedViewServiceFactory.getNumberOfViewsInCreationState() > 0 || this.queryWatcher.isSearchPending()) {
249
249
  this._bWaitingForRefresh = true;
250
250
  Core.attachEvent("UIUpdated", fnUIUpdated);
251
251
  setTimeout(checkUIUpdated, 500);
@@ -268,4 +268,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
268
268
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onExit", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onExit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitFor", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "waitFor"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatched", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatched"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatchedFinished", [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatchedFinished"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterBinding", [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPageReady", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "isPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitPageReady", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "waitPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEventOnce", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEventOnce"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEvent", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "detachEvent", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "detachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isContextExpected", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "isContextExpected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "checkPageReadyDebounced", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "checkPageReadyDebounced"), _class2.prototype)), _class2)) || _class);
269
269
  return PageReadyControllerExtension;
270
270
  }, false);
271
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCIsIm9uSW5pdCIsIl9uYldhaXRzIiwiX29FdmVudFByb3ZpZGVyIiwiRXZlbnRQcm92aWRlciIsInZpZXciLCJnZXRWaWV3IiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJwYWdlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJtYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJhdHRhY2hDb250YWluZXJEZWZpbmVkIiwib0V2ZW50IiwicmVnaXN0ZXJDb250YWluZXIiLCJnZXRQYXJhbWV0ZXIiLCJyb290Q29udHJvbENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwiaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCIsImF0dGFjaEV2ZW50IiwiZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzIiwiaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAiLCJxdWVyeVdhdGNoZXIiLCJEYXRhUXVlcnlXYXRjaGVyIiwiY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQiLCJiaW5kIiwib25FeGl0IiwiX29BcHBDb21wb25lbnQiLCJfb0NvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsIndhaXRGb3IiLCJvUHJvbWlzZSIsImZpbmFsbHkiLCJzZXRUaW1lb3V0IiwiY2F0Y2giLCJvblJvdXRlTWF0Y2hlZCIsIl9iSXNQYWdlUmVhZHkiLCJvblJvdXRlTWF0Y2hlZEZpbmlzaGVkIiwib25BZnRlckJpbmRpbmdQcm9taXNlIiwicmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMiLCJtYWluQmluZGluZ0NvbnRleHQiLCJtYWluT2JqZWN0QmluZGluZyIsImdldEJpbmRpbmciLCJyZWdpc3RlckJpbmRpbmciLCJhUHJvbWlzZXMiLCJhQ29udHJvbHMiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJmb3JFYWNoIiwib0VsZW1lbnQiLCJvT2JqZWN0QmluZGluZyIsImdldE9iamVjdEJpbmRpbmciLCJhQmluZGluZ0tleXMiLCJPYmplY3QiLCJrZXlzIiwibUJpbmRpbmdJbmZvcyIsInNQcm9wZXJ0eU5hbWUiLCJvTGlzdEJpbmRpbmciLCJiaW5kaW5nIiwiaXNBIiwiYlRhYmxlc0NoYXJ0c0xvYWRlZCIsInB1c2giLCJyZWdpc3RlclRhYmxlT3JDaGFydCIsInJlZ2lzdGVyRmlsdGVyQmFyIiwib25BZnRlckJpbmRpbmciLCJvQmluZGluZ0NvbnRleHQiLCJwYWdlUmVhZHlUaW1lb3V0VGltZXIiLCJjbGVhclRpbWVvdXQiLCJMb2ciLCJlcnJvciIsImZpcmVFdmVudCIsImlzQ29udGV4dEV4cGVjdGVkIiwiYkhhc0NvbnRleHQiLCJfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkIiwiYXR0YWNoRXZlbnRPbmNlIiwidW5kZWZpbmVkIiwicmVzZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyIsImxlbmd0aCIsImFsbCIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInNFdmVudElkIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiZGV0YWNoRXZlbnQiLCJvQ29udGFpbmVyIiwib25CZWZvcmVTaG93IiwiYlNob3duIiwib25CZWZvcmVIaWRlIiwib25BZnRlclNob3ciLCJ0aGVuIiwiYWRkRXZlbnREZWxlZ2F0ZSIsImJGcm9tTmF2IiwicGFnZVJlYWR5VGltZXIiLCJtb2RlbCIsImdldE1vZGVsIiwidGltZU91dCIsImdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIiLCJfY2hlY2tQYWdlUmVhZHkiLCJmblVJVXBkYXRlZCIsIkNvcmUiLCJnZXRVSURpcnR5IiwiX2JXYWl0aW5nRm9yUmVmcmVzaCIsImNoZWNrVUlVcGRhdGVkIiwiaXNEYXRhUmVjZWl2ZWQiLCJyZXNldERhdGFSZWNlaXZlZCIsIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSIsImdldE51bWJlck9mVmlld3NJbkNyZWF0aW9uU3RhdGUiLCJpc1NlYXJjaFBlbmRpbmciLCJmb3JjZVBhZ2VSZWFkeSIsIkNvbnRyb2xsZXJFeHRlbnNpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhZ2VSZWFkeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBEYXRhUXVlcnlXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9wYWdlUmVhZHkvRGF0YVF1ZXJ5V2F0Y2hlclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB7XG5cdGRlZmluZVVJNUNsYXNzLFxuXHRleHRlbnNpYmxlLFxuXHRmaW5hbEV4dGVuc2lvbixcblx0bWV0aG9kT3ZlcnJpZGUsXG5cdHByaXZhdGVFeHRlbnNpb24sXG5cdHB1YmxpY0V4dGVuc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgRXZlbnRQcm92aWRlciBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9CaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2VSZWFkeVwiKVxuY2xhc3MgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByaXZhdGUgX29FdmVudFByb3ZpZGVyITogRXZlbnRQcm92aWRlcjtcblxuXHRwcml2YXRlIHZpZXchOiBWaWV3O1xuXG5cdHByaXZhdGUgYXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgcGFnZUNvbXBvbmVudCE6IENvbXBvbmVudDtcblxuXHRwcml2YXRlIF9vQ29udGFpbmVyITogQ29udHJvbDtcblxuXHRwcml2YXRlIF9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2ZuQ29udGFpbmVyRGVsZWdhdGU/OiBvYmplY3Q7XG5cblx0cHJpdmF0ZSBfbmJXYWl0cyE6IG51bWJlcjtcblxuXHRwcml2YXRlIF9iSXNQYWdlUmVhZHkhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2JXYWl0aW5nRm9yUmVmcmVzaCE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBiU2hvd24hOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYkhhc0NvbnRleHQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlRhYmxlc0NoYXJ0c0xvYWRlZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgcXVlcnlXYXRjaGVyITogRGF0YVF1ZXJ5V2F0Y2hlcjtcblxuXHRwcml2YXRlIG9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCA9IDcwMDA7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0VGltZXI/OiBudW1iZXI7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0PzogbnVtYmVyO1xuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fbmJXYWl0cyA9IDA7XG5cdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIgPSB0aGlzLl9vRXZlbnRQcm92aWRlciA/IHRoaXMuX29FdmVudFByb3ZpZGVyIDogbmV3IEV2ZW50UHJvdmlkZXIoKTtcblx0XHR0aGlzLnZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblxuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMudmlldyk7XG5cdFx0dGhpcy5wYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMudmlldykgYXMgQ29tcG9uZW50O1xuXHRcdGNvbnN0IG1hbmlmZXN0Q29udGVudCA9IHRoaXMuYXBwQ29tcG9uZW50LmdldE1hbmlmZXN0KCk7XG5cdFx0dGhpcy5wYWdlUmVhZHlUaW1lb3V0ID0gbWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXT8ucGFnZVJlYWR5VGltZW91dCA/PyB0aGlzLnBhZ2VSZWFkeVRpbWVvdXREZWZhdWx0O1xuXG5cdFx0aWYgKHRoaXMucGFnZUNvbXBvbmVudD8uYXR0YWNoQ29udGFpbmVyRGVmaW5lZCkge1xuXHRcdFx0dGhpcy5wYWdlQ29tcG9uZW50LmF0dGFjaENvbnRhaW5lckRlZmluZWQoKG9FdmVudDogRXZlbnQ8eyBjb250YWluZXI6IENvbXBvbmVudENvbnRhaW5lciB9PikgPT5cblx0XHRcdFx0dGhpcy5yZWdpc3RlckNvbnRhaW5lcihvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGFpbmVyXCIpKVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZWdpc3RlckNvbnRhaW5lcih0aGlzLnZpZXcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJvb3RDb250cm9sQ29udHJvbGxlciA9IHRoaXMuYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdGNvbnN0IHBsYWNlaG9sZGVyID0gcm9vdENvbnRyb2xDb250cm9sbGVyPy5nZXRQbGFjZWhvbGRlcj8uKCk7XG5cdFx0aWYgKHBsYWNlaG9sZGVyPy5pc1BsYWNlaG9sZGVyRGVidWdFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoXG5cdFx0XHRcdFwicGFnZVJlYWR5XCIsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRwbGFjZWhvbGRlci5nZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMoKS5pUGFnZVJlYWR5RXZlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudChcblx0XHRcdFx0XCJoZXJvZXNCYXRjaFJlY2VpdmVkXCIsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRwbGFjZWhvbGRlci5nZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMoKS5pSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLnF1ZXJ5V2F0Y2hlciA9IG5ldyBEYXRhUXVlcnlXYXRjaGVyKHRoaXMuX29FdmVudFByb3ZpZGVyLCB0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkLmJpbmQodGhpcykpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0cHVibGljIG9uRXhpdCgpOiB2b2lkIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwQ29tcG9uZW50O1xuXHRcdGlmICh0aGlzLl9vQ29udGFpbmVyICYmIHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUpIHtcblx0XHRcdHRoaXMuX29Db250YWluZXIucmVtb3ZlRXZlbnREZWxlZ2F0ZSh0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlKTtcblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIHdhaXRGb3Iob1Byb21pc2U6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkIHtcblx0XHR0aGlzLl9uYldhaXRzKys7XG5cdFx0b1Byb21pc2Vcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fbmJXYWl0cy0tO1xuXHRcdFx0XHR9LCAwKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2gobnVsbCk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvblJvdXRlTWF0Y2hlZCgpOiB2b2lkIHtcblx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdGFzeW5jIG9uUm91dGVNYXRjaGVkRmluaXNoZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5vbkFmdGVyQmluZGluZ1Byb21pc2U7XG5cdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQWdncmVnYXRlZENvbnRyb2xzKG1haW5CaW5kaW5nQ29udGV4dD86IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+W10ge1xuXHRcdGlmIChtYWluQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdGNvbnN0IG1haW5PYmplY3RCaW5kaW5nID0gbWFpbkJpbmRpbmdDb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhtYWluT2JqZWN0QmluZGluZyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYVByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblx0XHRjb25zdCBhQ29udHJvbHMgPSB0aGlzLmdldFZpZXcoKS5maW5kQWdncmVnYXRlZE9iamVjdHModHJ1ZSk7XG5cblx0XHRhQ29udHJvbHMuZm9yRWFjaCgob0VsZW1lbnQ6IE1hbmFnZWRPYmplY3QgJiB7IG1CaW5kaW5nSW5mb3M/OiBSZWNvcmQ8c3RyaW5nLCB7IGJpbmRpbmc/OiBCaW5kaW5nIH0+IH0pOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IG9PYmplY3RCaW5kaW5nID0gb0VsZW1lbnQuZ2V0T2JqZWN0QmluZGluZygpO1xuXHRcdFx0aWYgKG9PYmplY3RCaW5kaW5nKSB7XG5cdFx0XHRcdC8vIFJlZ2lzdGVyIG9uIGFsbCBvYmplY3QgYmluZGluZyAobW9zdGx5IHVzZWQgb24gb2JqZWN0IHBhZ2VzKVxuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcob09iamVjdEJpbmRpbmcpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgYUJpbmRpbmdLZXlzID0gT2JqZWN0LmtleXMob0VsZW1lbnQ/Lm1CaW5kaW5nSW5mb3MgPz8ge30pO1xuXHRcdFx0XHRhQmluZGluZ0tleXMuZm9yRWFjaCgoc1Byb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9MaXN0QmluZGluZyA9IG9FbGVtZW50Py5tQmluZGluZ0luZm9zPy5bc1Byb3BlcnR5TmFtZV0uYmluZGluZztcblxuXHRcdFx0XHRcdGlmIChvTGlzdEJpbmRpbmcgJiYgb0xpc3RCaW5kaW5nLmlzQTxPRGF0YUxpc3RCaW5kaW5nPihcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcob0xpc3RCaW5kaW5nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVGhpcyBpcyBkaXJ0eSBidXQgTURDVGFibGVzIGFuZCBNRENDaGFydHMgaGF2ZSBhIHdlaXJkIGxvYWRpbmcgbGlmZWN5Y2xlXG5cdFx0XHRpZiAob0VsZW1lbnQuaXNBPE1EQ1RhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikgfHwgb0VsZW1lbnQuaXNBPENoYXJ0PihcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkID0gZmFsc2U7XG5cdFx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyVGFibGVPckNoYXJ0KG9FbGVtZW50KSk7XG5cdFx0XHR9IGVsc2UgaWYgKG9FbGVtZW50LmlzQTxGaWx0ZXJCYXI+KFwic2FwLmZlLmNvcmUuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyRmlsdGVyQmFyKG9FbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBhUHJvbWlzZXM7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvbkFmdGVyQmluZGluZyhvQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0Ly8gSW4gY2FzZSB0aGUgcGFnZSBpcyByZWJpbmQgd2UgbmVlZCB0byBjbGVhciB0aGUgdGltZXIgKGVnOiBpbiBGQ0wsIHRoZSB1c2VyIGNhbiBzZWxlY3QgMiBpdGVtcyBzdWNjZXNzaXZlbHkgaW4gdGhlIGxpc3QgcmVwb3J0KVxuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcikge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHR9XG5cdFx0dGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0YFRoZSBQYWdlUmVhZHkgRXZlbnQgd2FzIG5vdCBmaXJlZCB3aXRoaW4gdGhlICR7dGhpcy5wYWdlUmVhZHlUaW1lb3V0fSBtcyB0aW1lb3V0IC4gSXQgaGFzIGJlZW4gZm9yY2VkLiBQbGVhc2UgY29udGFjdCB5b3VyIGFwcGxpY2F0aW9uIGRldmVsb3BlciBmb3IgZnVydGhlciBhbmFseXNpc2Bcblx0XHRcdCk7XG5cdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0fSwgdGhpcy5wYWdlUmVhZHlUaW1lb3V0KTtcblxuXHRcdGlmICh0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgJiYgIW9CaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0Ly8gRm9yY2UgdG8gbWVudGlvbiB3ZSBhcmUgZXhwZWN0aW5nIGRhdGFcblx0XHRcdHRoaXMuYkhhc0NvbnRleHQgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5iSGFzQ29udGV4dCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCA9IHRydWU7XG5cblx0XHR0aGlzLmF0dGFjaEV2ZW50T25jZShcInBhZ2VSZWFkeVwiLCBudWxsLCAoKSA9PiB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIpO1xuXHRcdFx0dGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIgPSB1bmRlZmluZWQ7XG5cdFx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSBmYWxzZTtcblx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlc2V0KCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRjb25zdCBhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMgPSB0aGlzLnJlZ2lzdGVyQWdncmVnYXRlZENvbnRyb2xzKG9CaW5kaW5nQ29udGV4dCk7XG5cblx0XHRcdGlmIChhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhd2FpdCBQcm9taXNlLmFsbChhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMpO1xuXHRcdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBpc1BhZ2VSZWFkeSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5fYklzUGFnZVJlYWR5O1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBhc3luYyB3YWl0UGFnZVJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaXNQYWdlUmVhZHkoKSkge1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmF0dGFjaEV2ZW50T25jZShcblx0XHRcdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBhdHRhY2hFdmVudE9uY2Uoc0V2ZW50SWQ6IHN0cmluZywgb0RhdGE6IG9iamVjdCB8IG51bGwsIGZuRnVuY3Rpb24/OiBGdW5jdGlvbiwgb0xpc3RlbmVyPzogb2JqZWN0KTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5hdHRhY2hFdmVudE9uY2Uoc0V2ZW50SWQsIG9EYXRhIGFzIG9iamVjdCwgZm5GdW5jdGlvbiBhcyBGdW5jdGlvbiwgb0xpc3RlbmVyKTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnQoc0V2ZW50SWQ6IHN0cmluZywgb0RhdGE6IG9iamVjdCB8IG51bGwsIGZuRnVuY3Rpb246IEZ1bmN0aW9uLCBvTGlzdGVuZXI6IG9iamVjdCk6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnQoc0V2ZW50SWQsIG9EYXRhIGFzIG9iamVjdCwgZm5GdW5jdGlvbiwgb0xpc3RlbmVyKTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgZGV0YWNoRXZlbnQoc0V2ZW50SWQ6IHN0cmluZywgZm5GdW5jdGlvbjogRnVuY3Rpb24pOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmRldGFjaEV2ZW50KHNFdmVudElkLCBmbkZ1bmN0aW9uKTtcblx0fVxuXG5cdHByaXZhdGUgcmVnaXN0ZXJDb250YWluZXIob0NvbnRhaW5lcjogQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuX29Db250YWluZXIgPSBvQ29udGFpbmVyO1xuXHRcdHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVNob3c6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0b25CZWZvcmVIaWRlOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJTaG93OiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5vbkFmdGVyQmluZGluZ1Byb21pc2U/LnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuX29Db250YWluZXI/LmFkZEV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSwgdGhpcyk7XG5cdH1cblxuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdHB1YmxpYyBpc0NvbnRleHRFeHBlY3RlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKGJGcm9tTmF2ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5wYWdlUmVhZHlUaW1lcikge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZXIpO1xuXHRcdH1cblx0XHRjb25zdCBtb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRsZXQgdGltZU91dDogbnVtYmVyO1xuXHRcdC8vIGlzQ29udGV4dEV4cGVjdGVkID0gdHJ1ZSB3aGVuIE9iamVjdCBQYWdlIGlzIGRpc3BsYXllZFxuXHRcdGlmICgobW9kZWwgJiYgbW9kZWwuZ2V0T3B0aW1pc3RpY0JhdGNoRW5hYmxlcigpID09PSBudWxsKSB8fCB0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkpIHtcblx0XHRcdHRpbWVPdXQgPSAyMDA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGFyZSB3YWl0aW5nIGxlc3MgdGltZSBiZWNhdXNlIGRhdGEgaXMgYWxyZWFkeSB0aGVyZSAob3B0aW1pc3RpY0JhdGNoKVxuXHRcdFx0dGltZU91dCA9IDIwO1xuXHRcdH1cblx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9jaGVja1BhZ2VSZWFkeShiRnJvbU5hdik7XG5cdFx0fSwgdGltZU91dCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG5cdH1cblxuXHRwdWJsaWMgX2NoZWNrUGFnZVJlYWR5KGJGcm9tTmF2ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBmblVJVXBkYXRlZCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdC8vIFdhaXQgdW50aWwgdGhlIFVJIGlzIG5vIGxvbmdlciBkaXJ0eVxuXHRcdFx0aWYgKCFDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHRDb3JlLmRldGFjaEV2ZW50KFwiVUlVcGRhdGVkXCIsIGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Ly8gSW4gY2FzZSBVSVVwZGF0ZSBkb2VzIG5vdCBnZXQgY2FsbGVkLCBjaGVjayBpZiBVSSBpcyBub3QgZGlydHkgYW5kIHRoZW4gY2FsbCBfY2hlY2tQYWdlUmVhZHlcblx0XHRjb25zdCBjaGVja1VJVXBkYXRlZCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdGlmIChDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdENvcmUuZGV0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGlmIChcblx0XHRcdHRoaXMuYlNob3duICYmXG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc0RhdGFSZWNlaXZlZCgpICE9PSBmYWxzZSAmJlxuXHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkICE9PSBmYWxzZSAmJlxuXHRcdFx0KCF0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgfHwgdGhpcy5iSGFzQ29udGV4dCkgLy8gRWl0aGVyIG5vIGNvbnRleHQgaXMgZXhwZWN0ZWQgb3IgdGhlcmUgaXMgb25lXG5cdFx0KSB7XG5cdFx0XHRpZiAodGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSA9PT0gdHJ1ZSAmJiAhYkZyb21OYXYgJiYgIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCAmJiBDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSByZXF1ZXN0ZWQgZGF0YSB3ZSBnZXQgbm90aWZpZWQgYXMgc29vbiBhcyB0aGUgZGF0YSBhcnJpdmVkLCBzbyBiZWZvcmUgdGhlIG5leHQgcmVuZGVyaW5nIHRpY2tcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXREYXRhUmVjZWl2ZWQoKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0Q29yZS5hdHRhY2hFdmVudChcIlVJVXBkYXRlZFwiLCBmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQoIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCAmJiBDb3JlLmdldFVJRGlydHkoKSkgfHxcblx0XHRcdFx0dGhpcy5fbmJXYWl0cyAhPT0gMCB8fFxuXHRcdFx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpID4gMCB8fFxuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc1NlYXJjaFBlbmRpbmcoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdENvcmUuYXR0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICghdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoKSB7XG5cdFx0XHRcdC8vIEluIHRoZSBjYXNlIHdlJ3JlIG5vdCB3YWl0aW5nIGZvciBhbnkgZGF0YSAobmF2aWdhdGluZyBiYWNrIHRvIGEgcGFnZSB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkKVxuXHRcdFx0XHQvLyBqdXN0IHdhaXQgZm9yIGEgZnJhbWUgdG8gZmlyZSB0aGUgZXZlbnQuXG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IHRydWU7XG5cdFx0XHRcdHRoaXMuX29FdmVudFByb3ZpZGVyLmZpcmVFdmVudChcInBhZ2VSZWFkeVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9yY2VzIHRoZSAncGFnZVJlYWR5JyBldmVudCB0byBiZSBzZW50LlxuXHQgKi9cblx0Zm9yY2VQYWdlUmVhZHkoKTogdm9pZCB7XG5cdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7O01BaUNNQSw0QkFBNEIsV0FEakNDLGNBQWMsQ0FBQyw0Q0FBNEMsQ0FBQyxVQTBDM0RDLGNBQWMsRUFBRSxVQTJDaEJBLGNBQWMsRUFBRSxVQVVoQkMsZUFBZSxFQUFFLFVBQ2pCQyxjQUFjLEVBQUUsVUFZaEJGLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFLMUJBLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUEwQzFCQSxjQUFjLENBQUMsVUFBVSxDQUFDLFVBaUQxQkMsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FLaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBa0JoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FNaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBTWhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQTJCaEJDLGdCQUFnQixFQUFFLFdBQ2xCQyxVQUFVLENBQUNDLGlC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
271
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCIsIm9uSW5pdCIsIl9uYldhaXRzIiwiX29FdmVudFByb3ZpZGVyIiwiRXZlbnRQcm92aWRlciIsInZpZXciLCJnZXRWaWV3IiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJwYWdlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJtYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJhdHRhY2hDb250YWluZXJEZWZpbmVkIiwib0V2ZW50IiwicmVnaXN0ZXJDb250YWluZXIiLCJnZXRQYXJhbWV0ZXIiLCJyb290Q29udHJvbENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwiaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCIsImF0dGFjaEV2ZW50IiwiZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzIiwiaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAiLCJxdWVyeVdhdGNoZXIiLCJEYXRhUXVlcnlXYXRjaGVyIiwiY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQiLCJiaW5kIiwib25FeGl0IiwiX29BcHBDb21wb25lbnQiLCJfb0NvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsIndhaXRGb3IiLCJvUHJvbWlzZSIsImZpbmFsbHkiLCJzZXRUaW1lb3V0IiwiY2F0Y2giLCJvblJvdXRlTWF0Y2hlZCIsIl9iSXNQYWdlUmVhZHkiLCJvblJvdXRlTWF0Y2hlZEZpbmlzaGVkIiwib25BZnRlckJpbmRpbmdQcm9taXNlIiwicmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMiLCJtYWluQmluZGluZ0NvbnRleHQiLCJtYWluT2JqZWN0QmluZGluZyIsImdldEJpbmRpbmciLCJyZWdpc3RlckJpbmRpbmciLCJhUHJvbWlzZXMiLCJhQ29udHJvbHMiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJmb3JFYWNoIiwib0VsZW1lbnQiLCJvT2JqZWN0QmluZGluZyIsImdldE9iamVjdEJpbmRpbmciLCJhQmluZGluZ0tleXMiLCJPYmplY3QiLCJrZXlzIiwibUJpbmRpbmdJbmZvcyIsInNQcm9wZXJ0eU5hbWUiLCJvTGlzdEJpbmRpbmciLCJiaW5kaW5nIiwiaXNBIiwiYlRhYmxlc0NoYXJ0c0xvYWRlZCIsInB1c2giLCJyZWdpc3RlclRhYmxlT3JDaGFydCIsInJlZ2lzdGVyRmlsdGVyQmFyIiwib25BZnRlckJpbmRpbmciLCJvQmluZGluZ0NvbnRleHQiLCJwYWdlUmVhZHlUaW1lb3V0VGltZXIiLCJjbGVhclRpbWVvdXQiLCJMb2ciLCJlcnJvciIsImZpcmVFdmVudCIsImlzQ29udGV4dEV4cGVjdGVkIiwiYkhhc0NvbnRleHQiLCJfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkIiwiYXR0YWNoRXZlbnRPbmNlIiwidW5kZWZpbmVkIiwicmVzZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyIsImxlbmd0aCIsImFsbCIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInNFdmVudElkIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiZGV0YWNoRXZlbnQiLCJvQ29udGFpbmVyIiwib25CZWZvcmVTaG93IiwiYlNob3duIiwib25CZWZvcmVIaWRlIiwib25BZnRlclNob3ciLCJ0aGVuIiwiYWRkRXZlbnREZWxlZ2F0ZSIsImJGcm9tTmF2IiwicGFnZVJlYWR5VGltZXIiLCJtb2RlbCIsImdldE1vZGVsIiwidGltZU91dCIsImdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIiLCJfY2hlY2tQYWdlUmVhZHkiLCJmblVJVXBkYXRlZCIsIlJlbmRlcmluZyIsImlzUGVuZGluZyIsIkNvcmUiLCJfYldhaXRpbmdGb3JSZWZyZXNoIiwiY2hlY2tVSVVwZGF0ZWQiLCJpc0RhdGFSZWNlaXZlZCIsInJlc2V0RGF0YVJlY2VpdmVkIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsImlzU2VhcmNoUGVuZGluZyIsImZvcmNlUGFnZVJlYWR5IiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnZVJlYWR5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IERhdGFRdWVyeVdhdGNoZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3BhZ2VSZWFkeS9EYXRhUXVlcnlXYXRjaGVyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHtcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV4dGVuc2libGUsXG5cdGZpbmFsRXh0ZW5zaW9uLFxuXHRtZXRob2RPdmVycmlkZSxcblx0cHJpdmF0ZUV4dGVuc2lvbixcblx0cHVibGljRXh0ZW5zaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBFdmVudFByb3ZpZGVyIGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbXBvbmVudENvbnRhaW5lciBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFJlbmRlcmluZyBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyaW5nXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdlUmVhZHlcIilcbmNsYXNzIFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIF9vRXZlbnRQcm92aWRlciE6IEV2ZW50UHJvdmlkZXI7XG5cblx0cHJpdmF0ZSB2aWV3ITogVmlldztcblxuXHRwcml2YXRlIGFwcENvbXBvbmVudCE6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHBhZ2VDb21wb25lbnQhOiBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSBfb0NvbnRhaW5lciE6IENvbnRyb2w7XG5cblx0cHJpdmF0ZSBfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9mbkNvbnRhaW5lckRlbGVnYXRlPzogb2JqZWN0O1xuXG5cdHByaXZhdGUgX25iV2FpdHMhOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfYklzUGFnZVJlYWR5ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9iV2FpdGluZ0ZvclJlZnJlc2ghOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlNob3duITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJIYXNDb250ZXh0ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJUYWJsZXNDaGFydHNMb2FkZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHF1ZXJ5V2F0Y2hlciE6IERhdGFRdWVyeVdhdGNoZXI7XG5cblx0cHJpdmF0ZSBvbkFmdGVyQmluZGluZ1Byb21pc2UhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dERlZmF1bHQgPSA3MDAwO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dFRpbWVyPzogbnVtYmVyO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dD86IG51bWJlcjtcblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuX25iV2FpdHMgPSAwO1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyID0gdGhpcy5fb0V2ZW50UHJvdmlkZXIgPyB0aGlzLl9vRXZlbnRQcm92aWRlciA6IG5ldyBFdmVudFByb3ZpZGVyKCk7XG5cdFx0dGhpcy52aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLnZpZXcpO1xuXHRcdHRoaXMucGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLnZpZXcpIGFzIENvbXBvbmVudDtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnQgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdHRoaXMucGFnZVJlYWR5VGltZW91dCA9IG1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0/LnBhZ2VSZWFkeVRpbWVvdXQgPz8gdGhpcy5wYWdlUmVhZHlUaW1lb3V0RGVmYXVsdDtcblxuXHRcdGlmICh0aGlzLnBhZ2VDb21wb25lbnQ/LmF0dGFjaENvbnRhaW5lckRlZmluZWQpIHtcblx0XHRcdHRoaXMucGFnZUNvbXBvbmVudC5hdHRhY2hDb250YWluZXJEZWZpbmVkKChvRXZlbnQ6IEV2ZW50PHsgY29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIgfT4pID0+XG5cdFx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRhaW5lclwiKSlcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIodGhpcy52aWV3KTtcblx0XHR9XG5cblx0XHRjb25zdCByb290Q29udHJvbENvbnRyb2xsZXIgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0XHRjb25zdCBwbGFjZWhvbGRlciA9IHJvb3RDb250cm9sQ29udHJvbGxlcj8uZ2V0UGxhY2Vob2xkZXI/LigpO1xuXHRcdGlmIChwbGFjZWhvbGRlcj8uaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCgpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoXG5cdFx0XHRcdFwiaGVyb2VzQmF0Y2hSZWNlaXZlZFwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5xdWVyeVdhdGNoZXIgPSBuZXcgRGF0YVF1ZXJ5V2F0Y2hlcih0aGlzLl9vRXZlbnRQcm92aWRlciwgdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZC5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkV4aXQoKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcENvbXBvbmVudDtcblx0XHRpZiAodGhpcy5fb0NvbnRhaW5lciAmJiB0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlKSB7XG5cdFx0XHR0aGlzLl9vQ29udGFpbmVyLnJlbW92ZUV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyB3YWl0Rm9yKG9Qcm9taXNlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG5cdFx0dGhpcy5fbmJXYWl0cysrO1xuXHRcdG9Qcm9taXNlXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX25iV2FpdHMtLTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG51bGwpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25Sb3V0ZU1hdGNoZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRhc3luYyBvblJvdXRlTWF0Y2hlZEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlO1xuXHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhtYWluQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPltdIHtcblx0XHRpZiAobWFpbkJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBtYWluT2JqZWN0QmluZGluZyA9IG1haW5CaW5kaW5nQ29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcobWFpbk9iamVjdEJpbmRpbmcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cdFx0Y29uc3QgYUNvbnRyb2xzID0gdGhpcy5nZXRWaWV3KCkuZmluZEFnZ3JlZ2F0ZWRPYmplY3RzKHRydWUpO1xuXG5cdFx0YUNvbnRyb2xzLmZvckVhY2goKG9FbGVtZW50OiBNYW5hZ2VkT2JqZWN0ICYgeyBtQmluZGluZ0luZm9zPzogUmVjb3JkPHN0cmluZywgeyBiaW5kaW5nPzogQmluZGluZyB9PiB9KTogdm9pZCA9PiB7XG5cdFx0XHRjb25zdCBvT2JqZWN0QmluZGluZyA9IG9FbGVtZW50LmdldE9iamVjdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvT2JqZWN0QmluZGluZykge1xuXHRcdFx0XHQvLyBSZWdpc3RlciBvbiBhbGwgb2JqZWN0IGJpbmRpbmcgKG1vc3RseSB1c2VkIG9uIG9iamVjdCBwYWdlcylcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9PYmplY3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFCaW5kaW5nS2V5cyA9IE9iamVjdC5rZXlzKG9FbGVtZW50Py5tQmluZGluZ0luZm9zID8/IHt9KTtcblx0XHRcdFx0YUJpbmRpbmdLZXlzLmZvckVhY2goKHNQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvRWxlbWVudD8ubUJpbmRpbmdJbmZvcz8uW3NQcm9wZXJ0eU5hbWVdLmJpbmRpbmc7XG5cblx0XHRcdFx0XHRpZiAob0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5pc0E8T0RhdGFMaXN0QmluZGluZz4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9MaXN0QmluZGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIFRoaXMgaXMgZGlydHkgYnV0IE1EQ1RhYmxlcyBhbmQgTURDQ2hhcnRzIGhhdmUgYSB3ZWlyZCBsb2FkaW5nIGxpZmVjeWNsZVxuXHRcdFx0aWYgKG9FbGVtZW50LmlzQTxNRENUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpIHx8IG9FbGVtZW50LmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IGZhbHNlO1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlclRhYmxlT3JDaGFydChvRWxlbWVudCkpO1xuXHRcdFx0fSBlbHNlIGlmIChvRWxlbWVudC5pc0E8RmlsdGVyQmFyPihcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckZpbHRlckJhcihvRWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYVByb21pc2VzO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25BZnRlckJpbmRpbmcob0JpbmRpbmdDb250ZXh0PzogQ29udGV4dCk6IHZvaWQge1xuXHRcdC8vIEluIGNhc2UgdGhlIHBhZ2UgaXMgcmViaW5kIHdlIG5lZWQgdG8gY2xlYXIgdGhlIHRpbWVyIChlZzogaW4gRkNMLCB0aGUgdXNlciBjYW4gc2VsZWN0IDIgaXRlbXMgc3VjY2Vzc2l2ZWx5IGluIHRoZSBsaXN0IHJlcG9ydClcblx0XHRpZiAodGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcik7XG5cdFx0fVxuXHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdGBUaGUgUGFnZVJlYWR5IEV2ZW50IHdhcyBub3QgZmlyZWQgd2l0aGluIHRoZSAke3RoaXMucGFnZVJlYWR5VGltZW91dH0gbXMgdGltZW91dCAuIEl0IGhhcyBiZWVuIGZvcmNlZC4gUGxlYXNlIGNvbnRhY3QgeW91ciBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgZm9yIGZ1cnRoZXIgYW5hbHlzaXNgXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdH0sIHRoaXMucGFnZVJlYWR5VGltZW91dCk7XG5cblx0XHRpZiAodGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpICYmICFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIEZvcmNlIHRvIG1lbnRpb24gd2UgYXJlIGV4cGVjdGluZyBkYXRhXG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gZmFsc2U7XG5cdFx0XHRyZXR1cm47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYkhhc0NvbnRleHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSB0cnVlO1xuXG5cdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJwYWdlUmVhZHlcIiwgbnVsbCwgKCkgPT4ge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5vbkFmdGVyQmluZGluZ1Byb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0Y29uc3QgYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzID0gdGhpcy5yZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0XHRpZiAoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzKTtcblx0XHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNQYWdlUmVhZHkoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2JJc1BhZ2VSZWFkeTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXN5bmMgd2FpdFBhZ2VSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzUGFnZVJlYWR5KCkpIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXG5cdFx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uPzogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IG9iamVjdCk6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24gYXMgRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbiwgb0xpc3RlbmVyOiBvYmplY3QpOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmF0dGFjaEV2ZW50KHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGRldGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIGZuRnVuY3Rpb246IEZ1bmN0aW9uKTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5kZXRhY2hFdmVudChzRXZlbnRJZCwgZm5GdW5jdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVyKG9Db250YWluZXI6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl9vQ29udGFpbmVyID0gb0NvbnRhaW5lcjtcblx0XHR0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVTaG93OiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQmVmb3JlSGlkZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyU2hvdzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IHRydWU7XG5cdFx0XHRcdHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlPy50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCh0cnVlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLl9vQ29udGFpbmVyPy5hZGRFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUsIHRoaXMpO1xuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNDb250ZXh0RXhwZWN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBjaGVja1BhZ2VSZWFkeURlYm91bmNlZChiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGFnZVJlYWR5VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVyKTtcblx0XHR9XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0bGV0IHRpbWVPdXQ6IG51bWJlcjtcblx0XHQvLyBpc0NvbnRleHRFeHBlY3RlZCA9IHRydWUgd2hlbiBPYmplY3QgUGFnZSBpcyBkaXNwbGF5ZWRcblx0XHRpZiAoKG1vZGVsICYmIG1vZGVsLmdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIoKSA9PT0gbnVsbCkgfHwgdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpKSB7XG5cdFx0XHR0aW1lT3V0ID0gMjAwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBhcmUgd2FpdGluZyBsZXNzIHRpbWUgYmVjYXVzZSBkYXRhIGlzIGFscmVhZHkgdGhlcmUgKG9wdGltaXN0aWNCYXRjaClcblx0XHRcdHRpbWVPdXQgPSAyMDtcblx0XHR9XG5cdFx0dGhpcy5wYWdlUmVhZHlUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fY2hlY2tQYWdlUmVhZHkoYkZyb21OYXYpO1xuXHRcdH0sIHRpbWVPdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuXHR9XG5cblx0cHVibGljIF9jaGVja1BhZ2VSZWFkeShiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgZm5VSVVwZGF0ZWQgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHQvLyBXYWl0IHVudGlsIHRoZSBVSSBpcyBubyBsb25nZXIgZGlydHlcblx0XHRcdGlmICghUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdENvcmUuZGV0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBJbiBjYXNlIFVJVXBkYXRlIGRvZXMgbm90IGdldCBjYWxsZWQsIGNoZWNrIGlmIFVJIGlzIG5vdCBkaXJ0eSBhbmQgdGhlbiBjYWxsIF9jaGVja1BhZ2VSZWFkeVxuXHRcdGNvbnN0IGNoZWNrVUlVcGRhdGVkID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKFJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdENvcmUuZGV0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGlmIChcblx0XHRcdHRoaXMuYlNob3duICYmXG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc0RhdGFSZWNlaXZlZCgpICE9PSBmYWxzZSAmJlxuXHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkICE9PSBmYWxzZSAmJlxuXHRcdFx0KCF0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgfHwgdGhpcy5iSGFzQ29udGV4dCkgLy8gRWl0aGVyIG5vIGNvbnRleHQgaXMgZXhwZWN0ZWQgb3IgdGhlcmUgaXMgb25lXG5cdFx0KSB7XG5cdFx0XHRpZiAodGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSA9PT0gdHJ1ZSAmJiAhYkZyb21OYXYgJiYgIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCAmJiBSZW5kZXJpbmcuaXNQZW5kaW5nKCkpIHtcblx0XHRcdFx0Ly8gSWYgd2UgcmVxdWVzdGVkIGRhdGEgd2UgZ2V0IG5vdGlmaWVkIGFzIHNvb24gYXMgdGhlIGRhdGEgYXJyaXZlZCwgc28gYmVmb3JlIHRoZSBuZXh0IHJlbmRlcmluZyB0aWNrXG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlc2V0RGF0YVJlY2VpdmVkKCk7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdENvcmUuYXR0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgUmVuZGVyaW5nLmlzUGVuZGluZygpKSB8fFxuXHRcdFx0XHR0aGlzLl9uYldhaXRzICE9PSAwIHx8XG5cdFx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5nZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkgPiAwIHx8XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLmlzU2VhcmNoUGVuZGluZygpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0Q29yZS5hdHRhY2hFdmVudChcIlVJVXBkYXRlZFwiLCBmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0Ly8gSW4gdGhlIGNhc2Ugd2UncmUgbm90IHdhaXRpbmcgZm9yIGFueSBkYXRhIChuYXZpZ2F0aW5nIGJhY2sgdG8gYSBwYWdlIHdlIGFscmVhZHkgaGF2ZSBsb2FkZWQpXG5cdFx0XHRcdC8vIGp1c3Qgd2FpdCBmb3IgYSBmcmFtZSB0byBmaXJlIHRoZSBldmVudC5cblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JjZXMgdGhlICdwYWdlUmVhZHknIGV2ZW50IHRvIGJlIHNlbnQuXG5cdCAqL1xuXHRmb3JjZVBhZ2VSZWFkeSgpOiB2b2lkIHtcblx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7TUFrQ01BLDRCQUE0QixXQURqQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLFVBMEMzREMsY0FBYyxFQUFFLFVBMkNoQkEsY0FBYyxFQUFFLFVBVWhCQyxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQVloQkYsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUsxQkEsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQTBDMUJBLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFpRDFCQyxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQUtoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FrQmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQU1oQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVB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
@@ -19,6 +19,7 @@ import Component from "sap/ui/core/Component";
19
19
  import type ComponentContainer from "sap/ui/core/ComponentContainer";
20
20
  import type Control from "sap/ui/core/Control";
21
21
  import Core from "sap/ui/core/Core";
22
+ import Rendering from "sap/ui/core/Rendering";
22
23
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
23
24
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
24
25
  import type View from "sap/ui/core/mvc/View";
@@ -329,7 +330,7 @@ class PageReadyControllerExtension extends ControllerExtension {
329
330
  public _checkPageReady(bFromNav = false): void {
330
331
  const fnUIUpdated = (): void => {
331
332
  // Wait until the UI is no longer dirty
332
- if (!Core.getUIDirty()) {
333
+ if (!Rendering.isPending()) {
333
334
  Core.detachEvent("UIUpdated", fnUIUpdated);
334
335
  this._bWaitingForRefresh = false;
335
336
  this.checkPageReadyDebounced();
@@ -338,7 +339,7 @@ class PageReadyControllerExtension extends ControllerExtension {
338
339
 
339
340
  // In case UIUpdate does not get called, check if UI is not dirty and then call _checkPageReady
340
341
  const checkUIUpdated = (): void => {
341
- if (Core.getUIDirty()) {
342
+ if (Rendering.isPending()) {
342
343
  setTimeout(checkUIUpdated, 500);
343
344
  } else if (this._bWaitingForRefresh) {
344
345
  this._bWaitingForRefresh = false;
@@ -353,14 +354,14 @@ class PageReadyControllerExtension extends ControllerExtension {
353
354
  this.bTablesChartsLoaded !== false &&
354
355
  (!this.isContextExpected() || this.bHasContext) // Either no context is expected or there is one
355
356
  ) {
356
- if (this.queryWatcher.isDataReceived() === true && !bFromNav && !this._bWaitingForRefresh && Core.getUIDirty()) {
357
+ if (this.queryWatcher.isDataReceived() === true && !bFromNav && !this._bWaitingForRefresh && Rendering.isPending()) {
357
358
  // If we requested data we get notified as soon as the data arrived, so before the next rendering tick
358
359
  this.queryWatcher.resetDataReceived();
359
360
  this._bWaitingForRefresh = true;
360
361
  Core.attachEvent("UIUpdated", fnUIUpdated);
361
362
  setTimeout(checkUIUpdated, 500);
362
363
  } else if (
363
- (!this._bWaitingForRefresh && Core.getUIDirty()) ||
364
+ (!this._bWaitingForRefresh && Rendering.isPending()) ||
364
365
  this._nbWaits !== 0 ||
365
366
  TemplatedViewServiceFactory.getNumberOfViewsInCreationState() > 0 ||
366
367
  this.queryWatcher.isSearchPending()
@@ -2,14 +2,12 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2024 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/ui/model/json/JSONModel"], function (ClassSupport, ControllerExtension, OverrideExecution, JSONModel) {
5
+ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "./HookSupport"], function (ClassSupport, ControllerExtension, OverrideExecution, HookSupport) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _class, _class2;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
9
+ var hookable = HookSupport.hookable;
9
10
  var publicExtension = ClassSupport.publicExtension;
10
- var privateExtension = ClassSupport.privateExtension;
11
- var methodOverride = ClassSupport.methodOverride;
12
- var finalExtension = ClassSupport.finalExtension;
13
11
  var extensible = ClassSupport.extensible;
14
12
  var defineUI5Class = ClassSupport.defineUI5Class;
15
13
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
@@ -22,26 +20,12 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/mvc/ControllerEx
22
20
  * @public
23
21
  * @since 1.94.0
24
22
  */
25
- let Paginator = (_dec = defineUI5Class("sap.fe.core.controllerextensions.Paginator"), _dec2 = methodOverride(), _dec3 = publicExtension(), _dec4 = finalExtension(), _dec5 = publicExtension(), _dec6 = finalExtension(), _dec7 = privateExtension(), _dec8 = extensible(OverrideExecution.After), _dec9 = privateExtension(), _dec10 = extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
23
+ let Paginator = (_dec = defineUI5Class("sap.fe.core.controllerextensions.Paginator"), _dec2 = publicExtension(), _dec3 = hookable("before"), _dec4 = publicExtension(), _dec5 = extensible(OverrideExecution.After), _dec6 = publicExtension(), _dec7 = extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
26
24
  _inheritsLoose(Paginator, _ControllerExtension);
27
25
  function Paginator() {
28
- var _this;
29
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
- args[_key] = arguments[_key];
31
- }
32
- _this = _ControllerExtension.call(this, ...args) || this;
33
- _this._iCurrentIndex = -1;
34
- return _this;
26
+ return _ControllerExtension.apply(this, arguments) || this;
35
27
  }
36
28
  var _proto = Paginator.prototype;
37
- _proto.onInit = function onInit() {
38
- this._oView = this.base.getView();
39
- this._oView.setModel(new JSONModel({
40
- navUpEnabled: false,
41
- navDownEnabled: false
42
- }), "paginator");
43
- }
44
-
45
29
  /**
46
30
  * Initiates the paginator control.
47
31
  *
@@ -49,99 +33,22 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/mvc/ControllerEx
49
33
  * @param oContext Current context where the navigation is initiated
50
34
  * @public
51
35
  * @since 1.94.0
52
- */;
53
- _proto.initialize = function initialize(oBinding, oContext) {
54
- if (oBinding && oBinding.getAllCurrentContexts) {
55
- this._oListBinding = oBinding;
56
- oBinding.attachEvent("change", this._updateCurrentIndexAndButtonEnablement.bind(this));
57
- }
58
- if (oContext) {
59
- this._oCurrentContext = oContext;
60
- }
61
- this._updateCurrentIndexAndButtonEnablement();
62
- };
63
- _proto._updateCurrentIndexAndButtonEnablement = function _updateCurrentIndexAndButtonEnablement() {
64
- if (this._oCurrentContext && this._oListBinding) {
65
- const sPath = this._oCurrentContext.getPath();
66
- // Storing the currentIndex in global variable
67
- this._iCurrentIndex = this._oListBinding.getAllCurrentContexts().findIndex(function (oContext) {
68
- return oContext && oContext.getPath() === sPath;
69
- });
70
- const oCurrentIndexContext = this._oListBinding.getAllCurrentContexts()[this._iCurrentIndex];
71
- if (!this._iCurrentIndex && this._iCurrentIndex !== 0 || !oCurrentIndexContext || this._oCurrentContext.getPath() !== oCurrentIndexContext.getPath()) {
72
- this._updateCurrentIndex();
73
- }
74
- }
75
- this._handleButtonEnablement();
76
- };
77
- _proto._handleButtonEnablement = function _handleButtonEnablement() {
78
- //Enabling and Disabling the Buttons on change of the control context
79
- const mButtonEnablementModel = this.base.getView().getModel("paginator");
80
- if (this._oListBinding && this._oListBinding.getAllCurrentContexts().length > 1 && this._iCurrentIndex > -1) {
81
- if (this._iCurrentIndex === this._oListBinding.getAllCurrentContexts().length - 1) {
82
- mButtonEnablementModel.setProperty("/navDownEnabled", false);
83
- } else if (this._oListBinding.getAllCurrentContexts()[this._iCurrentIndex + 1].isInactive()) {
84
- //check the next context is not an inactive context
85
- mButtonEnablementModel.setProperty("/navDownEnabled", false);
86
- } else {
87
- mButtonEnablementModel.setProperty("/navDownEnabled", true);
88
- }
89
- if (this._iCurrentIndex === 0) {
90
- mButtonEnablementModel.setProperty("/navUpEnabled", false);
91
- } else if (this._oListBinding.getAllCurrentContexts()[this._iCurrentIndex - 1].isInactive()) {
92
- mButtonEnablementModel.setProperty("/navUpEnabled", false);
93
- } else {
94
- mButtonEnablementModel.setProperty("/navUpEnabled", true);
95
- }
96
- } else {
97
- // Don't show the paginator buttons
98
- // 1. When no listbinding is available
99
- // 2. Only '1' or '0' context exists in the listBinding
100
- // 3. The current index is -ve, i.e the currentIndex is invalid.
101
- mButtonEnablementModel.setProperty("/navUpEnabled", false);
102
- mButtonEnablementModel.setProperty("/navDownEnabled", false);
103
- }
104
- };
105
- _proto._updateCurrentIndex = function _updateCurrentIndex() {
106
- if (this._oCurrentContext && this._oListBinding) {
107
- const sPath = this._oCurrentContext.getPath();
108
- // Storing the currentIndex in global variable
109
- this._iCurrentIndex = this._oListBinding.getAllCurrentContexts().findIndex(function (oContext) {
110
- return oContext && oContext.getPath() === sPath;
111
- });
112
- }
113
- };
114
- _proto.updateCurrentContext = async function updateCurrentContext(iDeltaIndex) {
115
- var _this$_oCurrentContex, _this$_oCurrentContex2;
116
- if (!this._oListBinding) {
117
- return;
118
- }
119
- const oModel = (_this$_oCurrentContex = this._oCurrentContext) !== null && _this$_oCurrentContex !== void 0 && _this$_oCurrentContex.getModel ? (_this$_oCurrentContex2 = this._oCurrentContext) === null || _this$_oCurrentContex2 === void 0 ? void 0 : _this$_oCurrentContex2.getModel() : undefined;
120
- //Submitting any pending changes that might be there before navigating to next context.
121
- await (oModel === null || oModel === void 0 ? void 0 : oModel.submitBatch("$auto"));
122
- const aCurrentContexts = this._oListBinding.getAllCurrentContexts();
123
- const iNewIndex = this._iCurrentIndex + iDeltaIndex;
124
- const oNewContext = aCurrentContexts[iNewIndex];
125
- if (oNewContext) {
126
- const bPreventIdxUpdate = this.onBeforeContextUpdate(this._oListBinding, this._iCurrentIndex, iDeltaIndex);
127
- if (!bPreventIdxUpdate) {
128
- this._iCurrentIndex = iNewIndex;
129
- this._oCurrentContext = oNewContext;
130
- }
131
- this.onContextUpdate(oNewContext);
132
- }
133
- this._handleButtonEnablement();
134
- }
36
+ */
37
+ _proto.
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ initialize = function initialize(oBinding, oContext) {}
135
40
 
136
41
  /**
137
42
  * Called before context update.
138
43
  *
139
- * @param _oListBinding ODataListBinding object
140
- * @param _iCurrentIndex Current index of context in listBinding from where the navigation is initiated
141
- * @param _iIndexUpdate The delta index for update
44
+ * @param oListBinding ODataListBinding object
45
+ * @param iCurrentIndex Current index of context in listBinding from where the navigation is initiated
46
+ * @param iIndexUpdate The delta index for update
142
47
  * @returns `true` to prevent the update of current context.
143
48
  */;
144
- _proto.onBeforeContextUpdate = function onBeforeContextUpdate(_oListBinding, _iCurrentIndex, _iIndexUpdate) {
49
+ _proto.
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ onBeforeContextUpdate = function onBeforeContextUpdate(oListBinding, iCurrentIndex, iIndexUpdate) {
145
52
  return false;
146
53
  }
147
54
 
@@ -158,7 +65,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/mvc/ControllerEx
158
65
  //To be overridden by the application
159
66
  };
160
67
  return Paginator;
161
- }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "initialize", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "initialize"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "updateCurrentContext", [_dec5, _dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "updateCurrentContext"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeContextUpdate", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextUpdate", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextUpdate"), _class2.prototype)), _class2)) || _class);
68
+ }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "initialize", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "initialize"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeContextUpdate", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextUpdate", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextUpdate"), _class2.prototype)), _class2)) || _class);
162
69
  return Paginator;
163
70
  }, false);
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiZmluYWxFeHRlbnNpb24iLCJwcml2YXRlRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJfaUN1cnJlbnRJbmRleCIsIm9uSW5pdCIsIl9vVmlldyIsImJhc2UiLCJnZXRWaWV3Iiwic2V0TW9kZWwiLCJKU09OTW9kZWwiLCJuYXZVcEVuYWJsZWQiLCJuYXZEb3duRW5hYmxlZCIsImluaXRpYWxpemUiLCJvQmluZGluZyIsIm9Db250ZXh0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiX29MaXN0QmluZGluZyIsImF0dGFjaEV2ZW50IiwiX3VwZGF0ZUN1cnJlbnRJbmRleEFuZEJ1dHRvbkVuYWJsZW1lbnQiLCJiaW5kIiwiX29DdXJyZW50Q29udGV4dCIsInNQYXRoIiwiZ2V0UGF0aCIsImZpbmRJbmRleCIsIm9DdXJyZW50SW5kZXhDb250ZXh0IiwiX3VwZGF0ZUN1cnJlbnRJbmRleCIsIl9oYW5kbGVCdXR0b25FbmFibGVtZW50IiwibUJ1dHRvbkVuYWJsZW1lbnRNb2RlbCIsImdldE1vZGVsIiwibGVuZ3RoIiwic2V0UHJvcGVydHkiLCJpc0luYWN0aXZlIiwidXBkYXRlQ3VycmVudENvbnRleHQiLCJpRGVsdGFJbmRleCIsIm9Nb2RlbCIsInVuZGVmaW5lZCIsInN1Ym1pdEJhdGNoIiwiYUN1cnJlbnRDb250ZXh0cyIsImlOZXdJbmRleCIsIm9OZXdDb250ZXh0IiwiYlByZXZlbnRJZHhVcGRhdGUiLCJvbkJlZm9yZUNvbnRleHRVcGRhdGUiLCJvbkNvbnRleHRVcGRhdGUiLCJfaUluZGV4VXBkYXRlIiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHtcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV4dGVuc2libGUsXG5cdGZpbmFsRXh0ZW5zaW9uLFxuXHRtZXRob2RPdmVycmlkZSxcblx0cHJpdmF0ZUV4dGVuc2lvbixcblx0cHVibGljRXh0ZW5zaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRleHQsIGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5cbi8qKlxuICogQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbmF2aWdhdGlvbiB1c2luZyBwYWdpbmF0b3JzXG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTQuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdpbmF0b3JcIilcbmNsYXNzIFBhZ2luYXRvciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcml2YXRlIF9vVmlldyE6IFZpZXc7XG5cblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIF9vTGlzdEJpbmRpbmc/OiBPRGF0YUxpc3RCaW5kaW5nO1xuXG5cdHByaXZhdGUgX29DdXJyZW50Q29udGV4dD86IENvbnRleHQ7XG5cblx0cHJpdmF0ZSBfaUN1cnJlbnRJbmRleCA9IC0xO1xuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdG9uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9vVmlldyA9IHRoaXMuYmFzZS5nZXRWaWV3KCk7XG5cdFx0dGhpcy5fb1ZpZXcuc2V0TW9kZWwoXG5cdFx0XHRuZXcgSlNPTk1vZGVsKHtcblx0XHRcdFx0bmF2VXBFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0bmF2RG93bkVuYWJsZWQ6IGZhbHNlXG5cdFx0XHR9KSxcblx0XHRcdFwicGFnaW5hdG9yXCJcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYXRlcyB0aGUgcGFnaW5hdG9yIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gb0NvbnRleHQgQ3VycmVudCBjb250ZXh0IHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRpbml0aWFsaXplKG9CaW5kaW5nPzogT0RhdGFMaXN0QmluZGluZywgb0NvbnRleHQ/OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0aWYgKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyB7IGdldEFsbEN1cnJlbnRDb250ZXh0cz86IEZ1bmN0aW9uIH0pLmdldEFsbEN1cnJlbnRDb250ZXh0cykge1xuXHRcdFx0dGhpcy5fb0xpc3RCaW5kaW5nID0gb0JpbmRpbmc7XG5cdFx0XHRvQmluZGluZy5hdHRhY2hFdmVudChcImNoYW5nZVwiLCB0aGlzLl91cGRhdGVDdXJyZW50SW5kZXhBbmRCdXR0b25FbmFibGVtZW50LmJpbmQodGhpcykpO1xuXHRcdH1cblx0XHRpZiAob0NvbnRleHQpIHtcblx0XHRcdHRoaXMuX29DdXJyZW50Q29udGV4dCA9IG9Db250ZXh0O1xuXHRcdH1cblx0XHR0aGlzLl91cGRhdGVDdXJyZW50SW5kZXhBbmRCdXR0b25FbmFibGVtZW50KCk7XG5cdH1cblxuXHRfdXBkYXRlQ3VycmVudEluZGV4QW5kQnV0dG9uRW5hYmxlbWVudCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fb0N1cnJlbnRDb250ZXh0ICYmIHRoaXMuX29MaXN0QmluZGluZykge1xuXHRcdFx0Y29uc3Qgc1BhdGggPSB0aGlzLl9vQ3VycmVudENvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0Ly8gU3RvcmluZyB0aGUgY3VycmVudEluZGV4IGluIGdsb2JhbCB2YXJpYWJsZVxuXHRcdFx0dGhpcy5faUN1cnJlbnRJbmRleCA9IHRoaXMuX29MaXN0QmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5maW5kSW5kZXgoZnVuY3Rpb24gKG9Db250ZXh0OiBPRGF0YVY0Q29udGV4dCkge1xuXHRcdFx0XHRyZXR1cm4gb0NvbnRleHQgJiYgb0NvbnRleHQuZ2V0UGF0aCgpID09PSBzUGF0aDtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb0N1cnJlbnRJbmRleENvbnRleHQgPSB0aGlzLl9vTGlzdEJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKClbdGhpcy5faUN1cnJlbnRJbmRleF07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCghdGhpcy5faUN1cnJlbnRJbmRleCAmJiB0aGlzLl9pQ3VycmVudEluZGV4ICE9PSAwKSB8fFxuXHRcdFx0XHQhb0N1cnJlbnRJbmRleENvbnRleHQgfHxcblx0XHRcdFx0dGhpcy5fb0N1cnJlbnRDb250ZXh0LmdldFBhdGgoKSAhPT0gb0N1cnJlbnRJbmRleENvbnRleHQuZ2V0UGF0aCgpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fdXBkYXRlQ3VycmVudEluZGV4KCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuX2hhbmRsZUJ1dHRvbkVuYWJsZW1lbnQoKTtcblx0fVxuXG5cdF9oYW5kbGVCdXR0b25FbmFibGVtZW50KCk6IHZvaWQge1xuXHRcdC8vRW5hYmxpbmcgYW5kIERpc2FibGluZyB0aGUgQnV0dG9ucyBvbiBjaGFuZ2Ugb2YgdGhlIGNvbnRyb2wgY29udGV4dFxuXHRcdGNvbnN0IG1CdXR0b25FbmFibGVtZW50TW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwicGFnaW5hdG9yXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRpZiAodGhpcy5fb0xpc3RCaW5kaW5nICYmIHRoaXMuX29MaXN0QmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5sZW5ndGggPiAxICYmIHRoaXMuX2lDdXJyZW50SW5kZXggPiAtMSkge1xuXHRcdFx0aWYgKHRoaXMuX2lDdXJyZW50SW5kZXggPT09IHRoaXMuX29MaXN0QmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdG1CdXR0b25FbmFibGVtZW50TW9kZWwuc2V0UHJvcGVydHkoXCIvbmF2RG93bkVuYWJsZWRcIiwgZmFsc2UpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9vTGlzdEJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKClbdGhpcy5faUN1cnJlbnRJbmRleCArIDFdLmlzSW5hY3RpdmUoKSkge1xuXHRcdFx0XHQvL2NoZWNrIHRoZSBuZXh0IGNvbnRleHQgaXMgbm90IGFuIGluYWN0aXZlIGNvbnRleHRcblx0XHRcdFx0bUJ1dHRvbkVuYWJsZW1lbnRNb2RlbC5zZXRQcm9wZXJ0eShcIi9uYXZEb3duRW5hYmxlZFwiLCBmYWxzZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtQnV0dG9uRW5hYmxlbWVudE1vZGVsLnNldFByb3BlcnR5KFwiL25hdkRvd25FbmFibGVkXCIsIHRydWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuX2lDdXJyZW50SW5kZXggPT09IDApIHtcblx0XHRcdFx0bUJ1dHRvbkVuYWJsZW1lbnRNb2RlbC5zZXRQcm9wZXJ0eShcIi9uYXZVcEVuYWJsZWRcIiwgZmFsc2UpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9vTGlzdEJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKClbdGhpcy5faUN1cnJlbnRJbmRleCAtIDFdLmlzSW5hY3RpdmUoKSkge1xuXHRcdFx0XHRtQnV0dG9uRW5hYmxlbWVudE1vZGVsLnNldFByb3BlcnR5KFwiL25hdlVwRW5hYmxlZFwiLCBmYWxzZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtQnV0dG9uRW5hYmxlbWVudE1vZGVsLnNldFByb3BlcnR5KFwiL25hdlVwRW5hYmxlZFwiLCB0cnVlKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRG9uJ3Qgc2hvdyB0aGUgcGFnaW5hdG9yIGJ1dHRvbnNcblx0XHRcdC8vIDEuIFdoZW4gbm8gbGlzdGJpbmRpbmcgaXMgYXZhaWxhYmxlXG5cdFx0XHQvLyAyLiBPbmx5ICcxJyBvciAnMCcgY29udGV4dCBleGlzdHMgaW4gdGhlIGxpc3RCaW5kaW5nXG5cdFx0XHQvLyAzLiBUaGUgY3VycmVudCBpbmRleCBpcyAtdmUsIGkuZSB0aGUgY3VycmVudEluZGV4IGlzIGludmFsaWQuXG5cdFx0XHRtQnV0dG9uRW5hYmxlbWVudE1vZGVsLnNldFByb3BlcnR5KFwiL25hdlVwRW5hYmxlZFwiLCBmYWxzZSk7XG5cdFx0XHRtQnV0dG9uRW5hYmxlbWVudE1vZGVsLnNldFByb3BlcnR5KFwiL25hdkRvd25FbmFibGVkXCIsIGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRfdXBkYXRlQ3VycmVudEluZGV4KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLl9vQ3VycmVudENvbnRleHQgJiYgdGhpcy5fb0xpc3RCaW5kaW5nKSB7XG5cdFx0XHRjb25zdCBzUGF0aCA9IHRoaXMuX29DdXJyZW50Q29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHQvLyBTdG9yaW5nIHRoZSBjdXJyZW50SW5kZXggaW4gZ2xvYmFsIHZhcmlhYmxlXG5cdFx0XHR0aGlzLl9pQ3VycmVudEluZGV4ID0gdGhpcy5fb0xpc3RCaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbmRJbmRleChmdW5jdGlvbiAob0NvbnRleHQ6IE9EYXRhVjRDb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybiBvQ29udGV4dCAmJiBvQ29udGV4dC5nZXRQYXRoKCkgPT09IHNQYXRoO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHVwZGF0ZUN1cnJlbnRDb250ZXh0KGlEZWx0YUluZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuX29MaXN0QmluZGluZykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBvTW9kZWwgPSB0aGlzLl9vQ3VycmVudENvbnRleHQ/LmdldE1vZGVsID8gdGhpcy5fb0N1cnJlbnRDb250ZXh0Py5nZXRNb2RlbCgpIDogdW5kZWZpbmVkO1xuXHRcdC8vU3VibWl0dGluZyBhbnkgcGVuZGluZyBjaGFuZ2VzIHRoYXQgbWlnaHQgYmUgdGhlcmUgYmVmb3JlIG5hdmlnYXRpbmcgdG8gbmV4dCBjb250ZXh0LlxuXHRcdGF3YWl0IG9Nb2RlbD8uc3VibWl0QmF0Y2goXCIkYXV0b1wiKTtcblx0XHRjb25zdCBhQ3VycmVudENvbnRleHRzID0gdGhpcy5fb0xpc3RCaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpO1xuXHRcdGNvbnN0IGlOZXdJbmRleCA9IHRoaXMuX2lDdXJyZW50SW5kZXggKyBpRGVsdGFJbmRleDtcblx0XHRjb25zdCBvTmV3Q29udGV4dCA9IGFDdXJyZW50Q29udGV4dHNbaU5ld0luZGV4XTtcblxuXHRcdGlmIChvTmV3Q29udGV4dCkge1xuXHRcdFx0Y29uc3QgYlByZXZlbnRJZHhVcGRhdGUgPSB0aGlzLm9uQmVmb3JlQ29udGV4dFVwZGF0ZSh0aGlzLl9vTGlzdEJpbmRpbmcsIHRoaXMuX2lDdXJyZW50SW5kZXgsIGlEZWx0YUluZGV4KTtcblx0XHRcdGlmICghYlByZXZlbnRJZHhVcGRhdGUpIHtcblx0XHRcdFx0dGhpcy5faUN1cnJlbnRJbmRleCA9IGlOZXdJbmRleDtcblx0XHRcdFx0dGhpcy5fb0N1cnJlbnRDb250ZXh0ID0gb05ld0NvbnRleHQ7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm9uQ29udGV4dFVwZGF0ZShvTmV3Q29udGV4dCk7XG5cdFx0fVxuXHRcdHRoaXMuX2hhbmRsZUJ1dHRvbkVuYWJsZW1lbnQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYmVmb3JlIGNvbnRleHQgdXBkYXRlLlxuXHQgKlxuXHQgKiBAcGFyYW0gX29MaXN0QmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gX2lDdXJyZW50SW5kZXggQ3VycmVudCBpbmRleCBvZiBjb250ZXh0IGluIGxpc3RCaW5kaW5nIGZyb20gd2hlcmUgdGhlIG5hdmlnYXRpb24gaXMgaW5pdGlhdGVkXG5cdCAqIEBwYXJhbSBfaUluZGV4VXBkYXRlIFRoZSBkZWx0YSBpbmRleCBmb3IgdXBkYXRlXG5cdCAqIEByZXR1cm5zIGB0cnVlYCB0byBwcmV2ZW50IHRoZSB1cGRhdGUgb2YgY3VycmVudCBjb250ZXh0LlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25CZWZvcmVDb250ZXh0VXBkYXRlKF9vTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIF9pQ3VycmVudEluZGV4OiBudW1iZXIsIF9pSW5kZXhVcGRhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIGNvbnRleHQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBvcGVyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBGaW5hbCBjb250ZXh0IHJldHVybmVkIGFmdGVyIHRoZSBwYWdpbmF0b3IgYWN0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTQuMFxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkNvbnRleHRVcGRhdGUob0NvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRvcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxTQUFTLFdBRGRDLGNBQWMsQ0FBQyw0Q0FBNEMsQ0FBQyxVQVkzREMsY0FBYyxFQUFFLFVBb0JoQkMsZUFBZSxFQUFFLFVBQ2pCQyxjQUFjLEVBQUUsVUFzRWhCRCxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQStCaEJDLGdCQUFnQixFQUFFLFVBQ2xCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsVUFZbkNILGdCQUFnQixFQUFFLFdBQ2xCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUM7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO01BQUE7TUFBQTtNQUFBLE1BM0k1QkMsY0FBYyxHQUFHLENBQUMsQ0FBQztNQUFBO0lBQUE7SUFBQTtJQUFBLE9BRzNCQyxNQUFNLEdBRE4sa0JBQ2U7TUFDZCxJQUFJLENBQUND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
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJkZWZpbmVVSTVDbGFzcyIsInB1YmxpY0V4dGVuc2lvbiIsImhvb2thYmxlIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJpbml0aWFsaXplIiwib0JpbmRpbmciLCJvQ29udGV4dCIsIm9uQmVmb3JlQ29udGV4dFVwZGF0ZSIsIm9MaXN0QmluZGluZyIsImlDdXJyZW50SW5kZXgiLCJpSW5kZXhVcGRhdGUiLCJvbkNvbnRleHRVcGRhdGUiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdpbmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB7IGhvb2thYmxlIH0gZnJvbSBcIi4vSG9va1N1cHBvcnRcIjtcblxuLyoqXG4gKiBDb250cm9sbGVyIGV4dGVuc2lvbiBwcm92aWRpbmcgaG9va3MgZm9yIHRoZSBuYXZpZ2F0aW9uIHVzaW5nIHBhZ2luYXRvcnNcbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2luYXRvclwiKVxuY2xhc3MgUGFnaW5hdG9yIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0LyoqXG5cdCAqIEluaXRpYXRlcyB0aGUgcGFnaW5hdG9yIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gb0NvbnRleHQgQ3VycmVudCBjb250ZXh0IHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAaG9va2FibGUoXCJiZWZvcmVcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRpbml0aWFsaXplKG9CaW5kaW5nPzogT0RhdGFMaXN0QmluZGluZywgb0NvbnRleHQ/OiBDb250ZXh0KTogdm9pZCB7fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYmVmb3JlIGNvbnRleHQgdXBkYXRlLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0xpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0XG5cdCAqIEBwYXJhbSBpQ3VycmVudEluZGV4IEN1cnJlbnQgaW5kZXggb2YgY29udGV4dCBpbiBsaXN0QmluZGluZyBmcm9tIHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcGFyYW0gaUluZGV4VXBkYXRlIFRoZSBkZWx0YSBpbmRleCBmb3IgdXBkYXRlXG5cdCAqIEByZXR1cm5zIGB0cnVlYCB0byBwcmV2ZW50IHRoZSB1cGRhdGUgb2YgY3VycmVudCBjb250ZXh0LlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQmVmb3JlQ29udGV4dFVwZGF0ZShvTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIGlDdXJyZW50SW5kZXg6IG51bWJlciwgaUluZGV4VXBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXBkYXRlZCBjb250ZXh0IGFmdGVyIHRoZSBwYWdpbmF0b3Igb3BlcmF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgRmluYWwgY29udGV4dCByZXR1cm5lZCBhZnRlciB0aGUgcGFnaW5hdG9yIGFjdGlvblxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkNvbnRleHRVcGRhdGUob0NvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRvcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxTQUFTLFdBRGRDLGNBQWMsQ0FBQyw0Q0FBNEMsQ0FBQyxVQVkzREMsZUFBZSxFQUFFLFVBQ2pCQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBWWxCRCxlQUFlLEVBQUUsVUFDakJFLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQUssQ0FBQyxVQWFuQ0osZUFBZSxFQUFFLFVBQ2pCRSxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUM7SUFBQTtJQUFBO01BQUE7SUFBQTtJQUFBO0lBcENwQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBUEM7SUFVQTtJQUNBQyxVQUFVLEdBSFYsb0JBR1dDLFFBQTJCLEVBQUVDLFFBQWtCLEVBQVEsQ0FBQzs7SUFFbkU7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQVBDO0lBQUE7SUFVQTtJQUNBQyxxQkFBcUIsR0FIckIsK0JBR3NCQyxZQUE4QixFQUFFQyxhQUFxQixFQUFFQyxZQUFvQixFQUFXO01BQzNHLE9BQU8sS0FBSztJQUNiOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQTtJQVNBO0lBQ0FDLGVBQWUsR0FIZix5QkFHZ0JMLFFBQWlCLEVBQVE7TUFDeEM7SUFBQSxDQUNBO0lBQUE7RUFBQSxFQTNDc0JNLG1CQUFtQjtFQUFBLE9BNkM1QmYsU0FBUztBQUFBIn0=