@sapui5/sap.fe.core 1.111.1 → 1.112.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 (524) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime-dbg.js +4 -4
  4. package/src/sap/fe/core/ActionRuntime.js +1 -1
  5. package/src/sap/fe/core/ActionRuntime.js.map +1 -1
  6. package/src/sap/fe/core/ActionRuntime.ts +11 -11
  7. package/src/sap/fe/core/AppComponent-dbg.js +27 -5
  8. package/src/sap/fe/core/AppComponent.js +1 -1
  9. package/src/sap/fe/core/AppComponent.js.map +1 -1
  10. package/src/sap/fe/core/AppComponent.ts +58 -3
  11. package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
  12. package/src/sap/fe/core/AppStateHandler.js +1 -1
  13. package/src/sap/fe/core/AppStateHandler.js.map +1 -1
  14. package/src/sap/fe/core/AppStateHandler.ts +10 -1
  15. package/src/sap/fe/core/BaseController-dbg.js +1 -1
  16. package/src/sap/fe/core/BaseController.ts +2 -1
  17. package/src/sap/fe/core/CommonUtils-dbg.js +152 -365
  18. package/src/sap/fe/core/CommonUtils.js +1 -1
  19. package/src/sap/fe/core/CommonUtils.js.map +1 -1
  20. package/src/sap/fe/core/CommonUtils.ts +201 -478
  21. package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -1
  22. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  23. package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
  24. package/src/sap/fe/core/ExtensionAPI.ts +9 -1
  25. package/src/sap/fe/core/PageController-dbg.js +26 -31
  26. package/src/sap/fe/core/PageController.js +1 -1
  27. package/src/sap/fe/core/PageController.js.map +1 -1
  28. package/src/sap/fe/core/PageController.ts +17 -3
  29. package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
  30. package/src/sap/fe/core/ResourceModel.js +6 -0
  31. package/src/sap/fe/core/ResourceModel.js.map +1 -0
  32. package/src/sap/fe/core/ResourceModel.ts +67 -0
  33. package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  34. package/src/sap/fe/core/TemplateComponent.ts +1 -0
  35. package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
  36. package/src/sap/fe/core/TemplateModel.ts +6 -1
  37. package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
  38. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  39. package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
  40. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
  41. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +163 -0
  42. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
  43. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +169 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
  48. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +147 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -0
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
  52. package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +290 -362
  53. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
  54. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
  55. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
  56. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
  57. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
  58. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
  59. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
  60. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +181 -0
  61. package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
  62. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
  63. package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
  64. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
  65. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +890 -220
  66. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  67. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
  68. package/src/sap/fe/core/controllerextensions/EditFlow.ts +974 -239
  69. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
  70. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  71. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
  72. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +71 -61
  73. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
  74. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  75. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
  76. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
  77. package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
  78. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
  79. package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
  80. package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
  81. package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
  82. package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
  83. package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
  84. package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
  85. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
  86. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
  87. package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
  88. package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
  89. package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
  90. package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
  91. package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
  92. package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
  93. package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
  94. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
  95. package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
  96. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
  97. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  98. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
  99. package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
  100. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
  101. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  102. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
  103. package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
  104. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
  105. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
  106. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
  107. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
  108. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
  109. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
  111. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
  112. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
  113. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
  114. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
  115. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
  116. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +1 -1
  117. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
  118. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
  119. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
  120. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
  121. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
  122. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
  123. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
  124. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +45 -31
  125. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
  126. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
  127. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +52 -42
  128. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -49
  129. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
  130. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
  131. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +43 -63
  132. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
  133. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -0
  134. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
  135. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
  136. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +114 -0
  137. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -0
  138. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
  139. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
  140. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1985 -0
  141. package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
  142. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  143. package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
  144. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
  145. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -11
  146. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
  147. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
  148. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -13
  149. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
  150. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  151. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  152. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +44 -47
  153. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
  154. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
  155. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
  156. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +12 -13
  157. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  158. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
  159. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +32 -13
  160. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
  161. package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
  162. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  163. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
  164. package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
  165. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
  166. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
  167. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
  168. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
  169. package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
  170. package/src/sap/fe/core/controls/FilterBar.ts +5 -0
  171. package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
  172. package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
  173. package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
  174. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
  175. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
  176. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
  177. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
  178. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
  179. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
  180. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  181. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
  182. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
  183. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
  184. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
  185. package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
  186. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
  187. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
  188. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
  189. package/src/sap/fe/core/converters/ConverterContext-dbg.js +1 -1
  190. package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
  191. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
  192. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  193. package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
  194. package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
  195. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +17 -1
  196. package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  197. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
  198. package/src/sap/fe/core/converters/ManifestWrapper.ts +16 -0
  199. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
  200. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  201. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
  202. package/src/sap/fe/core/converters/MetaModelConverter.ts +65 -51
  203. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
  204. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
  205. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  206. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +65 -16
  207. package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  208. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
  209. package/src/sap/fe/core/converters/annotations/DataField.ts +62 -18
  210. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
  211. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  212. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
  213. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +8 -8
  214. package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  215. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
  216. package/src/sap/fe/core/converters/controls/Common/Action.ts +28 -26
  217. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
  218. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  219. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  220. package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
  221. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
  222. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  223. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
  224. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
  225. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +1 -1
  226. package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
  227. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
  228. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  229. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
  230. package/src/sap/fe/core/converters/controls/Common/KPI.ts +15 -15
  231. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
  232. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  233. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
  234. package/src/sap/fe/core/converters/controls/Common/Table.ts +161 -137
  235. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
  236. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  237. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  238. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +10 -9
  239. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
  240. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  241. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
  242. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +130 -86
  243. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
  244. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  245. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
  246. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +62 -45
  247. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
  248. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
  249. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
  250. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  251. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
  252. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
  253. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +34 -13
  254. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  255. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
  256. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +54 -20
  257. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
  258. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
  259. package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
  260. package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
  261. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  262. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
  263. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
  264. package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
  265. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
  266. package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
  267. package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
  268. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +9 -8
  269. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  270. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
  271. package/src/sap/fe/core/converters/helpers/IssueManager.ts +8 -7
  272. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
  273. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  274. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
  275. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +9 -6
  276. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
  277. package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  278. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
  279. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +35 -35
  280. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
  281. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  282. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
  283. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +7 -1
  284. package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
  285. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  286. package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
  287. package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
  288. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -2
  289. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  290. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
  291. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
  292. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -5
  293. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  294. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
  295. package/src/sap/fe/core/formatters/ValueFormatter.ts +6 -4
  296. package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
  297. package/src/sap/fe/core/fpm/Component.ts +1 -0
  298. package/src/sap/fe/core/fpm/manifest.json +1 -1
  299. package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
  300. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  301. package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
  302. package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
  303. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +6 -6
  304. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
  305. package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
  306. package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
  307. package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
  308. package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
  309. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
  310. package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
  311. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
  312. package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
  313. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +20 -18
  314. package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  315. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
  316. package/src/sap/fe/core/helpers/MassEditHelper.ts +22 -23
  317. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
  318. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  319. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
  320. package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
  321. package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -0
  322. package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
  323. package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
  324. package/src/sap/fe/core/helpers/MetaModelFunction.ts +408 -0
  325. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
  326. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
  327. package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
  328. package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
  329. package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
  330. package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
  331. package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
  332. package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +26 -0
  333. package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
  334. package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
  335. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +19 -0
  336. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
  337. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  338. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
  339. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +70 -17
  340. package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
  341. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  342. package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
  343. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  344. package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
  345. package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
  346. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -1
  347. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  348. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
  349. package/src/sap/fe/core/helpers/TypeGuards.ts +12 -1
  350. package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
  351. package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
  352. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
  353. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
  354. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
  355. package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
  356. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
  357. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
  358. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  359. package/src/sap/fe/core/library-dbg.js +2 -2
  360. package/src/sap/fe/core/library-preload.js +127 -125
  361. package/src/sap/fe/core/library-preload.js.map +1 -1
  362. package/src/sap/fe/core/library.js +1 -1
  363. package/src/sap/fe/core/library.ts +7 -0
  364. package/src/sap/fe/core/manifest.json +1 -1
  365. package/src/sap/fe/core/messagebundle.properties +33 -0
  366. package/src/sap/fe/core/messagebundle_ar.properties +12 -10
  367. package/src/sap/fe/core/messagebundle_bg.properties +11 -9
  368. package/src/sap/fe/core/messagebundle_ca.properties +11 -9
  369. package/src/sap/fe/core/messagebundle_cs.properties +11 -9
  370. package/src/sap/fe/core/messagebundle_cy.properties +11 -9
  371. package/src/sap/fe/core/messagebundle_da.properties +11 -9
  372. package/src/sap/fe/core/messagebundle_de.properties +3 -1
  373. package/src/sap/fe/core/messagebundle_el.properties +11 -9
  374. package/src/sap/fe/core/messagebundle_en.properties +3 -1
  375. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  376. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
  377. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
  378. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
  379. package/src/sap/fe/core/messagebundle_es.properties +11 -9
  380. package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
  381. package/src/sap/fe/core/messagebundle_et.properties +11 -9
  382. package/src/sap/fe/core/messagebundle_fi.properties +11 -9
  383. package/src/sap/fe/core/messagebundle_fr.properties +11 -9
  384. package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
  385. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  386. package/src/sap/fe/core/messagebundle_hr.properties +11 -9
  387. package/src/sap/fe/core/messagebundle_hu.properties +11 -9
  388. package/src/sap/fe/core/messagebundle_id.properties +3 -1
  389. package/src/sap/fe/core/messagebundle_it.properties +11 -9
  390. package/src/sap/fe/core/messagebundle_iw.properties +11 -9
  391. package/src/sap/fe/core/messagebundle_ja.properties +11 -9
  392. package/src/sap/fe/core/messagebundle_kk.properties +11 -9
  393. package/src/sap/fe/core/messagebundle_ko.properties +2 -0
  394. package/src/sap/fe/core/messagebundle_lt.properties +11 -9
  395. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  396. package/src/sap/fe/core/messagebundle_ms.properties +12 -10
  397. package/src/sap/fe/core/messagebundle_nl.properties +12 -10
  398. package/src/sap/fe/core/messagebundle_no.properties +11 -9
  399. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  400. package/src/sap/fe/core/messagebundle_pt.properties +11 -9
  401. package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
  402. package/src/sap/fe/core/messagebundle_ro.properties +3 -1
  403. package/src/sap/fe/core/messagebundle_ru.properties +3 -1
  404. package/src/sap/fe/core/messagebundle_sh.properties +11 -9
  405. package/src/sap/fe/core/messagebundle_sk.properties +11 -9
  406. package/src/sap/fe/core/messagebundle_sl.properties +11 -9
  407. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  408. package/src/sap/fe/core/messagebundle_th.properties +11 -9
  409. package/src/sap/fe/core/messagebundle_tr.properties +11 -9
  410. package/src/sap/fe/core/messagebundle_uk.properties +11 -9
  411. package/src/sap/fe/core/messagebundle_vi.properties +12 -10
  412. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  413. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
  414. package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
  415. package/src/sap/fe/core/operationsHelper.js +1 -1
  416. package/src/sap/fe/core/operationsHelper.js.map +1 -1
  417. package/src/sap/fe/core/operationsHelper.ts +88 -63
  418. package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
  419. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
  420. package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
  421. package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
  422. package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
  423. package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
  424. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +4 -3
  425. package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
  426. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
  427. package/src/sap/fe/core/rootView/RootViewBaseController.ts +15 -5
  428. package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
  429. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  430. package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
  431. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
  432. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
  433. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
  434. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
  435. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
  436. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
  437. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
  438. package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
  439. package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
  440. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  441. package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
  442. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
  443. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +3 -3
  444. package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  445. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
  446. package/src/sap/fe/core/services/RoutingServiceFactory.ts +29 -3
  447. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
  448. package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
  449. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
  450. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  451. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
  452. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +502 -333
  453. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
  454. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  455. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
  456. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +41 -12
  457. package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
  458. package/src/sap/fe/core/support/Diagnostics.ts +5 -0
  459. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +185 -86
  460. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  461. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
  462. package/src/sap/fe/core/templating/DataModelPathHelper.ts +190 -82
  463. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
  464. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
  465. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
  466. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  467. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
  468. package/src/sap/fe/core/templating/EntitySetHelper.ts +1 -3
  469. package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
  470. package/src/sap/fe/core/templating/FilterHelper.js +1 -1
  471. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
  472. package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
  473. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
  474. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  475. package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
  476. package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
  477. package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
  478. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
  479. package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
  480. package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
  481. package/src/sap/fe/core/type/FiscalDate.ts +2 -1
  482. package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
  483. package/src/sap/fe/core/type/TypeUtil.js +1 -1
  484. package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
  485. package/src/sap/fe/core/type/TypeUtil.ts +3 -6
  486. package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
  487. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
  488. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
  489. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
  490. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
  491. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
  492. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
  493. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
  494. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
  495. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
  496. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
  497. package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
  498. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
  499. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
  500. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
  501. package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
  502. package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
  503. package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
  504. package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
  505. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
  506. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
  507. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
  508. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
  509. package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
  510. package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
  511. package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
  512. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
  513. package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
  514. package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
  515. package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
  516. package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
  517. package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
  518. package/src/sap/fe/core/controls/FileWrapper.js +0 -6
  519. package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
  520. package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
  521. package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
  522. package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
  523. package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
  524. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
@@ -495,4 +495,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
495
495
  _exports.getRequiredExpressionForConnectedDataField = getRequiredExpressionForConnectedDataField;
496
496
  return _exports;
497
497
  }, false);
498
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREaXNwbGF5TW9kZSIsIm9EYXRhTW9kZWxPYmplY3RQYXRoIiwiRGlzcGxheU1vZGVGb3JtYXR0ZXIiLCJ0YXJnZXRPYmplY3QiLCJnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YUZpZWxkQ29udmVydGVkIiwiaXNFZGl0YWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsImdldEVkaXRhYmxlRXhwcmVzc2lvbiIsImJBc09iamVjdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJpZkVsc2UiLCJpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwicmVsYXRpdmVQYXRoIiwiZ2V0UmVsYXRpdmVQYXRocyIsImlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24iLCJpc1BhdGhVcGRhdGFibGUiLCJwcm9wZXJ0eVBhdGgiLCJwYXRoVmlzaXRvciIsInBhdGgiLCJuYXZpZ2F0aW9uUGF0aHMiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImNvbnZlcnRlZFR5cGVzIiwiZWRpdGFibGVFeHByZXNzaW9uIiwib3IiLCJub3QiLCJpc0NvbXB1dGVkIiwiaXNLZXkiLCJpc0ltbXV0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImFuZCIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZvcm1hdHRlciIsIm9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYWN0aXZpdHlFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJrZXlzIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXNFeHByZXNzaW9ucyIsImZvckVhY2giLCJrZXkiLCJrZXlFeHByZXNzaW9uIiwibmFtZSIsInB1c2giLCJmb3JtYXRSZXN1bHQiLCJnZXRFbmFibGVkRXhwcmVzc2lvbkFzT2JqZWN0IiwiZ2V0RW5hYmxlZEV4cHJlc3Npb24iLCJkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbiIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiZW5hYmxlZEV4cHJlc3Npb24iLCJnZXRFZGl0TW9kZSIsIm1lYXN1cmVSZWFkT25seSIsImFzT2JqZWN0IiwiZGF0YUZpZWxkQ29udmVydGVkIiwiJFR5cGUiLCJwcm9wZXJ0eSIsImFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwicmVzdWx0RXhwcmVzc2lvbiIsImlzVW5pdFJlYWRPbmx5IiwiaXNSZWFkT25seUV4cHJlc3Npb24iLCJpc0NvbnN0YW50IiwicmVhZE9ubHlFeHByZXNzaW9uIiwiZWRpdE1vZGVFeHByZXNzaW9uIiwiaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQiLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsImN1cnJlbmN5IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwibWVhc3VyZSIsIlVuaXQiLCJpc1RydXRoeSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIklzVG90YWwiLCJpZlVuaXRFZGl0YWJsZSIsInNFZGl0YWJsZVZhbHVlIiwic05vbkVkaXRhYmxlVmFsdWUiLCJnZXRGaWVsZERpc3BsYXkiLCJzVGFyZ2V0RGlzcGxheU1vZGUiLCJvQ29tcHV0ZWRFZGl0TW9kZSIsImhhc1ZhbHVlSGVscCIsImVxdWFsIiwiZ2V0VHlwZUNvbmZpZyIsImRhdGFUeXBlIiwib1RhcmdldE1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwidHlwZSIsInVuZGVmaW5lZCIsInByb3BlcnR5VHlwZUNvbmZpZyIsImNvbnN0cmFpbnRzIiwiZm9ybWF0T3B0aW9ucyIsImlzUHJvcGVydHkiLCJzY2FsZSIsIiRTY2FsZSIsInByZWNpc2lvbiIsIiRQcmVjaXNpb24iLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJtaW5pbXVtIiwiaXNOYU4iLCJWYWxpZGF0aW9uIiwiTWluaW11bSIsIm1heGltdW0iLCJNYXhpbXVtIiwiaXNEaWdpdFNlcXVlbmNlIiwiQ29tbW9uIiwiSXNEaWdpdFNlcXVlbmNlIiwiVjQiLCIkVjQiLCJwYXJzZUFzU3RyaW5nIiwiaW5kZXhPZiIsImVtcHR5U3RyaW5nIiwicGFyc2VLZWVwc0VtcHR5U3RyaW5nIiwiZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiaWdub3JlVW5pdENvbnN0cmFpbnQiLCJ1bml0IiwicmVsYXRpdmVMb2NhdGlvbiIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0b1N0cmluZyIsInNob3dNZWFzdXJlIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aFBlcmNlbnRhZ2UiLCJjb21wbGV4VHlwZSIsInVuaXRCaW5kaW5nRXhwcmVzc2lvbiIsImFkZFR5cGVJbmZvcm1hdGlvbiIsImdldEJpbmRpbmdGb3JVbml0T3JDdXJyZW5jeSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJzaG93TnVtYmVyIiwiZ2V0QmluZGluZ1dpdGhUaW1lem9uZSIsImhpZGVUaW1lem9uZUZvckVtcHR5VmFsdWVzIiwiZGF0ZUZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsIlRpbWV6b25lIiwic2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZSIsInNob3dEYXRlIiwic2hvd1RpbWV6b25lIiwiZ2V0QWxpZ25tZW50RXhwcmVzc2lvbiIsInNBbGlnbkRpc3BsYXkiLCJzQWxpZ25FZGl0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIm9Db250ZXh0Iiwib0ludGVyZmFjZSIsImNvbnRleHQiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInJlcXVpcmVzSUNvbnRleHQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaXNNdWx0aVZhbHVlRmllbGQiLCJvRGF0YU1vZGVsUGF0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibGVuZ3RoIiwiaGFzT25lVG9NYW55TmF2aWdhdGlvbiIsImZpbmRJbmRleCIsIm9OYXYiLCJfdHlwZSIsImlzQ29sbGVjdGlvbiIsImNvbnRleHRMb2NhdGlvbiIsIm9Db250ZXh0TmF2IiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QiLCJmb3JjZUVkaXRNb2RlIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwib1JlcXVpcmVkUHJvcGVydGllcyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyIsImRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbiIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiZWRpdE1vZGUiLCJpbmNsdWRlcyIsIklzQ3JlYXRlTW9kZSIsIm5vdEVxdWFsIiwicmV0dXJuRXhwcmVzc2lvbiIsImdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCIsImRhdGFGaWVsZE9iamVjdFBhdGgiLCJkYXRhIiwiRGF0YSIsIk9iamVjdCIsImRhdGFGaWVsZHMiLCJpc1JlcXVpcmVkRXhwcmVzc2lvbnMiLCJkYXRhRmllbGQiLCJWYWx1ZSIsIlRhcmdldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUlGb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBzaW5nbGV0b25QYXRoVmlzaXRvciwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0LCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZGRUeXBlSW5mb3JtYXRpb24sXG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRFRE1fVFlQRV9NQVBQSU5HLFxuXHRlcXVhbCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0aXNUcnV0aHksXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoVXBkYXRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuXHRpc0Rpc2FibGVkRXhwcmVzc2lvbixcblx0aXNOb25FZGl0YWJsZUV4cHJlc3Npb24sXG5cdGlzUmVhZE9ubHlFeHByZXNzaW9uLFxuXHRpc1JlcXVpcmVkRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGlzQ29tcHV0ZWQsXG5cdGlzSW1tdXRhYmxlLFxuXHRpc0tleSxcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2QgdXNlZCBieSB0aGUgY29udmVydGVyIHRvIHVzZSB0aGVtIGluIHRoZSB0ZW1wbGF0aW5nIHRocm91Z2ggdGhlIFVJRm9ybWF0dGVycy5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gRGlzcGxheU1vZGVGb3JtYXR0ZXIuRGlzcGxheU1vZGU7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcbmV4cG9ydCB0eXBlIE1ldGFNb2RlbENvbnRleHQgPSB7XG5cdCRraW5kOiBzdHJpbmc7XG5cdCRUeXBlOiBzdHJpbmc7XG5cdCROdWxsYWJsZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlID0ge1xuXHRjb250ZXh0OiBDb250ZXh0O1xuXHRhcmd1bWVudHM/OiBhbnlbXTtcblx0JCR2YWx1ZUFzUHJvbWlzZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlQ29uc3RyYWludHMgPSB7XG5cdHNjYWxlPzogbnVtYmVyO1xuXHRwcmVjaXNpb24/OiBudW1iZXI7XG5cdG1heExlbmd0aD86IG51bWJlcjtcblx0bnVsbGFibGU/OiBib29sZWFuO1xuXHRtaW5pbXVtPzogc3RyaW5nO1xuXHRtYXhpbXVtPzogc3RyaW5nO1xuXHRpc0RpZ2l0U2VxdWVuY2U/OiBib29sZWFuO1xuXHRWND86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlZm9ybWF0T3B0aW9ucyA9IHtcblx0cGFyc2VBc1N0cmluZz86IGJvb2xlYW47XG5cdGVtcHR5U3RyaW5nPzogc3RyaW5nO1xuXHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgY29uZmlnVHlwZSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRjb25zdHJhaW50czogY29uZmlnVHlwZUNvbnN0cmFpbnRzO1xuXHRmb3JtYXRPcHRpb25zOiBjb25maWdUeXBlZm9ybWF0T3B0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERpc3BsYXlNb2RlIHtcblx0cmV0dXJuIERpc3BsYXlNb2RlRm9ybWF0dGVyLmdldERpc3BsYXlNb2RlKG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgb0RhdGFNb2RlbE9iamVjdFBhdGgpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkOiBhbnkgPSBudWxsLFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldEVkaXRhYmxlRXhwcmVzc2lvbihcblx0XHRvUHJvcGVydHlQYXRoLFxuXHRcdG9EYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0b0RhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0dHJ1ZSxcblx0XHRpc0VkaXRhYmxlXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IHR5cGUgZGF0ZUZvcm1hdE9wdGlvbnMgPSB7XG5cdHNob3dEYXRlOiBzdHJpbmc7XG5cdHNob3dUaW1lOiBzdHJpbmc7XG5cdHNob3dUaW1lem9uZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGV4cHJlc3Npb24gdG8gZ2VuZXJhdGUgYW4gXCJlZGl0YWJsZVwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIG9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBwYXRoIHRvIHRoaXMgcHJvcGVydHkgb2JqZWN0XG4gKiBAcGFyYW0gYkFzT2JqZWN0IFdoZXRoZXIgb3Igbm90IHRoaXMgc2hvdWxkIGJlIHJldHVybmVkIGFzIGFuIG9iamVjdCBvciBhIGJpbmRpbmcgc3RyaW5nXG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvcGVydHkgaXMgZWRpdGFibGUgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0b0RhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpc0VkaXRhYmxlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBVSS5Jc0VkaXRhYmxlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihmYWxzZSk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZEVkaXRhYmxlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgaXNFZGl0YWJsZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMob0RhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBFZGl0YWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBmaWVsZCBjb250cm9sIGV4cHJlc3Npb25cblx0Ly8gSWYgdGhlIEZpZWxkIGNvbnRyb2wgaXMgc3RhdGljYWxseSBpbiBSZWFkT25seSBvciBJbmFwcGxpY2FibGUgKGRpc2FibGVkKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEga2V5IC0+IG5vdCBlZGl0YWJsZSBleGNlcHQgaW4gY3JlYXRpb24gaWYgbm90IGNvbXB1dGVkXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBjb21wdXRlZCAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1cGRhdGFibGUgLT4gbm90IGVkaXRhYmxlXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBpbW11dGFibGUgLT4gbm90IGVkaXRhYmxlIGV4Y2VwdCBpbiBjcmVhdGlvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBhIHBhdGggcmVzb2x2aW5nIHRvIFJlYWRPbmx5IG9yIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpICg8PSAxKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gRWxzZSwgdG8gYmUgZWRpdGFibGUgeW91IG5lZWRcblx0Ly8gaW1tdXRhYmxlIGFuZCBrZXkgd2hpbGUgaW4gdGhlIGNyZWF0aW9uIHJvd1xuXHQvLyB1aS9pc0VkaXRhYmxlXG5cdGNvbnN0IGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBpc1BhdGhVcGRhdGFibGUob0RhdGFNb2RlbE9iamVjdFBhdGgsIHtcblx0XHRwcm9wZXJ0eVBhdGg6IG9Qcm9wZXJ0eVBhdGgsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBvRGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcywgbmF2aWdhdGlvblBhdGhzKVxuXHR9KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdG9yKFxuXHRcdFx0bm90KGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pLFxuXHRcdFx0aXNDb21wdXRlZChvUHJvcGVydHkpLFxuXHRcdFx0aXNLZXkob1Byb3BlcnR5KSxcblx0XHRcdGlzSW1tdXRhYmxlKG9Qcm9wZXJ0eSksXG5cdFx0XHRpc05vbkVkaXRhYmxlRXhwcmVzc2lvbihvUHJvcGVydHksIHJlbGF0aXZlUGF0aClcblx0XHQpLFxuXHRcdGlmRWxzZShvcihpc0NvbXB1dGVkKG9Qcm9wZXJ0eSksIGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKSksIGZhbHNlLCBVSS5Jc1RyYW5zaWVudEJpbmRpbmcpLFxuXHRcdGlzRWRpdGFibGVcblx0KTtcblx0aWYgKGJBc09iamVjdCkge1xuXHRcdHJldHVybiBhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9ybWF0dGVyOiBhbnlcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3Qgb2JqZWN0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGFjdGl2aXR5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGAvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzJHtvYmplY3RQYXRofWAsIFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IGtleXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlPy5rZXlzO1xuXHRjb25zdCBrZXlzRXhwcmVzc2lvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+W10gPSBbXTtcblx0a2V5cz8uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0Y29uc3Qga2V5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGtleS5uYW1lKTtcblx0XHRrZXlzRXhwcmVzc2lvbnMucHVzaChrZXlFeHByZXNzaW9uKTtcblx0fSk7XG5cdHJldHVybiBmb3JtYXRSZXN1bHQoW2FjdGl2aXR5RXhwcmVzc2lvbiwgLi4ua2V5c0V4cHJlc3Npb25zXSwgZm9ybWF0dGVyKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RW5hYmxlZEV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBnZXRFbmFibGVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCB0cnVlLCBvRGF0YU1vZGVsT2JqZWN0UGF0aCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZW5hYmxlZFwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIE9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIGJBc09iamVjdCBXaGV0aGVyIG9yIG5vdCB0aGlzIHNob3VsZCBiZSByZXR1cm5lZCBhcyBhbiBvYmplY3Qgb3IgYSBiaW5kaW5nIHN0cmluZ1xuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGRldGVybWluZSBpZiBhIHByb3BlcnR5IGlzIGVuYWJsZWQgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFbmFibGVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRiQXNPYmplY3QgPSBmYWxzZSxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0cnVlKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAob0RhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRyZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKG9EYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRsZXQgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9IGNvbnN0YW50KHRydWUpO1xuXHRpZiAob0RhdGFGaWVsZENvbnZlcnRlZCAhPT0gbnVsbCkge1xuXHRcdGRhdGFGaWVsZEVuYWJsZWRFeHByZXNzaW9uID0gaWZFbHNlKGlzRGlzYWJsZWRFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdC8vIEVuYWJsZW1lbnQgZGVwZW5kcyBvbiB0aGUgZmllbGQgY29udHJvbCBleHByZXNzaW9uXG5cdC8vIElmIHRoZSBGaWVsZCBjb250cm9sIGlzIHN0YXRpY2FsbHkgaW4gSW5hcHBsaWNhYmxlIChkaXNhYmxlZCkgLT4gbm90IGVuYWJsZWRcblx0Y29uc3QgZW5hYmxlZEV4cHJlc3Npb24gPSBpZkVsc2UoaXNEaXNhYmxlZEV4cHJlc3Npb24ob1Byb3BlcnR5LCByZWxhdGl2ZVBhdGgpLCBmYWxzZSwgdHJ1ZSk7XG5cdGlmIChiQXNPYmplY3QpIHtcblx0XHRyZXR1cm4gYW5kKGVuYWJsZWRFeHByZXNzaW9uLCBkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChlbmFibGVkRXhwcmVzc2lvbiwgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb24pKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZWRpdE1vZGVcIiBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgbGlzdCBvZiBkYXRhIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgaW52b2x2ZWQgdG8gcmVhY2ggdGhhdCBwcm9wZXJ0eVxuICogQHBhcmFtIG1lYXN1cmVSZWFkT25seSBXaGV0aGVyIHdlIHNob3VsZCBzZXQgVW9NIC8gY3VycmVuY3kgZmllbGQgbW9kZSB0byByZWFkIG9ubHlcbiAqIEBwYXJhbSBhc09iamVjdCBXaGV0aGVyIHdlIHNob3VsZCByZXR1cm4gdGhpcyBhcyBhbiBleHByZXNzaW9uIG9yIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0gZGF0YUZpZWxkQ29udmVydGVkIFRoZSBkYXRhRmllbGQgb2JqZWN0XG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBwcm9wZXJ0eSBlZGl0IG1vZGUsIGNvbXBsaWFudCB3aXRoIHRoZSBNREMgRmllbGQgZGVmaW5pdGlvbiBvZiBlZGl0TW9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRNb2RlID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0bWVhc3VyZVJlYWRPbmx5OiBib29sZWFuID0gZmFsc2UsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2UsXG5cdGRhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmICghcHJvcGVydHlQYXRoIHx8IHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIgfHwgZGF0YUZpZWxkQ29udmVydGVkPy4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0cmV0dXJuIFwiRGlzcGxheVwiO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgJiYgcHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChwcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGVuYWJsZWQgPT4gRGlzYWJsZWRcblx0Ly8gaWYgdGhlIHByb3BlcnR5IGlzIGVuYWJsZWQgJiYgbm90IGVkaXRhYmxlID0+IFJlYWRPbmx5XG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBlbmFibGVkICYmIGVkaXRhYmxlID0+IEVkaXRhYmxlXG5cdC8vIElmIHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQgdW5pdCwgYW5kIGl0IGhhcyBhIGZpZWxkIGNvbnRyb2wgYWxzbyB1c2UgY29uc2lkZXIgdGhlIGZvbGxvd2luZ1xuXHQvLyBpZiB0aGUgdW5pdCBmaWVsZCBjb250cm9sIGlzIHJlYWRvbmx5IC0+IEVkaXRhYmxlUmVhZE9ubHlcblx0Ly8gb3RoZXJ3aXNlIC0+IEVkaXRhYmxlXG5cdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IGdldEVkaXRhYmxlRXhwcmVzc2lvbkFzT2JqZWN0KHByb3BlcnR5UGF0aCwgZGF0YUZpZWxkQ29udmVydGVkLCBkYXRhTW9kZWxPYmplY3RQYXRoLCBpc0VkaXRhYmxlKTtcblxuXHRjb25zdCBlbmFibGVkRXhwcmVzc2lvbiA9IGdldEVuYWJsZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGRDb252ZXJ0ZWQsIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBhc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KHByb3BlcnR5KTtcblx0Y29uc3QgdW5pdFByb3BlcnR5ID0gYXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdGxldCByZXN1bHRFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGNvbnN0YW50KFwiRWRpdGFibGVcIik7XG5cdGlmICh1bml0UHJvcGVydHkpIHtcblx0XHRjb25zdCBpc1VuaXRSZWFkT25seSA9IGlzUmVhZE9ubHlFeHByZXNzaW9uKHVuaXRQcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0XHRyZXN1bHRFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoaXNVbml0UmVhZE9ubHksIGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSwgYW5kKGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSksIG5vdChVSS5Jc1RyYW5zaWVudEJpbmRpbmcpKSwgbWVhc3VyZVJlYWRPbmx5KSxcblx0XHRcdGlmRWxzZSghaXNDb25zdGFudChpc1VuaXRSZWFkT25seSkgJiYgaXNVbml0UmVhZE9ubHksIFwiRWRpdGFibGVSZWFkT25seVwiLCBcIkVkaXRhYmxlRGlzcGxheVwiKSxcblx0XHRcdFwiRWRpdGFibGVcIlxuXHRcdCk7XG5cdH1cblx0Y29uc3QgcmVhZE9ubHlFeHByZXNzaW9uID0gb3IoaXNSZWFkT25seUV4cHJlc3Npb24ocHJvcGVydHksIHJlbGF0aXZlUGF0aCksIGlzUmVhZE9ubHlFeHByZXNzaW9uKGRhdGFGaWVsZENvbnZlcnRlZCkpO1xuXG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBmcm9tIGEgbm9uLXVwZGF0YWJsZSBlbnRpdHkgPT4gUmVhZCBvbmx5IG1vZGUsIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgaXMgaWdub3JlZFxuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgZnJvbSBhbiB1cGRhdGFibGUgZW50aXR5ID0+IHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgZXhwcmVzc2lvblxuXHRjb25zdCBlZGl0TW9kZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0ZW5hYmxlZEV4cHJlc3Npb24sXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdFx0cmVzdWx0RXhwcmVzc2lvbixcblx0XHRcdGlmRWxzZShhbmQoIWlzQ29uc3RhbnQocmVhZE9ubHlFeHByZXNzaW9uKSAmJiByZWFkT25seUV4cHJlc3Npb24sIGlzRWRpdGFibGUpLCBcIlJlYWRPbmx5XCIsIFwiRGlzcGxheVwiKVxuXHRcdCksXG5cdFx0aWZFbHNlKGlzRWRpdGFibGUsIFwiRGlzYWJsZWRcIiwgXCJEaXNwbGF5XCIpXG5cdCk7XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBlZGl0TW9kZUV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGVkaXRNb2RlRXhwcmVzc2lvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRjb25zdCBjdXJyZW5jeSA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0Y29uc3QgbWVhc3VyZSA9IGN1cnJlbmN5ID8gY3VycmVuY3kgOiBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0aWYgKG1lYXN1cmUpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ob3IoaXNUcnV0aHkoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG1lYXN1cmUpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KSwgbm90KFVJLklzVG90YWwpKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRydWUpKTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGlmVW5pdEVkaXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdHNFZGl0YWJsZVZhbHVlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyxcblx0c05vbkVkaXRhYmxlVmFsdWU6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc05vbkVkaXRhYmxlVmFsdWUpO1xuXHR9XG5cdGNvbnN0IGlzVW5pdFJlYWRPbmx5ID0gaXNSZWFkT25seUV4cHJlc3Npb24odW5pdFByb3BlcnR5KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKFxuXHRcdG9yKCFpc0NvbnN0YW50KGlzVW5pdFJlYWRPbmx5KSwgbm90KGlzVW5pdFJlYWRPbmx5KSksXG5cdFx0bm90KGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSksXG5cdFx0bm90KGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSkpXG5cdCk7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZWRpdGFibGVFeHByZXNzaW9uLCBzRWRpdGFibGVWYWx1ZSwgc05vbkVkaXRhYmxlVmFsdWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZERpc3BsYXkgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0c1RhcmdldERpc3BsYXlNb2RlOiBzdHJpbmcsXG5cdG9Db21wdXRlZEVkaXRNb2RlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBvUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblxuXHRyZXR1cm4gaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSlcblx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKHNUYXJnZXREaXNwbGF5TW9kZSlcblx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJFZGl0YWJsZVwiKSwgXCJWYWx1ZVwiLCBzVGFyZ2V0RGlzcGxheU1vZGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlQ29uZmlnID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBkYXRhVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcblx0Y29uc3Qgb1RhcmdldE1hcHBpbmcgPSBFRE1fVFlQRV9NQVBQSU5HWyhvUHJvcGVydHkgYXMgUHJvcGVydHkpPy50eXBlXSB8fCAoZGF0YVR5cGUgPyBFRE1fVFlQRV9NQVBQSU5HW2RhdGFUeXBlXSA6IHVuZGVmaW5lZCk7XG5cdGNvbnN0IHByb3BlcnR5VHlwZUNvbmZpZzogY29uZmlnVHlwZSA9IHtcblx0XHR0eXBlOiBvVGFyZ2V0TWFwcGluZy50eXBlLFxuXHRcdGNvbnN0cmFpbnRzOiB7fSxcblx0XHRmb3JtYXRPcHRpb25zOiB7fVxuXHR9O1xuXHRpZiAoaXNQcm9wZXJ0eShvUHJvcGVydHkpKSB7XG5cdFx0cHJvcGVydHlUeXBlQ29uZmlnLmNvbnN0cmFpbnRzID0ge1xuXHRcdFx0c2NhbGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kU2NhbGUgPyBvUHJvcGVydHkuc2NhbGUgOiB1bmRlZmluZWQsXG5cdFx0XHRwcmVjaXNpb246IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kUHJlY2lzaW9uID8gb1Byb3BlcnR5LnByZWNpc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heExlbmd0aDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRNYXhMZW5ndGggPyBvUHJvcGVydHkubWF4TGVuZ3RoIDogdW5kZWZpbmVkLFxuXHRcdFx0bnVsbGFibGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kTnVsbGFibGUgPyBvUHJvcGVydHkubnVsbGFibGUgOiB1bmRlZmluZWQsXG5cdFx0XHRtaW5pbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRtYXhpbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRpc0RpZ2l0U2VxdWVuY2U6XG5cdFx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZy50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiICYmXG5cdFx0XHRcdG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiXSAmJlxuXHRcdFx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNEaWdpdFNlcXVlbmNlXG5cdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRWNDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRWNCA/IHRydWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHR9XG5cdHByb3BlcnR5VHlwZUNvbmZpZy5mb3JtYXRPcHRpb25zID0ge1xuXHRcdHBhcnNlQXNTdHJpbmc6XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnRcIikgPT09IDAgfHxcblx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZz8udHlwZT8uaW5kZXhPZihcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiKSA9PT0gMFxuXHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdGVtcHR5U3RyaW5nOlxuXHRcdFx0cHJvcGVydHlUeXBlQ29uZmlnPy50eXBlPy5pbmRleE9mKFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50XCIpID09PSAwIHx8XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIikgPT09IDBcblx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdHBhcnNlS2VlcHNFbXB0eVN0cmluZzogcHJvcGVydHlUeXBlQ29uZmlnLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCIgPyB0cnVlIDogdW5kZWZpbmVkXG5cdH07XG5cdHJldHVybiBwcm9wZXJ0eVR5cGVDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGlnbm9yZVVuaXRDb25zdHJhaW50PzogYm9vbGVhbixcblx0Zm9ybWF0T3B0aW9ucz86IGFueVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiKSB7XG5cdFx0aWYgKGZvcm1hdE9wdGlvbnM/LnNob3dNZWFzdXJlID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdFx0fVxuXHRcdHJldHVybiBmb3JtYXRSZXN1bHQoW3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aFBlcmNlbnRhZ2UpO1xuXHR9XG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gdW5pdCA/IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiIDogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiO1xuXHR1bml0ID0gdW5pdCA/IHVuaXQgOiAob1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IGFzIGFueSk7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh1bml0IGFzIGFueSkuJHRhcmdldFxuXHRcdD8gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihcblx0XHRcdFx0KHVuaXQgYXMgYW55KS4kdGFyZ2V0LFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odW5pdCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGlmICh1bml0Py50b1N0cmluZygpID09PSBcIiVcIikge1xuXHRcdHJldHVybiBjb25zdGFudChcIiVcIik7XG5cdH1cblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cblx0Y29uc3QgY29tcGxleFR5cGUgPSB1bml0ID8gXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIgOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IChvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgYXMgYW55KTtcblx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uID0gKHVuaXQgYXMgYW55KS4kdGFyZ2V0XG5cdFx0PyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKFxuXHRcdFx0XHQodW5pdCBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCAgKVxuXHRcdDogKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIHRydWUpO1xuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCB7XG5cdFx0cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlLFxuXHRcdGVtcHR5U3RyaW5nOiBcIlwiLFxuXHRcdHNob3dOdW1iZXI6IGZhbHNlXG5cdH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRpbWV6b25lID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0aWdub3JlVW5pdENvbnN0cmFpbnQgPSBmYWxzZSxcblx0aGlkZVRpbWV6b25lRm9yRW1wdHlWYWx1ZXMgPSBmYWxzZSxcblx0ZGF0ZUZvcm1hdE9wdGlvbnM/OiBkYXRlRm9ybWF0T3B0aW9uc1xuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGNvbnN0IHRpbWV6b25lID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gXCJzYXAuZmUuY29yZS50eXBlLkRhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXRcblx0XHQ/IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24oXG5cdFx0XHRcdCh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih0aW1lem9uZSwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRpbWV6b25lLCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdGxldCBmb3JtYXRPcHRpb25zID0ge307XG5cdGlmIChoaWRlVGltZXpvbmVGb3JFbXB0eVZhbHVlcykge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlczogZmFsc2Vcblx0XHR9O1xuXHR9XG5cblx0aWYgKGRhdGVGb3JtYXRPcHRpb25zPy5zaG93VGltZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWU6IGRhdGVGb3JtYXRPcHRpb25zLnNob3dUaW1lID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHRydWUgfSB9O1xuXHR9XG5cdGlmIChkYXRlRm9ybWF0T3B0aW9ucz8uc2hvd0RhdGUpIHtcblx0XHRmb3JtYXRPcHRpb25zID0geyAuLi5mb3JtYXRPcHRpb25zLCAuLi57IHNob3dEYXRlOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93RGF0ZSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB0cnVlIH0gfTtcblx0fVxuXHRpZiAoZGF0ZUZvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWV6b25lOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93VGltZXpvbmUgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdHJ1ZSB9IH07XG5cdH1cblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGlnbm1lbnRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvQ29tcHV0ZWRFZGl0TW9kZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdHNBbGlnbkRpc3BsYXk6IHN0cmluZyA9IFwiQmVnaW5cIixcblx0c0FsaWduRWRpdDogc3RyaW5nID0gXCJCZWdpblwiXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJEaXNwbGF5XCIpLCBzQWxpZ25EaXNwbGF5LCBzQWxpZ25FZGl0KSk7XG59O1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGNvbnZlcnRlckNvbnRleHQgZnJvbSB0aGUgbWV0YW1vZGVsIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBvcmlnaW5hbCBtZXRhbW9kZWwgY29udGV4dFxuICogQHBhcmFtIG9JbnRlcmZhY2UgVGhlIGN1cnJlbnQgdGVtcGxhdGluZyBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgQ29udmVydGVyQ29udGV4dCByZXByZXNlbnRpbmcgdGhhdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnZlcnRlckNvbnRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IG9iamVjdCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gY29udmVydE1ldGFNb2RlbENvbnRleHQob0ludGVyZmFjZS5jb250ZXh0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn07XG5nZXRDb252ZXJ0ZXJDb250ZXh0LnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRhdGEgbW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBpbnZvbHZlZCBmcm9tIHRoZSBtZXRhbW9kZWwgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIG9yaWdpbmFsIE9EYXRhTWV0YU1vZGVsIGNvbnRleHRcbiAqIEBwYXJhbSBvSW50ZXJmYWNlIFRoZSBjdXJyZW50IHRlbXBsYXRpbmcgY29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZW50aXR5c2V0cyBhbmQgbmF2cHJvcGVydGllcyB0aGF0IGFyZSBpbnZvbHZlZCB0byBnZXQgdG8gYSBzcGVjaWZpYyBvYmplY3QgaW4gdGhlIG1ldGFtb2RlbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9JbnRlcmZhY2UuY29udGV4dCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aC5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHJlZmVyZW5jZWQgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGggVGhlIGRhdGEgbW9kZWwgcGF0aCB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvblxuICovXG5leHBvcnQgY29uc3QgaXNNdWx0aVZhbHVlRmllbGQgPSBmdW5jdGlvbiAob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBib29sZWFuIHtcblx0aWYgKG9EYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRjb25zdCBoYXNPbmVUb01hbnlOYXZpZ2F0aW9uID1cblx0XHRcdG9EYXRhTW9kZWxQYXRoPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoKG9OYXYpID0+IHtcblx0XHRcdFx0aWYgKG9OYXYuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgb05hdi5pc0NvbGxlY3Rpb24pIHtcblx0XHRcdFx0XHRpZiAob0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvL3dlIGNoZWNrIHRoZSBvbmUgdG8gbWFueSBuYXYgaXMgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgY29udGV4dFxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0b0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoXG5cdFx0XHRcdFx0XHRcdFx0KG9Db250ZXh0TmF2KSA9PiBvQ29udGV4dE5hdi5uYW1lID09PSBvTmF2Lm5hbWVcblx0XHRcdFx0XHRcdFx0KSA9PT0gLTFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pID4gLTE7XG5cdFx0aWYgKGhhc09uZVRvTWFueU5hdmlnYXRpb24pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkFzT2JqZWN0ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGRDb252ZXJ0ZWQ/OiBhbnksXG5cdGZvcmNlRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldFJlcXVpcmVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCBmb3JjZUVkaXRNb2RlLCB0cnVlKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRmb3JjZUVkaXRNb2RlOiBib29sZWFuID0gZmFsc2UsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRvUmVxdWlyZWRQcm9wZXJ0aWVzOiBhbnkgPSB7fSxcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMgPSBvUmVxdWlyZWRQcm9wZXJ0aWVzLnJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnM7XG5cdGNvbnN0IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zID0gb1JlcXVpcmVkUHJvcGVydGllcy5yZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zO1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQoZmFsc2UpKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkUmVxdWlyZWRFeHByZXNzaW9uID0gaXNSZXF1aXJlZEV4cHJlc3Npb24ob0RhdGFGaWVsZENvbnZlcnRlZCk7XG5cdH1cblx0bGV0IHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQoZmFsc2UpO1xuXHRsZXQgcmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBjb25zdGFudChmYWxzZSk7XG5cblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHQvLyBFbmFibGVtZW50IGRlcGVuZHMgb24gdGhlIGZpZWxkIGNvbnRyb2wgZXhwcmVzc2lvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBzdGF0aWNhbGx5IGluIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpIC0+IG5vdCBlbmFibGVkXG5cdGNvbnN0IHJlcXVpcmVkRXhwcmVzc2lvbiA9IGlzUmVxdWlyZWRFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0Y29uc3QgZWRpdE1vZGUgPSBmb3JjZUVkaXRNb2RlIHx8IFVJLklzRWRpdGFibGU7XG5cdGlmIChhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucz8uaW5jbHVkZXMoKG9Qcm9wZXJ0eVBhdGggYXMgYW55KS5uYW1lKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbiA9IGFuZChjb25zdGFudCh0cnVlKSwgVUkuSXNDcmVhdGVNb2RlKTtcblx0fVxuXHRpZiAoYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnM/LmluY2x1ZGVzKChvUHJvcGVydHlQYXRoIGFzIGFueSkubmFtZSkpIHtcblx0XHRyZXF1aXJlZFByb3BlcnR5RnJvbVVwZGF0ZVJlc3RyaWN0aW9uc0V4cHJlc3Npb24gPSBhbmQoY29uc3RhbnQodHJ1ZSksIG5vdEVxdWFsKFVJLklzQ3JlYXRlTW9kZSwgdHJ1ZSkpO1xuXHR9XG5cdGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBvcihcblx0XHRhbmQob3IocmVxdWlyZWRFeHByZXNzaW9uLCBkYXRhRmllbGRSZXF1aXJlZEV4cHJlc3Npb24pLCBlZGl0TW9kZSksXG5cdFx0cmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uLFxuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tVXBkYXRlUmVzdHJpY3Rpb25zRXhwcmVzc2lvblxuXHQpO1xuXHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIHJldHVybkV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCA9IGZ1bmN0aW9uIChcblx0ZGF0YUZpZWxkT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBkYXRhID0gZGF0YUZpZWxkT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5EYXRhO1xuXHRjb25zdCBrZXlzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXMoZGF0YSk7XG5cdGNvbnN0IGRhdGFGaWVsZHMgPSBbXTtcblx0bGV0IHByb3BlcnR5UGF0aDtcblx0Y29uc3QgaXNSZXF1aXJlZEV4cHJlc3Npb25zOiAoQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pW10gfCB1bmRlZmluZWQgPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdGlmIChkYXRhW2tleV1bXCIkVHlwZVwiXSAmJiBkYXRhW2tleV1bXCIkVHlwZVwiXS5pbmRleE9mKFwiRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdGRhdGFGaWVsZHMucHVzaChkYXRhW2tleV0pO1xuXHRcdH1cblx0fVxuXHRmb3IgKGNvbnN0IGRhdGFGaWVsZCBvZiBkYXRhRmllbGRzKSB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YUZpZWxkLlZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoID0gZGF0YUZpZWxkLlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhRmllbGQuVGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aCA9IGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHR9XG5cdFx0aXNSZXF1aXJlZEV4cHJlc3Npb25zLnB1c2goZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGQsIGZhbHNlKSk7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG9yKC4uLihpc1JlcXVpcmVkRXhwcmVzc2lvbnMgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10pKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlGTyxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsb0JBQXlDLEVBQWU7SUFDL0YsT0FBT0Msb0JBQW9CLENBQUNGLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNFLFlBQVksRUFBRUYsb0JBQW9CLENBQUM7RUFDcEcsQ0FBQztFQUFDO0VBQ0ssTUFBTUcsNkJBQTZCLEdBQUcsVUFDNUNDLGFBQXVDLEVBSUg7SUFBQSxJQUhwQ0MsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNNLFVBQTZDLHVFQUFHQyxFQUFFLENBQUNDLFVBQVU7SUFFN0QsT0FBT0MscUJBQXFCLENBQzNCTCxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkwsb0JBQW9CLEVBQ3BCLElBQUksRUFDSk0sVUFBVSxDQUNWO0VBQ0YsQ0FBQztFQUFDO0VBUUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNRyxxQkFBcUIsR0FBRyxVQUNwQ0wsYUFBdUMsRUFLZ0M7SUFBQSxJQUp2RUMsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNVLFNBQWtCLHVFQUFHLEtBQUs7SUFBQSxJQUMxQkosVUFBNkMsdUVBQUdDLEVBQUUsQ0FBQ0MsVUFBVTtJQUU3RCxJQUFJLENBQUNKLGFBQWEsSUFBSSxPQUFPQSxhQUFhLEtBQUssUUFBUSxF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
498
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREaXNwbGF5TW9kZSIsIm9EYXRhTW9kZWxPYmplY3RQYXRoIiwiRGlzcGxheU1vZGVGb3JtYXR0ZXIiLCJ0YXJnZXRPYmplY3QiLCJnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YUZpZWxkQ29udmVydGVkIiwiaXNFZGl0YWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsImdldEVkaXRhYmxlRXhwcmVzc2lvbiIsImJBc09iamVjdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJpZkVsc2UiLCJpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwicmVsYXRpdmVQYXRoIiwiZ2V0UmVsYXRpdmVQYXRocyIsImlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24iLCJpc1BhdGhVcGRhdGFibGUiLCJwcm9wZXJ0eVBhdGgiLCJwYXRoVmlzaXRvciIsInBhdGgiLCJuYXZpZ2F0aW9uUGF0aHMiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImNvbnZlcnRlZFR5cGVzIiwiZWRpdGFibGVFeHByZXNzaW9uIiwib3IiLCJub3QiLCJpc0NvbXB1dGVkIiwiaXNLZXkiLCJpc0ltbXV0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImFuZCIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZvcm1hdHRlciIsIm9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYWN0aXZpdHlFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJrZXlzIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXNFeHByZXNzaW9ucyIsImZvckVhY2giLCJrZXkiLCJrZXlFeHByZXNzaW9uIiwibmFtZSIsInB1c2giLCJmb3JtYXRSZXN1bHQiLCJnZXRFbmFibGVkRXhwcmVzc2lvbkFzT2JqZWN0IiwiZ2V0RW5hYmxlZEV4cHJlc3Npb24iLCJkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbiIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiZW5hYmxlZEV4cHJlc3Npb24iLCJnZXRFZGl0TW9kZSIsIm1lYXN1cmVSZWFkT25seSIsImFzT2JqZWN0IiwiZGF0YUZpZWxkQ29udmVydGVkIiwiJFR5cGUiLCJwcm9wZXJ0eSIsImFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwicmVzdWx0RXhwcmVzc2lvbiIsImlzVW5pdFJlYWRPbmx5IiwiaXNSZWFkT25seUV4cHJlc3Npb24iLCJpc0NvbnN0YW50IiwicmVhZE9ubHlFeHByZXNzaW9uIiwiZWRpdE1vZGVFeHByZXNzaW9uIiwiaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQiLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsImN1cnJlbmN5IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwibWVhc3VyZSIsIlVuaXQiLCJpc1RydXRoeSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIklzVG90YWwiLCJpZlVuaXRFZGl0YWJsZSIsInNFZGl0YWJsZVZhbHVlIiwic05vbkVkaXRhYmxlVmFsdWUiLCJnZXRGaWVsZERpc3BsYXkiLCJzVGFyZ2V0RGlzcGxheU1vZGUiLCJvQ29tcHV0ZWRFZGl0TW9kZSIsImhhc1ZhbHVlSGVscCIsImVxdWFsIiwiZ2V0VHlwZUNvbmZpZyIsImRhdGFUeXBlIiwib1RhcmdldE1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwidHlwZSIsInVuZGVmaW5lZCIsInByb3BlcnR5VHlwZUNvbmZpZyIsImNvbnN0cmFpbnRzIiwiZm9ybWF0T3B0aW9ucyIsImlzUHJvcGVydHkiLCJzY2FsZSIsIiRTY2FsZSIsInByZWNpc2lvbiIsIiRQcmVjaXNpb24iLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJtaW5pbXVtIiwiaXNOYU4iLCJWYWxpZGF0aW9uIiwiTWluaW11bSIsIm1heGltdW0iLCJNYXhpbXVtIiwiaXNEaWdpdFNlcXVlbmNlIiwiQ29tbW9uIiwiSXNEaWdpdFNlcXVlbmNlIiwiVjQiLCIkVjQiLCJwYXJzZUFzU3RyaW5nIiwiaW5kZXhPZiIsImVtcHR5U3RyaW5nIiwicGFyc2VLZWVwc0VtcHR5U3RyaW5nIiwiZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiaWdub3JlVW5pdENvbnN0cmFpbnQiLCJ1bml0IiwicmVsYXRpdmVMb2NhdGlvbiIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0b1N0cmluZyIsInNob3dNZWFzdXJlIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aFBlcmNlbnRhZ2UiLCJjb21wbGV4VHlwZSIsInVuaXRCaW5kaW5nRXhwcmVzc2lvbiIsImFkZFR5cGVJbmZvcm1hdGlvbiIsImdldEJpbmRpbmdGb3JVbml0T3JDdXJyZW5jeSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJzaG93TnVtYmVyIiwiZ2V0QmluZGluZ1dpdGhUaW1lem9uZSIsImhpZGVUaW1lem9uZUZvckVtcHR5VmFsdWVzIiwiZGF0ZUZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsIlRpbWV6b25lIiwic2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZSIsInNob3dEYXRlIiwic2hvd1RpbWV6b25lIiwiZ2V0QWxpZ25tZW50RXhwcmVzc2lvbiIsInNBbGlnbkRpc3BsYXkiLCJzQWxpZ25FZGl0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIm9Db250ZXh0Iiwib0ludGVyZmFjZSIsImNvbnRleHQiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInJlcXVpcmVzSUNvbnRleHQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaXNNdWx0aVZhbHVlRmllbGQiLCJvRGF0YU1vZGVsUGF0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibGVuZ3RoIiwiaGFzT25lVG9NYW55TmF2aWdhdGlvbiIsImZpbmRJbmRleCIsIm9OYXYiLCJfdHlwZSIsImlzQ29sbGVjdGlvbiIsImNvbnRleHRMb2NhdGlvbiIsIm9Db250ZXh0TmF2IiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QiLCJmb3JjZUVkaXRNb2RlIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwib1JlcXVpcmVkUHJvcGVydGllcyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyIsImRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbiIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiZWRpdE1vZGUiLCJpbmNsdWRlcyIsIklzQ3JlYXRlTW9kZSIsIm5vdEVxdWFsIiwicmV0dXJuRXhwcmVzc2lvbiIsImdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCIsImRhdGFGaWVsZE9iamVjdFBhdGgiLCJkYXRhIiwiRGF0YSIsIk9iamVjdCIsImRhdGFGaWVsZHMiLCJpc1JlcXVpcmVkRXhwcmVzc2lvbnMiLCJkYXRhRmllbGQiLCJWYWx1ZSIsIlRhcmdldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUlGb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBzaW5nbGV0b25QYXRoVmlzaXRvciwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0LCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZGRUeXBlSW5mb3JtYXRpb24sXG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRFRE1fVFlQRV9NQVBQSU5HLFxuXHRlcXVhbCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0aXNUcnV0aHksXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoVXBkYXRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuXHRpc0Rpc2FibGVkRXhwcmVzc2lvbixcblx0aXNOb25FZGl0YWJsZUV4cHJlc3Npb24sXG5cdGlzUmVhZE9ubHlFeHByZXNzaW9uLFxuXHRpc1JlcXVpcmVkRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGlzQ29tcHV0ZWQsXG5cdGlzSW1tdXRhYmxlLFxuXHRpc0tleSxcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2QgdXNlZCBieSB0aGUgY29udmVydGVyIHRvIHVzZSB0aGVtIGluIHRoZSB0ZW1wbGF0aW5nIHRocm91Z2ggdGhlIFVJRm9ybWF0dGVycy5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gRGlzcGxheU1vZGVGb3JtYXR0ZXIuRGlzcGxheU1vZGU7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcbmV4cG9ydCB0eXBlIE1ldGFNb2RlbENvbnRleHQgPSB7XG5cdCRraW5kOiBzdHJpbmc7XG5cdCRUeXBlOiBzdHJpbmc7XG5cdCROdWxsYWJsZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSByZXR1cm5lZCBieSB0aGUgT0RhdGFNZXRhTW9kZWwgd2hlbiB1c2luZyB0aGUgQEAgb3BlcmF0b3IgaW4gWE1MIHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlID0ge1xuXHRjb250ZXh0OiBDb250ZXh0O1xuXHRhcmd1bWVudHM/OiBhbnlbXTtcblx0JCR2YWx1ZUFzUHJvbWlzZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlQ29uc3RyYWludHMgPSB7XG5cdHNjYWxlPzogbnVtYmVyO1xuXHRwcmVjaXNpb24/OiBudW1iZXI7XG5cdG1heExlbmd0aD86IG51bWJlcjtcblx0bnVsbGFibGU/OiBib29sZWFuO1xuXHRtaW5pbXVtPzogc3RyaW5nO1xuXHRtYXhpbXVtPzogc3RyaW5nO1xuXHRpc0RpZ2l0U2VxdWVuY2U/OiBib29sZWFuO1xuXHRWND86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlZm9ybWF0T3B0aW9ucyA9IHtcblx0cGFyc2VBc1N0cmluZz86IGJvb2xlYW47XG5cdGVtcHR5U3RyaW5nPzogc3RyaW5nO1xuXHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgY29uZmlnVHlwZSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRjb25zdHJhaW50czogY29uZmlnVHlwZUNvbnN0cmFpbnRzO1xuXHRmb3JtYXRPcHRpb25zOiBjb25maWdUeXBlZm9ybWF0T3B0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERpc3BsYXlNb2RlIHtcblx0cmV0dXJuIERpc3BsYXlNb2RlRm9ybWF0dGVyLmdldERpc3BsYXlNb2RlKG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgb0RhdGFNb2RlbE9iamVjdFBhdGgpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkOiBhbnkgPSBudWxsLFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldEVkaXRhYmxlRXhwcmVzc2lvbihcblx0XHRvUHJvcGVydHlQYXRoLFxuXHRcdG9EYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0b0RhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0dHJ1ZSxcblx0XHRpc0VkaXRhYmxlXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IHR5cGUgZGF0ZUZvcm1hdE9wdGlvbnMgPSB7XG5cdHNob3dEYXRlOiBzdHJpbmc7XG5cdHNob3dUaW1lOiBzdHJpbmc7XG5cdHNob3dUaW1lem9uZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGV4cHJlc3Npb24gdG8gZ2VuZXJhdGUgYW4gXCJlZGl0YWJsZVwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIG9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBwYXRoIHRvIHRoaXMgcHJvcGVydHkgb2JqZWN0XG4gKiBAcGFyYW0gYkFzT2JqZWN0IFdoZXRoZXIgb3Igbm90IHRoaXMgc2hvdWxkIGJlIHJldHVybmVkIGFzIGFuIG9iamVjdCBvciBhIGJpbmRpbmcgc3RyaW5nXG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvcGVydHkgaXMgZWRpdGFibGUgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0b0RhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpc0VkaXRhYmxlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBVSS5Jc0VkaXRhYmxlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihmYWxzZSk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZEVkaXRhYmxlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgaXNFZGl0YWJsZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMob0RhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBFZGl0YWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBmaWVsZCBjb250cm9sIGV4cHJlc3Npb25cblx0Ly8gSWYgdGhlIEZpZWxkIGNvbnRyb2wgaXMgc3RhdGljYWxseSBpbiBSZWFkT25seSBvciBJbmFwcGxpY2FibGUgKGRpc2FibGVkKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEga2V5IC0+IG5vdCBlZGl0YWJsZSBleGNlcHQgaW4gY3JlYXRpb24gaWYgbm90IGNvbXB1dGVkXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBjb21wdXRlZCAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1cGRhdGFibGUgLT4gbm90IGVkaXRhYmxlXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBpbW11dGFibGUgLT4gbm90IGVkaXRhYmxlIGV4Y2VwdCBpbiBjcmVhdGlvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBhIHBhdGggcmVzb2x2aW5nIHRvIFJlYWRPbmx5IG9yIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpICg8PSAxKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gRWxzZSwgdG8gYmUgZWRpdGFibGUgeW91IG5lZWRcblx0Ly8gaW1tdXRhYmxlIGFuZCBrZXkgd2hpbGUgaW4gdGhlIGNyZWF0aW9uIHJvd1xuXHQvLyB1aS9pc0VkaXRhYmxlXG5cdGNvbnN0IGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBpc1BhdGhVcGRhdGFibGUob0RhdGFNb2RlbE9iamVjdFBhdGgsIHtcblx0XHRwcm9wZXJ0eVBhdGg6IG9Qcm9wZXJ0eVBhdGgsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBvRGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcywgbmF2aWdhdGlvblBhdGhzKVxuXHR9KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdG9yKFxuXHRcdFx0bm90KGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pLFxuXHRcdFx0aXNDb21wdXRlZChvUHJvcGVydHkpLFxuXHRcdFx0aXNLZXkob1Byb3BlcnR5KSxcblx0XHRcdGlzSW1tdXRhYmxlKG9Qcm9wZXJ0eSksXG5cdFx0XHRpc05vbkVkaXRhYmxlRXhwcmVzc2lvbihvUHJvcGVydHksIHJlbGF0aXZlUGF0aClcblx0XHQpLFxuXHRcdGlmRWxzZShvcihpc0NvbXB1dGVkKG9Qcm9wZXJ0eSksIGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKSksIGZhbHNlLCBVSS5Jc1RyYW5zaWVudEJpbmRpbmcpLFxuXHRcdGlzRWRpdGFibGVcblx0KTtcblx0aWYgKGJBc09iamVjdCkge1xuXHRcdHJldHVybiBhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9ybWF0dGVyOiBhbnlcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3Qgb2JqZWN0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGFjdGl2aXR5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGAvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzJHtvYmplY3RQYXRofWAsIFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IGtleXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlPy5rZXlzO1xuXHRjb25zdCBrZXlzRXhwcmVzc2lvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+W10gPSBbXTtcblx0a2V5cz8uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0Y29uc3Qga2V5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGtleS5uYW1lKTtcblx0XHRrZXlzRXhwcmVzc2lvbnMucHVzaChrZXlFeHByZXNzaW9uKTtcblx0fSk7XG5cdHJldHVybiBmb3JtYXRSZXN1bHQoW2FjdGl2aXR5RXhwcmVzc2lvbiwgLi4ua2V5c0V4cHJlc3Npb25zXSwgZm9ybWF0dGVyKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RW5hYmxlZEV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBnZXRFbmFibGVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCB0cnVlLCBvRGF0YU1vZGVsT2JqZWN0UGF0aCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZW5hYmxlZFwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIE9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIGJBc09iamVjdCBXaGV0aGVyIG9yIG5vdCB0aGlzIHNob3VsZCBiZSByZXR1cm5lZCBhcyBhbiBvYmplY3Qgb3IgYSBiaW5kaW5nIHN0cmluZ1xuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGRldGVybWluZSBpZiBhIHByb3BlcnR5IGlzIGVuYWJsZWQgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFbmFibGVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRiQXNPYmplY3QgPSBmYWxzZSxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0cnVlKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAob0RhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRyZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKG9EYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRsZXQgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9IGNvbnN0YW50KHRydWUpO1xuXHRpZiAob0RhdGFGaWVsZENvbnZlcnRlZCAhPT0gbnVsbCkge1xuXHRcdGRhdGFGaWVsZEVuYWJsZWRFeHByZXNzaW9uID0gaWZFbHNlKGlzRGlzYWJsZWRFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdC8vIEVuYWJsZW1lbnQgZGVwZW5kcyBvbiB0aGUgZmllbGQgY29udHJvbCBleHByZXNzaW9uXG5cdC8vIElmIHRoZSBGaWVsZCBjb250cm9sIGlzIHN0YXRpY2FsbHkgaW4gSW5hcHBsaWNhYmxlIChkaXNhYmxlZCkgLT4gbm90IGVuYWJsZWRcblx0Y29uc3QgZW5hYmxlZEV4cHJlc3Npb24gPSBpZkVsc2UoaXNEaXNhYmxlZEV4cHJlc3Npb24ob1Byb3BlcnR5LCByZWxhdGl2ZVBhdGgpLCBmYWxzZSwgdHJ1ZSk7XG5cdGlmIChiQXNPYmplY3QpIHtcblx0XHRyZXR1cm4gYW5kKGVuYWJsZWRFeHByZXNzaW9uLCBkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChlbmFibGVkRXhwcmVzc2lvbiwgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb24pKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZWRpdE1vZGVcIiBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgbGlzdCBvZiBkYXRhIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgaW52b2x2ZWQgdG8gcmVhY2ggdGhhdCBwcm9wZXJ0eVxuICogQHBhcmFtIG1lYXN1cmVSZWFkT25seSBXaGV0aGVyIHdlIHNob3VsZCBzZXQgVW9NIC8gY3VycmVuY3kgZmllbGQgbW9kZSB0byByZWFkIG9ubHlcbiAqIEBwYXJhbSBhc09iamVjdCBXaGV0aGVyIHdlIHNob3VsZCByZXR1cm4gdGhpcyBhcyBhbiBleHByZXNzaW9uIG9yIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0gZGF0YUZpZWxkQ29udmVydGVkIFRoZSBkYXRhRmllbGQgb2JqZWN0XG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBwcm9wZXJ0eSBlZGl0IG1vZGUsIGNvbXBsaWFudCB3aXRoIHRoZSBNREMgRmllbGQgZGVmaW5pdGlvbiBvZiBlZGl0TW9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRNb2RlID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0bWVhc3VyZVJlYWRPbmx5OiBib29sZWFuID0gZmFsc2UsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2UsXG5cdGRhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmICghcHJvcGVydHlQYXRoIHx8IHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIgfHwgZGF0YUZpZWxkQ29udmVydGVkPy4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0cmV0dXJuIFwiRGlzcGxheVwiO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgJiYgcHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChwcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGVuYWJsZWQgPT4gRGlzYWJsZWRcblx0Ly8gaWYgdGhlIHByb3BlcnR5IGlzIGVuYWJsZWQgJiYgbm90IGVkaXRhYmxlID0+IFJlYWRPbmx5XG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBlbmFibGVkICYmIGVkaXRhYmxlID0+IEVkaXRhYmxlXG5cdC8vIElmIHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQgdW5pdCwgYW5kIGl0IGhhcyBhIGZpZWxkIGNvbnRyb2wgYWxzbyB1c2UgY29uc2lkZXIgdGhlIGZvbGxvd2luZ1xuXHQvLyBpZiB0aGUgdW5pdCBmaWVsZCBjb250cm9sIGlzIHJlYWRvbmx5IC0+IEVkaXRhYmxlUmVhZE9ubHlcblx0Ly8gb3RoZXJ3aXNlIC0+IEVkaXRhYmxlXG5cdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IGdldEVkaXRhYmxlRXhwcmVzc2lvbkFzT2JqZWN0KHByb3BlcnR5UGF0aCwgZGF0YUZpZWxkQ29udmVydGVkLCBkYXRhTW9kZWxPYmplY3RQYXRoLCBpc0VkaXRhYmxlKTtcblxuXHRjb25zdCBlbmFibGVkRXhwcmVzc2lvbiA9IGdldEVuYWJsZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGRDb252ZXJ0ZWQsIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBhc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KHByb3BlcnR5KTtcblx0Y29uc3QgdW5pdFByb3BlcnR5ID0gYXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdGxldCByZXN1bHRFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGNvbnN0YW50KFwiRWRpdGFibGVcIik7XG5cdGlmICh1bml0UHJvcGVydHkpIHtcblx0XHRjb25zdCBpc1VuaXRSZWFkT25seSA9IGlzUmVhZE9ubHlFeHByZXNzaW9uKHVuaXRQcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0XHRyZXN1bHRFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoaXNVbml0UmVhZE9ubHksIGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSwgYW5kKGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSksIG5vdChVSS5Jc1RyYW5zaWVudEJpbmRpbmcpKSwgbWVhc3VyZVJlYWRPbmx5KSxcblx0XHRcdGlmRWxzZSghaXNDb25zdGFudChpc1VuaXRSZWFkT25seSkgJiYgaXNVbml0UmVhZE9ubHksIFwiRWRpdGFibGVSZWFkT25seVwiLCBcIkVkaXRhYmxlRGlzcGxheVwiKSxcblx0XHRcdFwiRWRpdGFibGVcIlxuXHRcdCk7XG5cdH1cblx0Y29uc3QgcmVhZE9ubHlFeHByZXNzaW9uID0gb3IoaXNSZWFkT25seUV4cHJlc3Npb24ocHJvcGVydHksIHJlbGF0aXZlUGF0aCksIGlzUmVhZE9ubHlFeHByZXNzaW9uKGRhdGFGaWVsZENvbnZlcnRlZCkpO1xuXG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBmcm9tIGEgbm9uLXVwZGF0YWJsZSBlbnRpdHkgPT4gUmVhZCBvbmx5IG1vZGUsIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgaXMgaWdub3JlZFxuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgZnJvbSBhbiB1cGRhdGFibGUgZW50aXR5ID0+IHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgZXhwcmVzc2lvblxuXHRjb25zdCBlZGl0TW9kZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0ZW5hYmxlZEV4cHJlc3Npb24sXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdFx0cmVzdWx0RXhwcmVzc2lvbixcblx0XHRcdGlmRWxzZShhbmQoIWlzQ29uc3RhbnQocmVhZE9ubHlFeHByZXNzaW9uKSAmJiByZWFkT25seUV4cHJlc3Npb24sIGlzRWRpdGFibGUpLCBcIlJlYWRPbmx5XCIsIFwiRGlzcGxheVwiKVxuXHRcdCksXG5cdFx0aWZFbHNlKGlzRWRpdGFibGUsIFwiRGlzYWJsZWRcIiwgXCJEaXNwbGF5XCIpXG5cdCk7XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBlZGl0TW9kZUV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGVkaXRNb2RlRXhwcmVzc2lvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRjb25zdCBjdXJyZW5jeSA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0Y29uc3QgbWVhc3VyZSA9IGN1cnJlbmN5ID8gY3VycmVuY3kgOiBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0aWYgKG1lYXN1cmUpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ob3IoaXNUcnV0aHkoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG1lYXN1cmUpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KSwgbm90KFVJLklzVG90YWwpKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRydWUpKTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGlmVW5pdEVkaXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdHNFZGl0YWJsZVZhbHVlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyxcblx0c05vbkVkaXRhYmxlVmFsdWU6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc05vbkVkaXRhYmxlVmFsdWUpO1xuXHR9XG5cdGNvbnN0IGlzVW5pdFJlYWRPbmx5ID0gaXNSZWFkT25seUV4cHJlc3Npb24odW5pdFByb3BlcnR5KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKFxuXHRcdG9yKCFpc0NvbnN0YW50KGlzVW5pdFJlYWRPbmx5KSwgbm90KGlzVW5pdFJlYWRPbmx5KSksXG5cdFx0bm90KGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSksXG5cdFx0bm90KGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSkpXG5cdCk7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZWRpdGFibGVFeHByZXNzaW9uLCBzRWRpdGFibGVWYWx1ZSwgc05vbkVkaXRhYmxlVmFsdWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZERpc3BsYXkgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0c1RhcmdldERpc3BsYXlNb2RlOiBzdHJpbmcsXG5cdG9Db21wdXRlZEVkaXRNb2RlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBvUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblxuXHRyZXR1cm4gaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSlcblx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKHNUYXJnZXREaXNwbGF5TW9kZSlcblx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJFZGl0YWJsZVwiKSwgXCJWYWx1ZVwiLCBzVGFyZ2V0RGlzcGxheU1vZGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlQ29uZmlnID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBkYXRhVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcblx0Y29uc3Qgb1RhcmdldE1hcHBpbmcgPSBFRE1fVFlQRV9NQVBQSU5HWyhvUHJvcGVydHkgYXMgUHJvcGVydHkpPy50eXBlXSB8fCAoZGF0YVR5cGUgPyBFRE1fVFlQRV9NQVBQSU5HW2RhdGFUeXBlXSA6IHVuZGVmaW5lZCk7XG5cdGNvbnN0IHByb3BlcnR5VHlwZUNvbmZpZzogY29uZmlnVHlwZSA9IHtcblx0XHR0eXBlOiBvVGFyZ2V0TWFwcGluZy50eXBlLFxuXHRcdGNvbnN0cmFpbnRzOiB7fSxcblx0XHRmb3JtYXRPcHRpb25zOiB7fVxuXHR9O1xuXHRpZiAoaXNQcm9wZXJ0eShvUHJvcGVydHkpKSB7XG5cdFx0cHJvcGVydHlUeXBlQ29uZmlnLmNvbnN0cmFpbnRzID0ge1xuXHRcdFx0c2NhbGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kU2NhbGUgPyBvUHJvcGVydHkuc2NhbGUgOiB1bmRlZmluZWQsXG5cdFx0XHRwcmVjaXNpb246IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kUHJlY2lzaW9uID8gb1Byb3BlcnR5LnByZWNpc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heExlbmd0aDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRNYXhMZW5ndGggPyBvUHJvcGVydHkubWF4TGVuZ3RoIDogdW5kZWZpbmVkLFxuXHRcdFx0bnVsbGFibGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kTnVsbGFibGUgPyBvUHJvcGVydHkubnVsbGFibGUgOiB1bmRlZmluZWQsXG5cdFx0XHRtaW5pbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRtYXhpbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRpc0RpZ2l0U2VxdWVuY2U6XG5cdFx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZy50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiICYmXG5cdFx0XHRcdG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiXSAmJlxuXHRcdFx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNEaWdpdFNlcXVlbmNlXG5cdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRWNDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRWNCA/IHRydWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHR9XG5cdHByb3BlcnR5VHlwZUNvbmZpZy5mb3JtYXRPcHRpb25zID0ge1xuXHRcdHBhcnNlQXNTdHJpbmc6XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnRcIikgPT09IDAgfHxcblx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZz8udHlwZT8uaW5kZXhPZihcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiKSA9PT0gMFxuXHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdGVtcHR5U3RyaW5nOlxuXHRcdFx0cHJvcGVydHlUeXBlQ29uZmlnPy50eXBlPy5pbmRleE9mKFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50XCIpID09PSAwIHx8XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIikgPT09IDBcblx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdHBhcnNlS2VlcHNFbXB0eVN0cmluZzogcHJvcGVydHlUeXBlQ29uZmlnLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCIgPyB0cnVlIDogdW5kZWZpbmVkXG5cdH07XG5cdHJldHVybiBwcm9wZXJ0eVR5cGVDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGlnbm9yZVVuaXRDb25zdHJhaW50PzogYm9vbGVhbixcblx0Zm9ybWF0T3B0aW9ucz86IGFueVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiKSB7XG5cdFx0aWYgKGZvcm1hdE9wdGlvbnM/LnNob3dNZWFzdXJlID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdFx0fVxuXHRcdHJldHVybiBmb3JtYXRSZXN1bHQoW3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aFBlcmNlbnRhZ2UpO1xuXHR9XG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gdW5pdCA/IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiIDogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiO1xuXHR1bml0ID0gdW5pdCA/IHVuaXQgOiAob1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IGFzIGFueSk7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh1bml0IGFzIGFueSkuJHRhcmdldFxuXHRcdD8gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihcblx0XHRcdFx0KHVuaXQgYXMgYW55KS4kdGFyZ2V0LFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odW5pdCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGlmICh1bml0Py50b1N0cmluZygpID09PSBcIiVcIikge1xuXHRcdHJldHVybiBjb25zdGFudChcIiVcIik7XG5cdH1cblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cblx0Y29uc3QgY29tcGxleFR5cGUgPSB1bml0ID8gXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIgOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IChvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgYXMgYW55KTtcblx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uID0gKHVuaXQgYXMgYW55KS4kdGFyZ2V0XG5cdFx0PyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKFxuXHRcdFx0XHQodW5pdCBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCAgKVxuXHRcdDogKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIHRydWUpO1xuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCB7XG5cdFx0cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlLFxuXHRcdGVtcHR5U3RyaW5nOiBcIlwiLFxuXHRcdHNob3dOdW1iZXI6IGZhbHNlXG5cdH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRpbWV6b25lID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0aWdub3JlVW5pdENvbnN0cmFpbnQgPSBmYWxzZSxcblx0aGlkZVRpbWV6b25lRm9yRW1wdHlWYWx1ZXMgPSBmYWxzZSxcblx0ZGF0ZUZvcm1hdE9wdGlvbnM/OiBkYXRlRm9ybWF0T3B0aW9uc1xuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGNvbnN0IHRpbWV6b25lID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gXCJzYXAuZmUuY29yZS50eXBlLkRhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXRcblx0XHQ/IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24oXG5cdFx0XHRcdCh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih0aW1lem9uZSwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRpbWV6b25lLCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdGxldCBmb3JtYXRPcHRpb25zID0ge307XG5cdGlmIChoaWRlVGltZXpvbmVGb3JFbXB0eVZhbHVlcykge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlczogZmFsc2Vcblx0XHR9O1xuXHR9XG5cblx0aWYgKGRhdGVGb3JtYXRPcHRpb25zPy5zaG93VGltZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWU6IGRhdGVGb3JtYXRPcHRpb25zLnNob3dUaW1lID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHRydWUgfSB9O1xuXHR9XG5cdGlmIChkYXRlRm9ybWF0T3B0aW9ucz8uc2hvd0RhdGUpIHtcblx0XHRmb3JtYXRPcHRpb25zID0geyAuLi5mb3JtYXRPcHRpb25zLCAuLi57IHNob3dEYXRlOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93RGF0ZSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB0cnVlIH0gfTtcblx0fVxuXHRpZiAoZGF0ZUZvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWV6b25lOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93VGltZXpvbmUgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdHJ1ZSB9IH07XG5cdH1cblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGlnbm1lbnRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvQ29tcHV0ZWRFZGl0TW9kZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdHNBbGlnbkRpc3BsYXk6IHN0cmluZyA9IFwiQmVnaW5cIixcblx0c0FsaWduRWRpdDogc3RyaW5nID0gXCJCZWdpblwiXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJEaXNwbGF5XCIpLCBzQWxpZ25EaXNwbGF5LCBzQWxpZ25FZGl0KSk7XG59O1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGNvbnZlcnRlckNvbnRleHQgZnJvbSB0aGUgbWV0YW1vZGVsIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBvcmlnaW5hbCBtZXRhbW9kZWwgY29udGV4dFxuICogQHBhcmFtIG9JbnRlcmZhY2UgVGhlIGN1cnJlbnQgdGVtcGxhdGluZyBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgQ29udmVydGVyQ29udGV4dCByZXByZXNlbnRpbmcgdGhhdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnZlcnRlckNvbnRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IG9iamVjdCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gY29udmVydE1ldGFNb2RlbENvbnRleHQob0ludGVyZmFjZS5jb250ZXh0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn07XG5nZXRDb252ZXJ0ZXJDb250ZXh0LnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRhdGEgbW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBpbnZvbHZlZCBmcm9tIHRoZSBtZXRhbW9kZWwgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIG9yaWdpbmFsIE9EYXRhTWV0YU1vZGVsIGNvbnRleHRcbiAqIEBwYXJhbSBvSW50ZXJmYWNlIFRoZSBjdXJyZW50IHRlbXBsYXRpbmcgY29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZW50aXR5c2V0cyBhbmQgbmF2cHJvcGVydGllcyB0aGF0IGFyZSBpbnZvbHZlZCB0byBnZXQgdG8gYSBzcGVjaWZpYyBvYmplY3QgaW4gdGhlIG1ldGFtb2RlbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9JbnRlcmZhY2UuY29udGV4dCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aC5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHJlZmVyZW5jZWQgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGggVGhlIGRhdGEgbW9kZWwgcGF0aCB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvblxuICovXG5leHBvcnQgY29uc3QgaXNNdWx0aVZhbHVlRmllbGQgPSBmdW5jdGlvbiAob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBib29sZWFuIHtcblx0aWYgKG9EYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRjb25zdCBoYXNPbmVUb01hbnlOYXZpZ2F0aW9uID1cblx0XHRcdG9EYXRhTW9kZWxQYXRoPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoKG9OYXYpID0+IHtcblx0XHRcdFx0aWYgKG9OYXYuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgb05hdi5pc0NvbGxlY3Rpb24pIHtcblx0XHRcdFx0XHRpZiAob0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvL3dlIGNoZWNrIHRoZSBvbmUgdG8gbWFueSBuYXYgaXMgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgY29udGV4dFxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0b0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoXG5cdFx0XHRcdFx0XHRcdFx0KG9Db250ZXh0TmF2KSA9PiBvQ29udGV4dE5hdi5uYW1lID09PSBvTmF2Lm5hbWVcblx0XHRcdFx0XHRcdFx0KSA9PT0gLTFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pID4gLTE7XG5cdFx0aWYgKGhhc09uZVRvTWFueU5hdmlnYXRpb24pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkFzT2JqZWN0ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGRDb252ZXJ0ZWQ/OiBhbnksXG5cdGZvcmNlRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldFJlcXVpcmVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCBmb3JjZUVkaXRNb2RlLCB0cnVlKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRmb3JjZUVkaXRNb2RlOiBib29sZWFuID0gZmFsc2UsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRvUmVxdWlyZWRQcm9wZXJ0aWVzOiBhbnkgPSB7fSxcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMgPSBvUmVxdWlyZWRQcm9wZXJ0aWVzLnJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnM7XG5cdGNvbnN0IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zID0gb1JlcXVpcmVkUHJvcGVydGllcy5yZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zO1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQoZmFsc2UpKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkUmVxdWlyZWRFeHByZXNzaW9uID0gaXNSZXF1aXJlZEV4cHJlc3Npb24ob0RhdGFGaWVsZENvbnZlcnRlZCk7XG5cdH1cblx0bGV0IHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQoZmFsc2UpO1xuXHRsZXQgcmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBjb25zdGFudChmYWxzZSk7XG5cblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHQvLyBFbmFibGVtZW50IGRlcGVuZHMgb24gdGhlIGZpZWxkIGNvbnRyb2wgZXhwcmVzc2lvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBzdGF0aWNhbGx5IGluIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpIC0+IG5vdCBlbmFibGVkXG5cdGNvbnN0IHJlcXVpcmVkRXhwcmVzc2lvbiA9IGlzUmVxdWlyZWRFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0Y29uc3QgZWRpdE1vZGUgPSBmb3JjZUVkaXRNb2RlIHx8IFVJLklzRWRpdGFibGU7XG5cdGlmIChhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucz8uaW5jbHVkZXMoKG9Qcm9wZXJ0eVBhdGggYXMgYW55KS5uYW1lKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbiA9IGFuZChjb25zdGFudCh0cnVlKSwgVUkuSXNDcmVhdGVNb2RlKTtcblx0fVxuXHRpZiAoYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnM/LmluY2x1ZGVzKChvUHJvcGVydHlQYXRoIGFzIGFueSkubmFtZSkpIHtcblx0XHRyZXF1aXJlZFByb3BlcnR5RnJvbVVwZGF0ZVJlc3RyaWN0aW9uc0V4cHJlc3Npb24gPSBhbmQoY29uc3RhbnQodHJ1ZSksIG5vdEVxdWFsKFVJLklzQ3JlYXRlTW9kZSwgdHJ1ZSkpO1xuXHR9XG5cdGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBvcihcblx0XHRhbmQob3IocmVxdWlyZWRFeHByZXNzaW9uLCBkYXRhRmllbGRSZXF1aXJlZEV4cHJlc3Npb24pLCBlZGl0TW9kZSksXG5cdFx0cmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uLFxuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tVXBkYXRlUmVzdHJpY3Rpb25zRXhwcmVzc2lvblxuXHQpO1xuXHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIHJldHVybkV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCA9IGZ1bmN0aW9uIChcblx0ZGF0YUZpZWxkT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBkYXRhID0gZGF0YUZpZWxkT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5EYXRhO1xuXHRjb25zdCBrZXlzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXMoZGF0YSk7XG5cdGNvbnN0IGRhdGFGaWVsZHMgPSBbXTtcblx0bGV0IHByb3BlcnR5UGF0aDtcblx0Y29uc3QgaXNSZXF1aXJlZEV4cHJlc3Npb25zOiAoQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pW10gfCB1bmRlZmluZWQgPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdGlmIChkYXRhW2tleV1bXCIkVHlwZVwiXSAmJiBkYXRhW2tleV1bXCIkVHlwZVwiXS5pbmRleE9mKFwiRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdGRhdGFGaWVsZHMucHVzaChkYXRhW2tleV0pO1xuXHRcdH1cblx0fVxuXHRmb3IgKGNvbnN0IGRhdGFGaWVsZCBvZiBkYXRhRmllbGRzKSB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YUZpZWxkLlZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoID0gZGF0YUZpZWxkLlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhRmllbGQuVGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aCA9IGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHR9XG5cdFx0aXNSZXF1aXJlZEV4cHJlc3Npb25zLnB1c2goZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGQsIGZhbHNlKSk7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG9yKC4uLihpc1JlcXVpcmVkRXhwcmVzc2lvbnMgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10pKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZGTyxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsb0JBQXlDLEVBQWU7SUFDL0YsT0FBT0Msb0JBQW9CLENBQUNGLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNFLFlBQVksRUFBRUYsb0JBQW9CLENBQUM7RUFDcEcsQ0FBQztFQUFDO0VBQ0ssTUFBTUcsNkJBQTZCLEdBQUcsVUFDNUNDLGFBQXVDLEVBSUg7SUFBQSxJQUhwQ0MsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNNLFVBQTZDLHVFQUFHQyxFQUFFLENBQUNDLFVBQVU7SUFFN0QsT0FBT0MscUJBQXFCLENBQzNCTCxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkwsb0JBQW9CLEVBQ3BCLElBQUksRUFDSk0sVUFBVSxDQUNWO0VBQ0YsQ0FBQztFQUFDO0VBUUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNRyxxQkFBcUIsR0FBRyxVQUNwQ0wsYUFBdUMsRUFLZ0M7SUFBQSxJQUp2RUMsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMv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
@@ -58,6 +58,10 @@ export type MetaModelContext = {
58
58
  $Type: string;
59
59
  $Nullable?: boolean;
60
60
  };
61
+
62
+ /**
63
+ * Interface representing the structure returned by the ODataMetaModel when using the @@ operator in XML templates.
64
+ */
61
65
  export type ComputedAnnotationInterface = {
62
66
  context: Context;
63
67
  arguments?: any[];
@@ -32,4 +32,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/model/odata/type/Date
32
32
  }(_DateTimeWithTimezone)) || _class);
33
33
  return DateTimeWithTimezone;
34
34
  }, false);
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZVdpdGhUaW1lem9uZSIsImRlZmluZVVJNUNsYXNzIiwib0Zvcm1hdE9wdGlvbnMiLCJvQ29uc3RyYWludHMiLCJiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlcyIsImZvcm1hdFZhbHVlIiwiYVZhbHVlcyIsInNUYXJnZXRUeXBlIiwib1RpbWVzdGFtcCIsInVuZGVmaW5lZCIsIl9EYXRlVGltZVdpdGhUaW1lem9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0ZVRpbWVXaXRoVGltZXpvbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBfRGF0ZVRpbWVXaXRoVGltZXpvbmUgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLnR5cGUuRGF0ZVRpbWVXaXRoVGltZXpvbmVcIilcbmNsYXNzIERhdGVUaW1lV2l0aFRpbWV6b25lIGV4dGVuZHMgX0RhdGVUaW1lV2l0aFRpbWV6b25lIHtcblx0cHJpdmF0ZSBiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXM6IGJvb2xlYW47XG5cdGNvbnN0cnVjdG9yKG9Gb3JtYXRPcHRpb25zPzogYW55LCBvQ29uc3RyYWludHM/OiBhbnkpIHtcblx0XHRzdXBlcihvRm9ybWF0T3B0aW9ucywgb0NvbnN0cmFpbnRzKTtcblx0XHR0aGlzLmJTaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlcyA9IG9Gb3JtYXRPcHRpb25zPy5zaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlcyA/PyB0cnVlO1xuXHR9XG5cdGZvcm1hdFZhbHVlKGFWYWx1ZXM6IGFueVtdLCBzVGFyZ2V0VHlwZTogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb1RpbWVzdGFtcCA9IGFWYWx1ZXMgJiYgYVZhbHVlc1swXTtcblx0XHRpZiAoXG5cdFx0XHRvVGltZXN0YW1wID09PSB1bmRlZmluZWQgfHwgLy8gZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZVxuXHRcdFx0Ly8gaWYgdGltZSB6b25lIGlzIG5vdCBzaG93biBmYWxzeSB0aW1lc3RhbXBzIGNhbm5vdCBiZSBmb3JtYXR0ZWQgLT4gcmV0dXJuIG51bGxcblx0XHRcdCghb1RpbWVzdGFtcCAmJiAhdGhpcy5iU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIHN1cGVyLmZvcm1hdFZhbHVlKGFWYWx1ZXMsIHNUYXJnZXRUeXBlKTtcblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVXaXRoVGltZXpvbmU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O01BSU1BLG9CQUFvQixXQUR6QkMsY0FBYyxDQUFDLHVDQUF1QyxDQUFDO0lBQUE7SUFHdkQsOEJBQVlDLGNBQW9CLEVBQUVDLFlBQWtCLEVBQUU7TUFBQTtNQUNyRCwwQ0FBTUQsY0FBYyxFQUFFQyxZQUFZLENBQUM7TUFDbkMsTUFBS0MsMkJBQTJCLEdBQUcsQ0FBQUYsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVHLDBCQUEwQixLQUFJLElBQUk7TUFBQztJQUN2RjtJQUFDO0lBQUEsT0FDREMsV0FBVyxHQUFYLHFCQUFZQyxPQUFjLEVBQUVDLFdBQW1CLEVBQUU7TUFDaEQsTUFBTUMsVUFBVSxHQUFHRixPQUFPLElBQUlBLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDeEMsSUFDQ0UsVUFBVSxLQUFLQyxTQUFTO01BQUk7TUFDNUI7TUFDQyxDQUFDRCxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUNMLDJCQUE0QixFQUNqRDtRQUNELE9BQU8sSUFBSTtNQUNaO01BQ0Esd0NBQWFFLFdBQVcsWUFBQ0MsT0FBTyxFQUFFQyxXQUFXO0lBQzlDLENBQUM7SUFBQTtFQUFBLEVBaEJpQ0cscUJBQXFCO0VBQUEsT0FrQnpDWCxvQkFBb0I7QUFBQSJ9
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZVdpdGhUaW1lem9uZSIsImRlZmluZVVJNUNsYXNzIiwib0Zvcm1hdE9wdGlvbnMiLCJvQ29uc3RyYWludHMiLCJiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlcyIsImZvcm1hdFZhbHVlIiwiYVZhbHVlcyIsInNUYXJnZXRUeXBlIiwib1RpbWVzdGFtcCIsInVuZGVmaW5lZCIsIl9EYXRlVGltZVdpdGhUaW1lem9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0ZVRpbWVXaXRoVGltZXpvbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBfRGF0ZVRpbWVXaXRoVGltZXpvbmUgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLnR5cGUuRGF0ZVRpbWVXaXRoVGltZXpvbmVcIilcbmNsYXNzIERhdGVUaW1lV2l0aFRpbWV6b25lIGV4dGVuZHMgX0RhdGVUaW1lV2l0aFRpbWV6b25lIHtcblx0cHJpdmF0ZSBiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXM6IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3Iob0Zvcm1hdE9wdGlvbnM/OiBhbnksIG9Db25zdHJhaW50cz86IGFueSkge1xuXHRcdHN1cGVyKG9Gb3JtYXRPcHRpb25zLCBvQ29uc3RyYWludHMpO1xuXHRcdHRoaXMuYlNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzID0gb0Zvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzID8/IHRydWU7XG5cdH1cblxuXHRmb3JtYXRWYWx1ZShhVmFsdWVzOiBhbnlbXSwgc1RhcmdldFR5cGU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9UaW1lc3RhbXAgPSBhVmFsdWVzICYmIGFWYWx1ZXNbMF07XG5cdFx0aWYgKFxuXHRcdFx0b1RpbWVzdGFtcCA9PT0gdW5kZWZpbmVkIHx8IC8vIGRhdGEgaXMgbm90IHlldCBhdmFpbGFibGVcblx0XHRcdC8vIGlmIHRpbWUgem9uZSBpcyBub3Qgc2hvd24gZmFsc3kgdGltZXN0YW1wcyBjYW5ub3QgYmUgZm9ybWF0dGVkIC0+IHJldHVybiBudWxsXG5cdFx0XHQoIW9UaW1lc3RhbXAgJiYgIXRoaXMuYlNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5mb3JtYXRWYWx1ZShhVmFsdWVzLCBzVGFyZ2V0VHlwZSk7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lV2l0aFRpbWV6b25lO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztNQUlNQSxvQkFBb0IsV0FEekJDLGNBQWMsQ0FBQyx1Q0FBdUMsQ0FBQztJQUFBO0lBSXZELDhCQUFZQyxjQUFvQixFQUFFQyxZQUFrQixFQUFFO01BQUE7TUFDckQsMENBQU1ELGNBQWMsRUFBRUMsWUFBWSxDQUFDO01BQ25DLE1BQUtDLDJCQUEyQixHQUFHLENBQUFGLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFRywwQkFBMEIsS0FBSSxJQUFJO01BQUM7SUFDdkY7SUFBQztJQUFBLE9BRURDLFdBQVcsR0FBWCxxQkFBWUMsT0FBYyxFQUFFQyxXQUFtQixFQUFFO01BQ2hELE1BQU1DLFVBQVUsR0FBR0YsT0FBTyxJQUFJQSxPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3hDLElBQ0NFLFVBQVUsS0FBS0MsU0FBUztNQUFJO01BQzVCO01BQ0MsQ0FBQ0QsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDTCwyQkFBNEIsRUFDakQ7UUFDRCxPQUFPLElBQUk7TUFDWjtNQUNBLHdDQUFhRSxXQUFXLFlBQUNDLE9BQU8sRUFBRUMsV0FBVztJQUM5QyxDQUFDO0lBQUE7RUFBQSxFQWxCaUNHLHFCQUFxQjtFQUFBLE9Bb0J6Q1gsb0JBQW9CO0FBQUEifQ==
@@ -4,10 +4,12 @@ import _DateTimeWithTimezone from "sap/ui/model/odata/type/DateTimeWithTimezone"
4
4
  @defineUI5Class("sap.fe.core.type.DateTimeWithTimezone")
5
5
  class DateTimeWithTimezone extends _DateTimeWithTimezone {
6
6
  private bShowTimezoneForEmptyValues: boolean;
7
+
7
8
  constructor(oFormatOptions?: any, oConstraints?: any) {
8
9
  super(oFormatOptions, oConstraints);
9
10
  this.bShowTimezoneForEmptyValues = oFormatOptions?.showTimezoneForEmptyValues ?? true;
10
11
  }
12
+
11
13
  formatValue(aValues: any[], sTargetType: string) {
12
14
  const oTimestamp = aValues && aValues[0];
13
15
  if (
@@ -16,7 +16,7 @@ sap.ui.define(["sap/fe/core/formatters/FiscalFormat", "sap/fe/core/helpers/Class
16
16
  * @param formatOptions Format options
17
17
  * @param formatOptions.fiscalType String with a fiscal annotation type
18
18
  * @param constraints Constraints
19
- * @version 1.111.1
19
+ * @since 1.110.0
20
20
  * @experimental
21
21
  * @extends sap.ui.model.odata.type.String
22
22
  * @alias {sap.fe.core.type.FiscalDate} The implementation of the fiscal date
@@ -171,4 +171,4 @@ sap.ui.define(["sap/fe/core/formatters/FiscalFormat", "sap/fe/core/helpers/Class
171
171
  }, _class2)) || _class);
172
172
  return FiscalDate;
173
173
  }, false);
174
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaXNjYWxEYXRlIiwiZGVmaW5lVUk1Q2xhc3MiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJmaXNjYWxUeXBlIiwibWF4TGVuZ3RoIiwiYW5ub3RhdGlvblR5cGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0cyIsImZvcm1hdHRlciIsIkZpc2NhbEZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImNhbGVuZGFyVHlwZSIsIkNhbGVuZGFyVHlwZSIsIkdyZWdvcmlhbiIsImdldFBhdHRlcm4iLCJmb3JtYXRWYWx1ZSIsInZhbHVlIiwidGFyZ2V0VHlwZSIsInBhcnNlVmFsdWUiLCJzb3VyY2VUeXBlIiwicGFyc2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZXJyb3IiLCJ2YWxpZGF0ZSIsIlZhbGlkYXRlRXhjZXB0aW9uIiwiZ2V0RXJyb3JNZXNzYWdlIiwic1ZhbHVlIiwiZnVsbFllYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJ0b1N0cmluZyIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0IiwiZ2V0TmFtZSIsImdldEZvcm1hdHRlciIsIk9EYXRhU3RyaW5nVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlzY2FsRGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IEZpc2NhbEZvcm1hdCBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GaXNjYWxGb3JtYXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ2FsZW5kYXJUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9DYWxlbmRhclR5cGVcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgT0RhdGFTdHJpbmdUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9TdHJpbmdcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5cbi8qKlxuICogRGVmaW5lIHRoZSBVSTUgY2xhc3MgZm9yIGEgdHlwZSBvZiBmaXNjYWwgZGF0ZS5cbiAqXG4gKiBAY2xhc3MgVGhlIGRhdGEgdHlwZSBGaXNjYWwgRGF0ZSBzdXBwb3J0cyB0aGUgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBvZiBmaXNjYWwgZGF0ZXMgdGhhdCBmb2xsb3cgdGhlIHBhdHRlcm4gJ3lNJ1xuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgRm9ybWF0IG9wdGlvbnNcbiAqIEBwYXJhbSBmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgU3RyaW5nIHdpdGggYSBmaXNjYWwgYW5ub3RhdGlvbiB0eXBlXG4gKiBAcGFyYW0gY29uc3RyYWludHMgQ29uc3RyYWludHNcbiAqIEB2ZXJzaW9uICR7dmVyc2lvbn1cbiAqIEBleHBlcmltZW50YWxcbiAqIEBleHRlbmRzIHNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1xuICogQGFsaWFzIHtzYXAuZmUuY29yZS50eXBlLkZpc2NhbERhdGV9IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZmlzY2FsIGRhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUudHlwZS5GaXNjYWxEYXRlXCIpXG5jbGFzcyBGaXNjYWxEYXRlIGV4dGVuZHMgT0RhdGFTdHJpbmdUeXBlIHtcblx0cHJpdmF0ZSBhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIGZ1bGxZZWFyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBzdGF0aWMgZGF0ZUZvcm1hdHMgPSB7XG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJdOiBcIllZWVlcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUGVyaW9kXTogXCJQUFBcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclBlcmlvZF06IFwiWVlZWVBQUFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxRdWFydGVyXTogXCJRXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJRdWFydGVyXTogXCJZWVlZUVwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxXZWVrXTogXCJXV1wiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyV2Vla106IFwiWVlZWVdXXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0RheU9mRmlzY2FsWWVhcl06IFwiZFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyVmFyaWFudF06IFwiXCJcblx0fTtcblxuXHRwcml2YXRlIGZvcm1hdHRlcjogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKGZvcm1hdE9wdGlvbnM6IGFueSwgY29uc3RyYWludHM6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdChmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2QgfHxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucy5maXNjYWxUeXBlID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlciB8fFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJXZWVrKSAmJlxuXHRcdFx0Y29uc3RyYWludHM/Lm1heExlbmd0aFxuXHRcdCkge1xuXHRcdFx0Ly8gV2UgaW5jcmVhc2UgbWF4TGVuZ3RoIGZvciArMSBmb3IgYW55IGZpc2NhbCB0eXBlIHRoYXQgaGF2ZSBkZWxpbWl0ZXIgaW4gbG9jYWxlIGZvcm1hdC5cblx0XHRcdC8vIEl0J3MgbmVjZXNzYXJ5IGZvciB2YWxpZGF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LlxuXHRcdFx0Ly8gQWxzbyBmb3IgdmFsaWRhdGlvbiB0byBmdW5jdGlvbiBwcm9wZXJseSB1c2VyIGFsc28gc2hvdWxkIHNwZWNpZnkgY29uc3RyYWludHMuaXNEaWdpdFNlcXVlbmNlID0gdHJ1ZVxuXHRcdFx0Ly8gaXNEaWdpdFNlcXVlbmNlIGFuZCBtYXhMZW5ndGggY29tYmluYXRpb24gZW5zdXJlcyB0aGF0IG1pc3NpbmcgY2hhcmFjdGVycyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGxlYWRpbmcgemVyb3Ncblx0XHRcdC8vIHRoYXQgd2lsbCBlbnN1cmUgdXNlciB3aWxsIHJlY2VpdmUgY29ycmVjdCB2YWxpZGF0aW9uIHJlc3VsdHMuXG5cdFx0XHRjb25zdHJhaW50cy5tYXhMZW5ndGggPSBjb25zdHJhaW50cy5tYXhMZW5ndGggKyAxO1xuXHRcdH1cblx0XHRzdXBlcihmb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cyk7XG5cdFx0dGhpcy5hbm5vdGF0aW9uVHlwZSA9IGZvcm1hdE9wdGlvbnMuZmlzY2FsVHlwZTtcblx0XHRjb25zdCBmb3JtYXQgPSBGaXNjYWxEYXRlLmRhdGVGb3JtYXRzW3RoaXMuYW5ub3RhdGlvblR5cGUgYXMga2V5b2YgdHlwZW9mIEZpc2NhbERhdGUuZGF0ZUZvcm1hdHNdO1xuXHRcdGlmIChmb3JtYXQpIHtcblx0XHRcdHRoaXMuZm9ybWF0dGVyID0gRmlzY2FsRm9ybWF0LmdldERhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdGZvcm1hdCxcblx0XHRcdFx0Y2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuR3JlZ29yaWFuXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHBhdHRlcm4gZm9yIGZpc2NhbCBkYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBmaXNjYWwgZGF0ZSBwYXR0ZXJuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmZvcm1hdHRlcj8uZ2V0UGF0dGVybigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBmaXNjYWwgdHlwZS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWRcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBvdXRwdXQgdmFsdWU7IDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaXMgYWx3YXlzIGZvcm1hdHRlZCB0byA8Y29kZT5udWxsPC9jb2RlPlxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCB0YXJnZXRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXIgPyB0aGlzLmZvcm1hdHRlci5mb3JtYXQoc3VwZXIuZm9ybWF0VmFsdWUodmFsdWUsIHRhcmdldFR5cGUpKSA6IHN1cGVyLmZvcm1hdFZhbHVlKHZhbHVlLCB0YXJnZXRUeXBlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgdGhlIGdpdmVuIHZhbHVlLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBvZiB0aGUgZmlzY2FsIHR5cGUsIHRvIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIHBhcnNlZFxuXHQgKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlXG5cdCAqIEBvdmVycmlkZVxuXHQgKi9cblx0cHVibGljIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIHNvdXJjZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybWF0dGVyID8gdGhpcy5mb3JtYXR0ZXIucGFyc2Uoc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSkpIDogc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSk7XG5cdH1cblxuXHQvKipcblx0ICogQGluaGVyaXREb2Ncblx0ICovXG5cdHB1YmxpYyB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0c3VwZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICghdGhpcy5mb3JtYXR0ZXIpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuZm9ybWF0dGVyLnZhbGlkYXRlKHZhbHVlKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24odGhpcy5nZXRFcnJvck1lc3NhZ2UodGhpcy5hbm5vdGF0aW9uVHlwZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghdGhpcy5mb3JtYXR0ZXIgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmZvcm1hdHRlci52YWxpZGF0ZSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbih0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLmFubm90YXRpb25UeXBlKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hdGNoaW5nIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIHR5cGUgYmFzZWQgb24gdGhlIGZpc2NhbCBhbm5vdGF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGZpc2NhbCBhbm5vdGF0aW9uIHR5cGVcblx0ICogQHJldHVybnMgVGhlIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGdldEVycm9yTWVzc2FnZShhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRsZXQgc1ZhbHVlID0gXCJcIjtcblx0XHR0aGlzLmZ1bGxZZWFyID0gdGhpcy5mdWxsWWVhciB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuXHRcdHN3aXRjaCAoYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFBlcmlvZDpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMDFcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2Q6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gXCIxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhciArIFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsV2Vlazpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcldlZWs6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNEYXlPZkZpc2NhbFllYXI6XG5cdFx0XHRcdHNWYWx1ZSA9IFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclZhcmlhbnQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiRklTQ0FMX1ZBTElEQVRJT05fRkFJTFNcIiwgW3RoaXMuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpbmhlcml0RG9jXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlciB0aGF0IGlzIGFzc2lnbmVkIHRvIHRoaXMgcGFydGljdWxhciBGaXNjYWxEYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBhc3NpZ25lZCBpbnN0YW5jZSBvZiBGaXNjYWxGb3JtYXRcblx0ICovXG5cdHB1YmxpYyBnZXRGb3JtYXR0ZXIoKTogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXI7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IEZpc2NhbERhdGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
174
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaXNjYWxEYXRlIiwiZGVmaW5lVUk1Q2xhc3MiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJmaXNjYWxUeXBlIiwibWF4TGVuZ3RoIiwiYW5ub3RhdGlvblR5cGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0cyIsImZvcm1hdHRlciIsIkZpc2NhbEZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImNhbGVuZGFyVHlwZSIsIkNhbGVuZGFyVHlwZSIsIkdyZWdvcmlhbiIsImdldFBhdHRlcm4iLCJmb3JtYXRWYWx1ZSIsInZhbHVlIiwidGFyZ2V0VHlwZSIsInBhcnNlVmFsdWUiLCJzb3VyY2VUeXBlIiwicGFyc2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZXJyb3IiLCJ2YWxpZGF0ZSIsIlZhbGlkYXRlRXhjZXB0aW9uIiwiZ2V0RXJyb3JNZXNzYWdlIiwic1ZhbHVlIiwiZnVsbFllYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJ0b1N0cmluZyIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0IiwiZ2V0TmFtZSIsImdldEZvcm1hdHRlciIsIk9EYXRhU3RyaW5nVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlzY2FsRGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IEZpc2NhbEZvcm1hdCBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GaXNjYWxGb3JtYXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ2FsZW5kYXJUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9DYWxlbmRhclR5cGVcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgT0RhdGFTdHJpbmdUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9TdHJpbmdcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5cbi8qKlxuICogRGVmaW5lIHRoZSBVSTUgY2xhc3MgZm9yIGEgdHlwZSBvZiBmaXNjYWwgZGF0ZS5cbiAqXG4gKiBAY2xhc3MgVGhlIGRhdGEgdHlwZSBGaXNjYWwgRGF0ZSBzdXBwb3J0cyB0aGUgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBvZiBmaXNjYWwgZGF0ZXMgdGhhdCBmb2xsb3cgdGhlIHBhdHRlcm4gJ3lNJ1xuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgRm9ybWF0IG9wdGlvbnNcbiAqIEBwYXJhbSBmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgU3RyaW5nIHdpdGggYSBmaXNjYWwgYW5ub3RhdGlvbiB0eXBlXG4gKiBAcGFyYW0gY29uc3RyYWludHMgQ29uc3RyYWludHNcbiAqIEBzaW5jZSAxLjExMC4wXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZXh0ZW5kcyBzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcbiAqIEBhbGlhcyB7c2FwLmZlLmNvcmUudHlwZS5GaXNjYWxEYXRlfSBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZpc2NhbCBkYXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiKVxuY2xhc3MgRmlzY2FsRGF0ZSBleHRlbmRzIE9EYXRhU3RyaW5nVHlwZSB7XG5cdHByaXZhdGUgYW5ub3RhdGlvblR5cGU6IENvbW1vbkFubm90YXRpb25UZXJtcyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIGZ1bGxZZWFyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBzdGF0aWMgZGF0ZUZvcm1hdHMgPSB7XG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJdOiBcIllZWVlcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUGVyaW9kXTogXCJQUFBcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclBlcmlvZF06IFwiWVlZWVBQUFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxRdWFydGVyXTogXCJRXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJRdWFydGVyXTogXCJZWVlZUVwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxXZWVrXTogXCJXV1wiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyV2Vla106IFwiWVlZWVdXXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0RheU9mRmlzY2FsWWVhcl06IFwiZFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyVmFyaWFudF06IFwiXCJcblx0fTtcblxuXHRwcml2YXRlIGZvcm1hdHRlcjogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKGZvcm1hdE9wdGlvbnM6IGFueSwgY29uc3RyYWludHM6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdChmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2QgfHxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucy5maXNjYWxUeXBlID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlciB8fFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJXZWVrKSAmJlxuXHRcdFx0Y29uc3RyYWludHM/Lm1heExlbmd0aFxuXHRcdCkge1xuXHRcdFx0Ly8gV2UgaW5jcmVhc2UgbWF4TGVuZ3RoIGZvciArMSBmb3IgYW55IGZpc2NhbCB0eXBlIHRoYXQgaGF2ZSBkZWxpbWl0ZXIgaW4gbG9jYWxlIGZvcm1hdC5cblx0XHRcdC8vIEl0J3MgbmVjZXNzYXJ5IGZvciB2YWxpZGF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LlxuXHRcdFx0Ly8gQWxzbyBmb3IgdmFsaWRhdGlvbiB0byBmdW5jdGlvbiBwcm9wZXJseSB1c2VyIGFsc28gc2hvdWxkIHNwZWNpZnkgY29uc3RyYWludHMuaXNEaWdpdFNlcXVlbmNlID0gdHJ1ZVxuXHRcdFx0Ly8gaXNEaWdpdFNlcXVlbmNlIGFuZCBtYXhMZW5ndGggY29tYmluYXRpb24gZW5zdXJlcyB0aGF0IG1pc3NpbmcgY2hhcmFjdGVycyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGxlYWRpbmcgemVyb3Ncblx0XHRcdC8vIHRoYXQgd2lsbCBlbnN1cmUgdXNlciB3aWxsIHJlY2VpdmUgY29ycmVjdCB2YWxpZGF0aW9uIHJlc3VsdHMuXG5cdFx0XHRjb25zdHJhaW50cy5tYXhMZW5ndGggPSBjb25zdHJhaW50cy5tYXhMZW5ndGggKyAxO1xuXHRcdH1cblx0XHRzdXBlcihmb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cyk7XG5cdFx0dGhpcy5hbm5vdGF0aW9uVHlwZSA9IGZvcm1hdE9wdGlvbnMuZmlzY2FsVHlwZTtcblx0XHRjb25zdCBmb3JtYXQgPSBGaXNjYWxEYXRlLmRhdGVGb3JtYXRzW3RoaXMuYW5ub3RhdGlvblR5cGUgYXMga2V5b2YgdHlwZW9mIEZpc2NhbERhdGUuZGF0ZUZvcm1hdHNdO1xuXHRcdGlmIChmb3JtYXQpIHtcblx0XHRcdHRoaXMuZm9ybWF0dGVyID0gRmlzY2FsRm9ybWF0LmdldERhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdGZvcm1hdCxcblx0XHRcdFx0Y2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuR3JlZ29yaWFuXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHBhdHRlcm4gZm9yIGZpc2NhbCBkYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBmaXNjYWwgZGF0ZSBwYXR0ZXJuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmZvcm1hdHRlcj8uZ2V0UGF0dGVybigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBmaXNjYWwgdHlwZS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWRcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBvdXRwdXQgdmFsdWU7IDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaXMgYWx3YXlzIGZvcm1hdHRlZCB0byA8Y29kZT5udWxsPC9jb2RlPlxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCB0YXJnZXRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXIgPyB0aGlzLmZvcm1hdHRlci5mb3JtYXQoc3VwZXIuZm9ybWF0VmFsdWUodmFsdWUsIHRhcmdldFR5cGUpKSA6IHN1cGVyLmZvcm1hdFZhbHVlKHZhbHVlLCB0YXJnZXRUeXBlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgdGhlIGdpdmVuIHZhbHVlLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBvZiB0aGUgZmlzY2FsIHR5cGUsIHRvIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIHBhcnNlZFxuXHQgKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlXG5cdCAqIEBvdmVycmlkZVxuXHQgKi9cblx0cHVibGljIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIHNvdXJjZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybWF0dGVyID8gdGhpcy5mb3JtYXR0ZXIucGFyc2Uoc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSkpIDogc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSk7XG5cdH1cblxuXHQvKipcblx0ICogQGluaGVyaXREb2Ncblx0ICovXG5cdHB1YmxpYyB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0c3VwZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICghdGhpcy5mb3JtYXR0ZXIpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuZm9ybWF0dGVyLnZhbGlkYXRlKHZhbHVlKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24odGhpcy5nZXRFcnJvck1lc3NhZ2UodGhpcy5hbm5vdGF0aW9uVHlwZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghdGhpcy5mb3JtYXR0ZXIgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmZvcm1hdHRlci52YWxpZGF0ZSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbih0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLmFubm90YXRpb25UeXBlKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hdGNoaW5nIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIHR5cGUgYmFzZWQgb24gdGhlIGZpc2NhbCBhbm5vdGF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGZpc2NhbCBhbm5vdGF0aW9uIHR5cGVcblx0ICogQHJldHVybnMgVGhlIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGdldEVycm9yTWVzc2FnZShhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRsZXQgc1ZhbHVlID0gXCJcIjtcblx0XHR0aGlzLmZ1bGxZZWFyID0gdGhpcy5mdWxsWWVhciB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuXHRcdHN3aXRjaCAoYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFBlcmlvZDpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMDFcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2Q6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gXCIxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhciArIFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsV2Vlazpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcldlZWs6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNEYXlPZkZpc2NhbFllYXI6XG5cdFx0XHRcdHNWYWx1ZSA9IFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclZhcmlhbnQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiRklTQ0FMX1ZBTElEQVRJT05fRkFJTFNcIiwgW3RoaXMuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpbmhlcml0RG9jXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlciB0aGF0IGlzIGFzc2lnbmVkIHRvIHRoaXMgcGFydGljdWxhciBGaXNjYWxEYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBhc3NpZ25lZCBpbnN0YW5jZSBvZiBGaXNjYWxGb3JtYXRcblx0ICovXG5cdHB1YmxpYyBnZXRGb3JtYXR0ZXIoKTogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXI7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IEZpc2NhbERhdGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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
@@ -1 +1 @@
1
- {"version":3,"file":"FiscalDate.js","names":["sap","ui","define","FiscalFormat","ClassSupport","CalendarType","Core","ODataStringType","ValidateException","_dec","_class","_class2","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","FiscalDate","_ODataStringType","formatOptions","constraints","_this","fiscalType","maxLength","call","this","annotationType","format","dateFormats","formatter","getDateInstance","calendarType","Gregorian","_proto","getPattern","_this$formatter","formatValue","value","targetType","parseValue","sourceType","parse","validateValue","error","validate","getErrorMessage","sValue","fullYear","Date","getFullYear","toString","getLibraryResourceBundle","getText","getName","getFormatter"],"sources":["FiscalDate-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"FiscalDate.js","names":["sap","ui","define","FiscalFormat","ClassSupport","CalendarType","Core","ODataStringType","ValidateException","_dec","_class","_class2","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","FiscalDate","_ODataStringType","formatOptions","constraints","_this","fiscalType","maxLength","call","this","annotationType","format","dateFormats","formatter","getDateInstance","calendarType","Gregorian","_proto","getPattern","_this$formatter","formatValue","value","targetType","parseValue","sourceType","parse","validateValue","error","validate","getErrorMessage","sValue","fullYear","Date","getFullYear","toString","getLibraryResourceBundle","getText","getName","getFormatter"],"sources":["FiscalDate-dbg.js"],"mappings":"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"}
@@ -13,7 +13,7 @@ import ValidateException from "sap/ui/model/ValidateException";
13
13
  * @param formatOptions Format options
14
14
  * @param formatOptions.fiscalType String with a fiscal annotation type
15
15
  * @param constraints Constraints
16
- * @version ${version}
16
+ * @since 1.110.0
17
17
  * @experimental
18
18
  * @extends sap.ui.model.odata.type.String
19
19
  * @alias {sap.fe.core.type.FiscalDate} The implementation of the fiscal date
@@ -21,6 +21,7 @@ import ValidateException from "sap/ui/model/ValidateException";
21
21
  @defineUI5Class("sap.fe.core.type.FiscalDate")
22
22
  class FiscalDate extends ODataStringType {
23
23
  private annotationType: CommonAnnotationTerms | undefined;
24
+
24
25
  private fullYear: string | undefined;
25
26
 
26
27
  private static dateFormats = {
@@ -2,9 +2,10 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/odata/TypeUtil"], function (merge, BaseType, ODataTypeUtil) {
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/odata/TypeUtil"], function (BindingToolkit, merge, BaseType, ODataTypeUtil) {
6
6
  "use strict";
7
7
 
8
+ var EDM_TYPE_MAPPING = BindingToolkit.EDM_TYPE_MAPPING;
8
9
  const ODataV4TypeUtil = Object.assign({}, ODataTypeUtil);
9
10
  ODataV4TypeUtil.getBaseType = function (type, formatOptions, constraints) {
10
11
  switch (type) {
@@ -28,14 +29,8 @@ sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/od
28
29
  };
29
30
  ODataV4TypeUtil.getDataTypeClassName = function (type) {
30
31
  // V4 specific types
31
- const edmTypes = {
32
- "Edm.Date": "sap.ui.model.odata.type.Date",
33
- // V4 Date
34
- "Edm.TimeOfDay": "sap.ui.model.odata.type.TimeOfDay" // V4 constraints: {precision}
35
- };
36
-
37
- if (edmTypes[type]) {
38
- type = edmTypes[type];
32
+ if (EDM_TYPE_MAPPING[type]) {
33
+ type = EDM_TYPE_MAPPING[type].type;
39
34
  } else {
40
35
  type = ODataTypeUtil.getDataTypeClassName.call(ODataV4TypeUtil, type);
41
36
  }
@@ -55,4 +50,4 @@ sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/od
55
50
  };
56
51
  return ODataV4TypeUtil;
57
52
  }, false);
58
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPRGF0YVY0VHlwZVV0aWwiLCJPYmplY3QiLCJhc3NpZ24iLCJPRGF0YVR5cGVVdGlsIiwiZ2V0QmFzZVR5cGUiLCJ0eXBlIiwiZm9ybWF0T3B0aW9ucyIsImNvbnN0cmFpbnRzIiwiQmFzZVR5cGUiLCJEYXRlIiwiVGltZSIsImhhc093blByb3BlcnR5Iiwic2hvd01lYXN1cmUiLCJzaG93TnVtYmVyIiwiVW5pdCIsIk51bWVyaWMiLCJTdHJpbmciLCJjYWxsIiwiZ2V0RGF0YVR5cGVDbGFzc05hbWUiLCJlZG1UeXBlcyIsImdldERhdGFUeXBlSW5zdGFuY2UiLCJkYXRhVHlwZSIsIm1lcmdlIiwiVjQiLCJUeXBlQ2xhc3MiLCJnZXREYXRhVHlwZUNsYXNzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUeXBlVXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCBCYXNlVHlwZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtL0Jhc2VUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cmFpbnRzLCBGb3JtYXRPcHRpb25zIH0gZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvVHlwZVV0aWxcIjtcbmltcG9ydCBPRGF0YVR5cGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL1R5cGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBTaW1wbGVUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvU2ltcGxlVHlwZVwiO1xuXG5jb25zdCBPRGF0YVY0VHlwZVV0aWwgPSBPYmplY3QuYXNzaWduKHt9LCBPRGF0YVR5cGVVdGlsKTtcbk9EYXRhVjRUeXBlVXRpbC5nZXRCYXNlVHlwZSA9IGZ1bmN0aW9uICh0eXBlOiBzdHJpbmcsIGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cz86IENvbnN0cmFpbnRzKTogQmFzZVR5cGUge1xuXHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRjYXNlIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVwiOlxuXHRcdFx0cmV0dXJuIEJhc2VUeXBlLkRhdGU7XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlRpbWVPZkRheVwiOlxuXHRcdFx0cmV0dXJuIEJhc2VUeXBlLlRpbWU7XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIjpcblx0XHRjYXNlIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQ3VycmVuY3lcIjpcblx0XHRcdGlmIChcblx0XHRcdFx0IWZvcm1hdE9wdGlvbnMgfHxcblx0XHRcdFx0KCghZm9ybWF0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInNob3dNZWFzdXJlXCIpIHx8IGZvcm1hdE9wdGlvbnMuc2hvd01lYXN1cmUpICYmXG5cdFx0XHRcdFx0KCFmb3JtYXRPcHRpb25zLmhhc093blByb3BlcnR5KFwic2hvd051bWJlclwiKSB8fCBmb3JtYXRPcHRpb25zLnNob3dOdW1iZXIpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBCYXNlVHlwZS5Vbml0O1xuXHRcdFx0fSBlbHNlIGlmICghZm9ybWF0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInNob3dOdW1iZXJcIikgfHwgZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyKSB7XG5cdFx0XHRcdHJldHVybiBCYXNlVHlwZS5OdW1lcmljOyAvLyBvbmx5IG51bWJlciB0byBzaG93XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVR5cGUuU3RyaW5nOyAvLyBvbmx5IHVuaXQgdG8gc2hvd1xuXHRcdFx0fVxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gT0RhdGFUeXBlVXRpbC5nZXRCYXNlVHlwZS5jYWxsKE9EYXRhVjRUeXBlVXRpbCwgdHlwZSwgZm9ybWF0T3B0aW9ucywgY29uc3RyYWludHMpO1xuXHR9XG59O1xuT0RhdGFWNFR5cGVVdGlsLmdldERhdGFUeXBlQ2xhc3NOYW1lID0gZnVuY3Rpb24gKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIFY0IHNwZWNpZmljIHR5cGVzXG5cdGNvbnN0IGVkbVR5cGVzID0ge1xuXHRcdFwiRWRtLkRhdGVcIjogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlXCIsIC8vIFY0IERhdGVcblx0XHRcIkVkbS5UaW1lT2ZEYXlcIjogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5UaW1lT2ZEYXlcIiAvLyBWNCBjb25zdHJhaW50czoge3ByZWNpc2lvbn1cblx0fSBhcyBhbnk7XG5cdGlmIChlZG1UeXBlc1t0eXBlXSkge1xuXHRcdHR5cGUgPSBlZG1UeXBlc1t0eXBlXTtcblx0fSBlbHNlIHtcblx0XHR0eXBlID0gT0RhdGFUeXBlVXRpbC5nZXREYXRhVHlwZUNsYXNzTmFtZS5jYWxsKE9EYXRhVjRUeXBlVXRpbCwgdHlwZSk7XG5cdH1cblx0cmV0dXJuIHR5cGU7XG59O1xuT0RhdGFWNFR5cGVVdGlsLmdldERhdGFUeXBlSW5zdGFuY2UgPSBmdW5jdGlvbiAoZGF0YVR5cGU6IHN0cmluZywgZm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnMsIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludHMpOiBTaW1wbGVUeXBlIHtcblx0c3dpdGNoIChkYXRhVHlwZSkge1xuXHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlVGltZU9mZnNldFwiOlxuXHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRcdGNvbnN0cmFpbnRzID0gbWVyZ2Uoe30sIGNvbnN0cmFpbnRzIHx8IHt9KTtcblx0XHRcdGNvbnN0cmFpbnRzLlY0ID0gdHJ1ZTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdH1cblx0Y29uc3QgVHlwZUNsYXNzID0gT0RhdGFWNFR5cGVVdGlsLmdldERhdGFUeXBlQ2xhc3MoZGF0YVR5cGUpO1xuXHRyZXR1cm4gbmV3IFR5cGVDbGFzcyhmb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cyk7XG59O1xuZXhwb3J0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
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPRGF0YVY0VHlwZVV0aWwiLCJPYmplY3QiLCJhc3NpZ24iLCJPRGF0YVR5cGVVdGlsIiwiZ2V0QmFzZVR5cGUiLCJ0eXBlIiwiZm9ybWF0T3B0aW9ucyIsImNvbnN0cmFpbnRzIiwiQmFzZVR5cGUiLCJEYXRlIiwiVGltZSIsImhhc093blByb3BlcnR5Iiwic2hvd01lYXN1cmUiLCJzaG93TnVtYmVyIiwiVW5pdCIsIk51bWVyaWMiLCJTdHJpbmciLCJjYWxsIiwiZ2V0RGF0YVR5cGVDbGFzc05hbWUiLCJFRE1fVFlQRV9NQVBQSU5HIiwiZ2V0RGF0YVR5cGVJbnN0YW5jZSIsImRhdGFUeXBlIiwibWVyZ2UiLCJWNCIsIlR5cGVDbGFzcyIsImdldERhdGFUeXBlQ2xhc3MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlR5cGVVdGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVETV9UWVBFX01BUFBJTkcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgQmFzZVR5cGUgZnJvbSBcInNhcC91aS9tZGMvZW51bS9CYXNlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJhaW50cywgRm9ybWF0T3B0aW9ucyB9IGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL1R5cGVVdGlsXCI7XG5pbXBvcnQgT0RhdGFUeXBlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS9UeXBlVXRpbFwiO1xuaW1wb3J0IHR5cGUgU2ltcGxlVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL1NpbXBsZVR5cGVcIjtcblxuY29uc3QgT0RhdGFWNFR5cGVVdGlsID0gT2JqZWN0LmFzc2lnbih7fSwgT0RhdGFUeXBlVXRpbCk7XG5PRGF0YVY0VHlwZVV0aWwuZ2V0QmFzZVR5cGUgPSBmdW5jdGlvbiAodHlwZTogc3RyaW5nLCBmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9ucywgY29uc3RyYWludHM/OiBDb25zdHJhaW50cyk6IEJhc2VUeXBlIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRhdGVcIjpcblx0XHRcdHJldHVybiBCYXNlVHlwZS5EYXRlO1xuXHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5UaW1lT2ZEYXlcIjpcblx0XHRcdHJldHVybiBCYXNlVHlwZS5UaW1lO1xuXHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCI6XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI6XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFmb3JtYXRPcHRpb25zIHx8XG5cdFx0XHRcdCgoIWZvcm1hdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoXCJzaG93TWVhc3VyZVwiKSB8fCBmb3JtYXRPcHRpb25zLnNob3dNZWFzdXJlKSAmJlxuXHRcdFx0XHRcdCghZm9ybWF0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInNob3dOdW1iZXJcIikgfHwgZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVR5cGUuVW5pdDtcblx0XHRcdH0gZWxzZSBpZiAoIWZvcm1hdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoXCJzaG93TnVtYmVyXCIpIHx8IGZvcm1hdE9wdGlvbnMuc2hvd051bWJlcikge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVR5cGUuTnVtZXJpYzsgLy8gb25seSBudW1iZXIgdG8gc2hvd1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIEJhc2VUeXBlLlN0cmluZzsgLy8gb25seSB1bml0IHRvIHNob3dcblx0XHRcdH1cblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIE9EYXRhVHlwZVV0aWwuZ2V0QmFzZVR5cGUuY2FsbChPRGF0YVY0VHlwZVV0aWwsIHR5cGUsIGZvcm1hdE9wdGlvbnMsIGNvbnN0cmFpbnRzKTtcblx0fVxufTtcbk9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUNsYXNzTmFtZSA9IGZ1bmN0aW9uICh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyBWNCBzcGVjaWZpYyB0eXBlc1xuXHRpZiAoRURNX1RZUEVfTUFQUElOR1t0eXBlXSkge1xuXHRcdHR5cGUgPSBFRE1fVFlQRV9NQVBQSU5HW3R5cGVdLnR5cGU7XG5cdH0gZWxzZSB7XG5cdFx0dHlwZSA9IE9EYXRhVHlwZVV0aWwuZ2V0RGF0YVR5cGVDbGFzc05hbWUuY2FsbChPRGF0YVY0VHlwZVV0aWwsIHR5cGUpO1xuXHR9XG5cdHJldHVybiB0eXBlO1xufTtcbk9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUluc3RhbmNlID0gZnVuY3Rpb24gKGRhdGFUeXBlOiBzdHJpbmcsIGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cz86IENvbnN0cmFpbnRzKTogU2ltcGxlVHlwZSB7XG5cdHN3aXRjaCAoZGF0YVR5cGUpIHtcblx0XHRjYXNlIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6XG5cdFx0XHRjb25zdHJhaW50cyA9IG1lcmdlKHt9LCBjb25zdHJhaW50cyB8fCB7fSk7XG5cdFx0XHRjb25zdHJhaW50cy5WNCA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHR9XG5cdGNvbnN0IFR5cGVDbGFzcyA9IE9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUNsYXNzKGRhdGFUeXBlKTtcblx0cmV0dXJuIG5ldyBUeXBlQ2xhc3MoZm9ybWF0T3B0aW9ucywgY29uc3RyYWludHMpO1xufTtcbmV4cG9ydCBkZWZhdWx0IE9EYXRhVjRUeXBlVXRpbDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7RUFPQSxNQUFNQSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFQyxhQUFhLENBQUM7RUFDeERILGVBQWUsQ0FBQ0ksV0FBVyxHQUFHLFVBQVVDLElBQVksRUFBRUMsYUFBNkIsRUFBRUMsV0FBeUIsRUFBWTtJQUN6SCxRQUFRRixJQUFJO01BQ1gsS0FBSyw4QkFBOEI7UUFDbEMsT0FBT0csUUFBUSxDQUFDQyxJQUFJO01BQ3JCLEtBQUssbUNBQW1DO1FBQ3ZDLE9BQU9ELFFBQVEsQ0FBQ0UsSUFBSTtNQUNyQixLQUFLLDhCQUE4QjtNQUNuQyxLQUFLLGtDQUFrQztRQUN0QyxJQUNDLENBQUNKLGFBQWEsSUFDYixDQUFDLENBQUNBLGFBQWEsQ0FBQ0ssY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJTCxhQUFhLENBQUNNLFdBQVcsTUFDekUsQ0FBQ04sYUFBYSxDQUFDSyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUlMLGFBQWEsQ0FBQ08sVUFBVSxDQUFFLEVBQzFFO1VBQ0QsT0FBT0wsUUFBUSxDQUFDTSxJQUFJO1FBQ3JCLENBQUMsTUFBTSxJQUFJLENBQUNSLGFBQWEsQ0FBQ0ssY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJTCxhQUFhLENBQUNPLFVBQVUsRUFBRTtVQUNuRixPQUFPTCxRQUFRLENBQUNPLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLENBQUMsTUFBTTtVQUNOLE9BQU9QLFFBQVEsQ0FBQ1EsTUFBTSxDQUFDLENBQUM7UUFDekI7O01BQ0Q7UUFDQyxPQUFPYixhQUFhLENBQUNDLFdBQVcsQ0FBQ2EsSUFBSSxDQUFDakIsZUFBZSxFQUFFSyxJQUFJLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxDQUFDO0lBQUM7RUFFNUYsQ0FBQztFQUNEUCxlQUFlLENBQUNrQixvQkFBb0IsR0FBRyxVQUFVYixJQUFZLEVBQVU7SUFDdEU7SUFDQSxJQUFJYyxnQkFBZ0IsQ0FBQ2QsSUFBSSxDQUFDLEVBQUU7TUFDM0JBLElBQUksR0FBR2MsZ0JBQWdCLENBQUNkLElBQUksQ0FBQyxDQUFDQSxJQUFJO0lBQ25DLENBQUMsTUFBTTtNQUNOQSxJQUFJLEdBQUdGLGFBQWEsQ0FBQ2Usb0JBQW9CLENBQUNELElBQUksQ0FBQ2pCLGVBQWUsRUFBRUssSUFBSSxDQUFDO0lBQ3RFO0lBQ0EsT0FBT0EsSUFBSTtFQUNaLENBQUM7RUFDREwsZUFBZSxDQUFDb0IsbUJBQW1CLEdBQUcsVUFBVUMsUUFBZ0IsRUFBRWYsYUFBNkIsRUFBRUMsV0FBeUIsRUFBYztJQUN2SSxRQUFRYyxRQUFRO01BQ2YsS0FBSyx3Q0FBd0M7TUFDN0MsS0FBSyxvQkFBb0I7UUFDeEJkLFdBQVcsR0FBR2UsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFZixXQUFXLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUNBLFdBQVcsQ0FBQ2dCLEVBQUUsR0FBRyxJQUFJO1FBQ3JCO01BQ0Q7SUFBUTtJQUVULE1BQU1DLFNBQVMsR0FBR3hCLGVBQWUsQ0FBQ3lCLGdCQUFnQixDQUFDSixRQUFRLENBQUM7SUFDNUQsT0FBTyxJQUFJRyxTQUFTLENBQUNsQixhQUFhLEVBQUVDLFdBQVcsQ0FBQztFQUNqRCxDQUFDO0VBQUMsT0FDYVAsZUFBZTtBQUFBIn0=
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/merge","sap/ui/mdc/enum/BaseType","sap/ui/mdc/odata/TypeUtil"],function(e,a,t){"use strict";const s=Object.assign({},t);s.getBaseType=function(e,r,u){switch(e){case"sap.ui.model.odata.type.Date":return a.Date;case"sap.ui.model.odata.type.TimeOfDay":return a.Time;case"sap.ui.model.odata.type.Unit":case"sap.ui.model.odata.type.Currency":if(!r||(!r.hasOwnProperty("showMeasure")||r.showMeasure)&&(!r.hasOwnProperty("showNumber")||r.showNumber)){return a.Unit}else if(!r.hasOwnProperty("showNumber")||r.showNumber){return a.Numeric}else{return a.String}default:return t.getBaseType.call(s,e,r,u)}};s.getDataTypeClassName=function(e){const a={"Edm.Date":"sap.ui.model.odata.type.Date","Edm.TimeOfDay":"sap.ui.model.odata.type.TimeOfDay"};if(a[e]){e=a[e]}else{e=t.getDataTypeClassName.call(s,e)}return e};s.getDataTypeInstance=function(a,t,r){switch(a){case"sap.ui.model.odata.type.DateTimeOffset":case"Edm.DateTimeOffset":r=e({},r||{});r.V4=true;break;default:}const u=s.getDataTypeClass(a);return new u(t,r)};return s},false);
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit","sap/base/util/merge","sap/ui/mdc/enum/BaseType","sap/ui/mdc/odata/TypeUtil"],function(e,a,t,s){"use strict";var r=e.EDM_TYPE_MAPPING;const u=Object.assign({},s);u.getBaseType=function(e,a,r){switch(e){case"sap.ui.model.odata.type.Date":return t.Date;case"sap.ui.model.odata.type.TimeOfDay":return t.Time;case"sap.ui.model.odata.type.Unit":case"sap.ui.model.odata.type.Currency":if(!a||(!a.hasOwnProperty("showMeasure")||a.showMeasure)&&(!a.hasOwnProperty("showNumber")||a.showNumber)){return t.Unit}else if(!a.hasOwnProperty("showNumber")||a.showNumber){return t.Numeric}else{return t.String}default:return s.getBaseType.call(u,e,a,r)}};u.getDataTypeClassName=function(e){if(r[e]){e=r[e].type}else{e=s.getDataTypeClassName.call(u,e)}return e};u.getDataTypeInstance=function(e,t,s){switch(e){case"sap.ui.model.odata.type.DateTimeOffset":case"Edm.DateTimeOffset":s=a({},s||{});s.V4=true;break;default:}const r=u.getDataTypeClass(e);return new r(t,s)};return u},false);
6
6
  //# sourceMappingURL=TypeUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypeUtil.js","names":["sap","ui","define","merge","BaseType","ODataTypeUtil","ODataV4TypeUtil","Object","assign","getBaseType","type","formatOptions","constraints","Date","Time","hasOwnProperty","showMeasure","showNumber","Unit","Numeric","String","call","getDataTypeClassName","edmTypes","getDataTypeInstance","dataType","V4","TypeClass","getDataTypeClass"],"sources":["TypeUtil-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,sBAAuB,2BAA4B,6BAA8B,SAAUC,EAAOC,EAAUC,GACzH,aAEA,MAAMC,EAAkBC,OAAOC,OAAO,CAAC,EAAGH,GAC1CC,EAAgBG,YAAc,SAAUC,EAAMC,EAAeC,GAC3D,OAAQF,GACN,IAAK,+BACH,OAAON,EAASS,KAClB,IAAK,oCACH,OAAOT,EAASU,KAClB,IAAK,+BACL,IAAK,mCACH,IAAKH,KAAmBA,EAAcI,eAAe,gBAAkBJ,EAAcK,gBAAkBL,EAAcI,eAAe,eAAiBJ,EAAcM,YAAa,CAC9K,OAAOb,EAASc,IAClB,MAAO,IAAKP,EAAcI,eAAe,eAAiBJ,EAAcM,WAAY,CAClF,OAAOb,EAASe,OAClB,KAAO,CACL,OAAOf,EAASgB,MAClB,CAEF,QACE,OAAOf,EAAcI,YAAYY,KAAKf,EAAiBI,EAAMC,EAAeC,GAElF,EACAN,EAAgBgB,qBAAuB,SAAUZ,GAE/C,MAAMa,EAAW,CACf,WAAY,+BAEZ,gBAAiB,qCAGnB,GAAIA,EAASb,GAAO,CAClBA,EAAOa,EAASb,EAClB,KAAO,CACLA,EAAOL,EAAciB,qBAAqBD,KAAKf,EAAiBI,EAClE,CACA,OAAOA,CACT,EACAJ,EAAgBkB,oBAAsB,SAAUC,EAAUd,EAAeC,GACvE,OAAQa,GACN,IAAK,yCACL,IAAK,qBACHb,EAAcT,EAAM,CAAC,EAAGS,GAAe,CAAC,GACxCA,EAAYc,GAAK,KACjB,MACF,SAEF,MAAMC,EAAYrB,EAAgBsB,iBAAiBH,GACnD,OAAO,IAAIE,EAAUhB,EAAeC,EACtC,EACA,OAAON,CACT,EAAG"}
1
+ {"version":3,"file":"TypeUtil.js","names":["sap","ui","define","BindingToolkit","merge","BaseType","ODataTypeUtil","EDM_TYPE_MAPPING","ODataV4TypeUtil","Object","assign","getBaseType","type","formatOptions","constraints","Date","Time","hasOwnProperty","showMeasure","showNumber","Unit","Numeric","String","call","getDataTypeClassName","getDataTypeInstance","dataType","V4","TypeClass","getDataTypeClass"],"sources":["TypeUtil-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,qCAAsC,sBAAuB,2BAA4B,6BAA8B,SAAUC,EAAgBC,EAAOC,EAAUC,GAC/K,aAEA,IAAIC,EAAmBJ,EAAeI,iBACtC,MAAMC,EAAkBC,OAAOC,OAAO,CAAC,EAAGJ,GAC1CE,EAAgBG,YAAc,SAAUC,EAAMC,EAAeC,GAC3D,OAAQF,GACN,IAAK,+BACH,OAAOP,EAASU,KAClB,IAAK,oCACH,OAAOV,EAASW,KAClB,IAAK,+BACL,IAAK,mCACH,IAAKH,KAAmBA,EAAcI,eAAe,gBAAkBJ,EAAcK,gBAAkBL,EAAcI,eAAe,eAAiBJ,EAAcM,YAAa,CAC9K,OAAOd,EAASe,IAClB,MAAO,IAAKP,EAAcI,eAAe,eAAiBJ,EAAcM,WAAY,CAClF,OAAOd,EAASgB,OAClB,KAAO,CACL,OAAOhB,EAASiB,MAClB,CAEF,QACE,OAAOhB,EAAcK,YAAYY,KAAKf,EAAiBI,EAAMC,EAAeC,GAElF,EACAN,EAAgBgB,qBAAuB,SAAUZ,GAE/C,GAAIL,EAAiBK,GAAO,CAC1BA,EAAOL,EAAiBK,GAAMA,IAChC,KAAO,CACLA,EAAON,EAAckB,qBAAqBD,KAAKf,EAAiBI,EAClE,CACA,OAAOA,CACT,EACAJ,EAAgBiB,oBAAsB,SAAUC,EAAUb,EAAeC,GACvE,OAAQY,GACN,IAAK,yCACL,IAAK,qBACHZ,EAAcV,EAAM,CAAC,EAAGU,GAAe,CAAC,GACxCA,EAAYa,GAAK,KACjB,MACF,SAEF,MAAMC,EAAYpB,EAAgBqB,iBAAiBH,GACnD,OAAO,IAAIE,EAAUf,EAAeC,EACtC,EACA,OAAON,CACT,EAAG"}
@@ -1,3 +1,4 @@
1
+ import { EDM_TYPE_MAPPING } from "sap/fe/core/helpers/BindingToolkit";
1
2
  import merge from "sap/base/util/merge";
2
3
  import BaseType from "sap/ui/mdc/enum/BaseType";
3
4
  import type { Constraints, FormatOptions } from "sap/ui/mdc/odata/TypeUtil";
@@ -30,12 +31,8 @@ ODataV4TypeUtil.getBaseType = function (type: string, formatOptions?: FormatOpti
30
31
  };
31
32
  ODataV4TypeUtil.getDataTypeClassName = function (type: string): string {
32
33
  // V4 specific types
33
- const edmTypes = {
34
- "Edm.Date": "sap.ui.model.odata.type.Date", // V4 Date
35
- "Edm.TimeOfDay": "sap.ui.model.odata.type.TimeOfDay" // V4 constraints: {precision}
36
- } as any;
37
- if (edmTypes[type]) {
38
- type = edmTypes[type];
34
+ if (EDM_TYPE_MAPPING[type]) {
35
+ type = EDM_TYPE_MAPPING[type].type;
39
36
  } else {
40
37
  type = ODataTypeUtil.getDataTypeClassName.call(ODataV4TypeUtil, type);
41
38
  }