@sapui5/sap.fe.macros 1.141.2 → 1.143.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 (257) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
  14. package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
  15. package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
  16. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
  17. package/src/sap/fe/macros/Field.js +34 -17
  18. package/src/sap/fe/macros/Field.ts +64 -32
  19. package/src/sap/fe/macros/FooterContent.js +7 -3
  20. package/src/sap/fe/macros/FooterContent.tsx +8 -13
  21. package/src/sap/fe/macros/KPITag.js +6 -6
  22. package/src/sap/fe/macros/KPITag.tsx +8 -6
  23. package/src/sap/fe/macros/MacroAPI.js +4 -3
  24. package/src/sap/fe/macros/MacroAPI.ts +3 -3
  25. package/src/sap/fe/macros/MessageButton.js +4 -3
  26. package/src/sap/fe/macros/MessageButton.tsx +7 -3
  27. package/src/sap/fe/macros/MicroChart.js +12 -7
  28. package/src/sap/fe/macros/MicroChart.tsx +9 -3
  29. package/src/sap/fe/macros/MultiValueField.js +22 -36
  30. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  31. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  32. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  33. package/src/sap/fe/macros/Share.js +7 -7
  34. package/src/sap/fe/macros/Share.tsx +9 -6
  35. package/src/sap/fe/macros/Status.js +39 -11
  36. package/src/sap/fe/macros/Status.tsx +25 -5
  37. package/src/sap/fe/macros/ValueHelp.js +5 -2
  38. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  39. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  40. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  41. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  42. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  43. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  44. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  45. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  46. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  47. package/src/sap/fe/macros/chart/Action.js +25 -2
  48. package/src/sap/fe/macros/chart/Action.ts +13 -0
  49. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  50. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  51. package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
  52. package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
  53. package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
  54. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
  55. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  56. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  57. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
  58. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
  59. package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
  60. package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
  61. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  62. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  63. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
  64. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
  65. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  66. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  67. package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
  68. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
  69. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
  70. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
  71. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  72. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  73. package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
  74. package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
  75. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  76. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  77. package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
  78. package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
  79. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  80. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  81. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  82. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  83. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  84. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  85. package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
  86. package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
  87. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  88. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  89. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  90. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  91. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
  92. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
  93. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
  94. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
  95. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
  96. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
  97. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  98. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  99. package/src/sap/fe/macros/form/Form.block.js +27 -2
  100. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  101. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  102. package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
  103. package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
  104. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  105. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  106. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  107. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  108. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  109. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  110. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  111. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  112. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  113. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  114. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  115. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  116. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  117. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  118. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  119. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  120. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  121. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  122. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  123. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  124. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  125. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  126. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  127. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  128. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  129. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  130. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  131. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
  132. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
  133. package/src/sap/fe/macros/library.js +5 -6
  134. package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
  135. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  136. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  137. package/src/sap/fe/macros/messagebundle.properties +13 -5
  138. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  140. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  143. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  144. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  145. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  146. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  147. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  148. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  149. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
  150. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  155. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  158. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  159. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  160. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  162. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  164. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  167. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  168. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  169. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  170. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  171. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  172. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  173. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  174. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  175. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  176. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  177. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  178. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  179. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  180. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  181. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  182. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  183. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  184. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  185. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  186. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  187. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  188. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  189. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
  190. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
  191. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  192. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  193. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  194. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  195. package/src/sap/fe/macros/table/Action.js +21 -5
  196. package/src/sap/fe/macros/table/Action.ts +14 -4
  197. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  198. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  199. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  200. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  201. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  202. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  203. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  204. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  205. package/src/sap/fe/macros/table/Column.js +3 -2
  206. package/src/sap/fe/macros/table/Column.ts +1 -1
  207. package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
  208. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
  209. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  210. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  211. package/src/sap/fe/macros/table/Table.block.js +74 -30
  212. package/src/sap/fe/macros/table/Table.block.tsx +77 -14
  213. package/src/sap/fe/macros/table/TableAPI.js +175 -132
  214. package/src/sap/fe/macros/table/TableAPI.ts +67 -30
  215. package/src/sap/fe/macros/table/TableDefinition.js +20 -3
  216. package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
  217. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
  218. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
  219. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  220. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  221. package/src/sap/fe/macros/table/TableRuntime.js +25 -13
  222. package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
  223. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  224. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  225. package/src/sap/fe/macros/table/Utils.js +9 -3
  226. package/src/sap/fe/macros/table/Utils.ts +14 -8
  227. package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
  228. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
  229. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  230. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  231. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
  232. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
  233. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  234. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  235. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
  236. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
  237. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
  238. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
  239. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  240. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  241. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  242. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  243. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
  244. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
  245. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
  246. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
  247. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
  248. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
  249. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  250. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  251. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  252. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  253. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  254. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  255. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  256. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  257. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -2,10 +2,10 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog", "sap/fe/core/controllerextensions/routing/NavigationReason", "sap/fe/core/controls/Any", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/DeleteHelper", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/PasteHelper", "sap/fe/core/helpers/PromiseKeeper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/MacroAPI", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableCreationOptions", "sap/fe/macros/table/TableHelper", "sap/fe/macros/table/TableRuntime", "sap/fe/macros/table/Utils", "sap/fe/macros/table/adapter/TablePVToState", "sap/fe/macros/table/massEdit/MassEditDialogHelper", "sap/fe/navigation/PresentationVariant", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageType", "sap/m/MessageBox", "sap/m/MessageToast", "sap/m/Text", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Element", "sap/ui/core/Fragment", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/library", "sap/ui/core/message/Message", "sap/ui/core/util/XMLPreprocessor", "sap/ui/mdc/p13n/StateUtil", "../mdc/adapter/StateHelper", "./TableDefinition", "./TableEventHandlerProvider", "./mixin/ColumnManagement", "./mixin/ContextMenuHandler", "./mixin/EmptyRowsHandler", "./mixin/TableAPIStateHandler", "./mixin/TableExport", "./mixin/TableHierarchy", "./mixin/TableOptimisticBatch", "./mixin/TableSharing"], function (Log, deepClone, BindingToolkit, ClassSupport, jsx, CommonUtils, BuildingBlockTemplateProcessor, NotApplicableContextDialog, NavigationReason, Any, ManifestSettings, MetaModelConverter, Table, StandardActions, DeleteHelper, FPMHelper, PasteHelper, PromiseKeeper, ResourceModelHelper, StableIdHelper, DataModelPathHelper, UIFormatters, MacroAPI, FieldTemplating, FilterUtils, MdcTableTemplate, TableCreationOptions, TableHelper, TableRuntime, TableUtils, TablePVToState, MassEditDialogHelper, PresentationVariantClass, IllustratedMessage, IllustratedMessageType, MessageBox, MessageToast, Text, ManagedObjectMetadata, UI5Element, Fragment, Library, Messaging, library, Message, XMLPreprocessor, StateUtil, StateHelper, TableDefinition, TableEventHandlerProvider, ColumnManagement, ContextMenuHandler, EmptyRowsHandler, TableAPIStateHandler, TableExport, TableHierarchy, TableOptimisticBatch, TableSharing) {
5
+ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog", "sap/fe/core/controllerextensions/routing/NavigationReason", "sap/fe/core/controls/Any", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/DeleteHelper", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/PasteHelper", "sap/fe/core/helpers/PromiseKeeper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/MacroAPI", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableCreationOptions", "sap/fe/macros/table/TableHelper", "sap/fe/macros/table/TableRuntime", "sap/fe/macros/table/Utils", "sap/fe/macros/table/adapter/TablePVToState", "sap/fe/macros/table/massEdit/MassEditDialogHelper", "sap/fe/navigation/PresentationVariant", "sap/m/FlexItemData", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageType", "sap/m/MessageBox", "sap/m/MessageToast", "sap/m/Text", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Element", "sap/ui/core/Fragment", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/library", "sap/ui/core/message/Message", "sap/ui/core/util/XMLPreprocessor", "sap/ui/mdc/p13n/StateUtil", "../mdc/adapter/StateHelper", "./TableDefinition", "./TableEventHandlerProvider", "./mixin/ColumnManagement", "./mixin/ContextMenuHandler", "./mixin/EmptyRowsHandler", "./mixin/TableAPIStateHandler", "./mixin/TableExport", "./mixin/TableHierarchy", "./mixin/TableOptimisticBatch", "./mixin/TableSharing"], function (Log, deepClone, BindingToolkit, ClassSupport, jsx, CommonUtils, BuildingBlockTemplateProcessor, NotApplicableContextDialog, NavigationReason, Any, ManifestSettings, MetaModelConverter, Table, StandardActions, DeleteHelper, FPMHelper, PasteHelper, PromiseKeeper, ResourceModelHelper, StableIdHelper, DataModelPathHelper, UIFormatters, MacroAPI, FieldTemplating, FilterUtils, MdcTableTemplate, TableCreationOptions, TableHelper, TableRuntime, TableUtils, TablePVToState, MassEditDialogHelper, PresentationVariantClass, FlexItemData, IllustratedMessage, IllustratedMessageType, MessageBox, MessageToast, Text, ManagedObjectMetadata, UI5Element, Fragment, Library, Messaging, library, Message, XMLPreprocessor, StateUtil, StateHelper, TableDefinition, TableEventHandlerProvider, ColumnManagement, ContextMenuHandler, EmptyRowsHandler, TableAPIStateHandler, TableExport, TableHierarchy, TableOptimisticBatch, TableSharing) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _dec104, _dec105, _dec106, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66, _descriptor67, _descriptor68, _descriptor69;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _dec104, _dec105, _dec106, _dec107, _dec108, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66, _descriptor67, _descriptor68, _descriptor69, _descriptor70;
9
9
  var createTableDefinition = TableDefinition.createTableDefinition;
10
10
  var TitleLevel = library.TitleLevel;
11
11
  var convertPVToState = TablePVToState.convertPVToState;
@@ -111,25 +111,25 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
111
111
  altTypes: ["sap.fe.macros.table.ActionGroup", "sap.fe.macros.table.ActionOverride", "sap.fe.macros.table.ActionGroupOverride"],
112
112
  multiple: true
113
113
  }), _dec36 = aggregation({
114
+ type: "sap.fe.macros.table.OverflowGroup",
115
+ multiple: true
116
+ }), _dec37 = aggregation({
114
117
  type: "sap.fe.macros.table.Column",
115
118
  altTypes: ["sap.fe.macros.table.ColumnOverride"],
116
119
  multiple: true
117
- }), _dec37 = property({
118
- type: "boolean"
119
120
  }), _dec38 = property({
120
- type: "string"
121
+ type: "boolean"
121
122
  }), _dec39 = property({
123
+ type: "string"
124
+ }), _dec40 = property({
122
125
  type: "boolean",
123
126
  defaultValue: true
124
- }), _dec40 = property({
127
+ }), _dec41 = property({
125
128
  type: "boolean",
126
129
  defaultValue: false
127
- }), _dec41 = property({
130
+ }), _dec42 = property({
128
131
  type: "string",
129
132
  allowedValues: ["illustratedMessage-Auto", "illustratedMessage-Base", "illustratedMessage-Dialog", "illustratedMessage-Medium", "illustratedMessage-Dot", "illustratedMessage-ExtraSmall", "illustratedMessage-Scene", "illustratedMessage-Large", "illustratedMessage-Spot", "illustratedMessage-Small", "text"]
130
- }), _dec42 = property({
131
- type: "boolean",
132
- defaultValue: false
133
133
  }), _dec43 = property({
134
134
  type: "boolean",
135
135
  defaultValue: false
@@ -140,7 +140,8 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
140
140
  type: "boolean",
141
141
  defaultValue: false
142
142
  }), _dec46 = property({
143
- type: "string"
143
+ type: "boolean",
144
+ defaultValue: false
144
145
  }), _dec47 = property({
145
146
  type: "string"
146
147
  }), _dec48 = property({
@@ -148,32 +149,34 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
148
149
  }), _dec49 = property({
149
150
  type: "string"
150
151
  }), _dec50 = property({
152
+ type: "string",
153
+ defaultValue: ""
154
+ }), _dec51 = property({
151
155
  type: "sap.ui.core.TitleLevel",
152
156
  defaultValue: TitleLevel.Auto
153
- }), _dec51 = property({
154
- type: "sap.ui.core.TitleLevel"
155
157
  }), _dec52 = property({
156
- type: "int"
158
+ type: "sap.ui.core.TitleLevel"
157
159
  }), _dec53 = property({
158
- type: "boolean"
160
+ type: "int"
159
161
  }), _dec54 = property({
160
- type: "string"
162
+ type: "boolean"
161
163
  }), _dec55 = property({
162
164
  type: "string"
163
165
  }), _dec56 = property({
164
- type: "boolean"
166
+ type: "string"
165
167
  }), _dec57 = property({
168
+ type: "boolean"
169
+ }), _dec58 = property({
166
170
  type: "boolean",
167
171
  defaultValue: false
168
- }), _dec58 = property({
172
+ }), _dec59 = property({
169
173
  type: "boolean",
170
174
  isBindingInfo: true
171
- }), _dec59 = property({
172
- type: "string"
173
175
  }), _dec60 = property({
174
- type: "string"
176
+ type: "string",
177
+ defaultValue: ""
175
178
  }), _dec61 = property({
176
- type: "boolean"
179
+ type: "string"
177
180
  }), _dec62 = property({
178
181
  type: "boolean"
179
182
  }), _dec63 = property({
@@ -181,24 +184,26 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
181
184
  }), _dec64 = property({
182
185
  type: "boolean"
183
186
  }), _dec65 = property({
187
+ type: "boolean"
188
+ }), _dec66 = property({
184
189
  type: "int"
185
- }), _dec66 = aggregation({
190
+ }), _dec67 = aggregation({
186
191
  type: "sap.fe.macros.table.TableCreationOptions",
187
192
  defaultClass: TableCreationOptions
188
- }), _dec67 = aggregation({
193
+ }), _dec68 = aggregation({
189
194
  type: "sap.m.IllustratedMessage",
190
195
  altTypes: ["sap.m.Text"],
191
196
  forwarding: {
192
197
  getter: "getMDCTable",
193
198
  aggregation: "noData"
194
199
  }
195
- }), _dec68 = aggregation({
196
- type: "sap.fe.macros.table.AnalyticalConfiguration"
197
200
  }), _dec69 = aggregation({
198
- type: "sap.fe.macros.table.QuickVariantSelection"
201
+ type: "sap.fe.macros.table.AnalyticalConfiguration"
199
202
  }), _dec70 = aggregation({
203
+ type: "sap.fe.macros.table.QuickVariantSelection"
204
+ }), _dec71 = aggregation({
200
205
  type: "sap.fe.macros.table.MassEdit"
201
- }), _dec71 = event(), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = event(), _dec77 = event(), _dec78 = event(), _dec79 = xmlEventHandler(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec104 = xmlEventHandler(), _dec105 = xmlEventHandler(), _dec106 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
206
+ }), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = event(), _dec77 = event(), _dec78 = event(), _dec79 = event(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec104 = xmlEventHandler(), _dec105 = xmlEventHandler(), _dec106 = xmlEventHandler(), _dec107 = xmlEventHandler(), _dec108 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
202
207
  function TableAPI(mSettings) {
203
208
  var _this;
204
209
  for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
@@ -233,43 +238,44 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
233
238
  _initializerDefineProperty(_this, "selectionMode", _descriptor24, _this);
234
239
  _initializerDefineProperty(_this, "condensedTableLayout", _descriptor25, _this);
235
240
  _initializerDefineProperty(_this, "actions", _descriptor26, _this);
236
- _initializerDefineProperty(_this, "columns", _descriptor27, _this);
241
+ _initializerDefineProperty(_this, "actionOverflowGroups", _descriptor27, _this);
242
+ _initializerDefineProperty(_this, "columns", _descriptor28, _this);
237
243
  /**
238
244
  * An expression that allows you to control the 'read-only' state of the table.
239
245
  *
240
246
  * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.
241
247
  */
242
- _initializerDefineProperty(_this, "readOnly", _descriptor28, _this);
248
+ _initializerDefineProperty(_this, "readOnly", _descriptor29, _this);
243
249
  /**
244
250
  * ID of the FilterBar building block associated with the table.
245
251
  */
246
252
  //@association({ type: "sap.fe.macros.filterBar.FilterBarAPI" })
247
- _initializerDefineProperty(_this, "filterBar", _descriptor29, _this);
253
+ _initializerDefineProperty(_this, "filterBar", _descriptor30, _this);
248
254
  /**
249
255
  * Specifies if the column width is automatically calculated.
250
256
  */
251
- _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor30, _this);
257
+ _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor31, _this);
252
258
  /**
253
259
  * Indicates if the column header should be a part of the width calculation.
254
260
  */
255
- _initializerDefineProperty(_this, "widthIncludingColumnHeader", _descriptor31, _this);
261
+ _initializerDefineProperty(_this, "widthIncludingColumnHeader", _descriptor32, _this);
256
262
  /**
257
263
  * Changes the size of the IllustratedMessage in the table, or removes it completely.
258
264
  * Allowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.
259
265
  */
260
- _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor32, _this);
261
- _initializerDefineProperty(_this, "dataInitialized", _descriptor33, _this);
262
- _initializerDefineProperty(_this, "bindingSuspended", _descriptor34, _this);
263
- _initializerDefineProperty(_this, "outDatedBinding", _descriptor35, _this);
264
- _initializerDefineProperty(_this, "isAlp", _descriptor36, _this);
265
- _initializerDefineProperty(_this, "variantManagement", _descriptor37, _this);
266
- _initializerDefineProperty(_this, "ignoredFields", _descriptor38, _this);
267
- _initializerDefineProperty(_this, "id", _descriptor39, _this);
268
- _initializerDefineProperty(_this, "fieldMode", _descriptor40, _this);
269
- _initializerDefineProperty(_this, "headerLevel", _descriptor41, _this);
270
- _initializerDefineProperty(_this, "headerStyle", _descriptor42, _this);
271
- _initializerDefineProperty(_this, "exportRequestSize", _descriptor43, _this);
272
- _initializerDefineProperty(_this, "initialLoad", _descriptor44, _this);
266
+ _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor33, _this);
267
+ _initializerDefineProperty(_this, "dataInitialized", _descriptor34, _this);
268
+ _initializerDefineProperty(_this, "bindingSuspended", _descriptor35, _this);
269
+ _initializerDefineProperty(_this, "outDatedBinding", _descriptor36, _this);
270
+ _initializerDefineProperty(_this, "isAlp", _descriptor37, _this);
271
+ _initializerDefineProperty(_this, "variantManagement", _descriptor38, _this);
272
+ _initializerDefineProperty(_this, "ignoredFields", _descriptor39, _this);
273
+ _initializerDefineProperty(_this, "id", _descriptor40, _this);
274
+ _initializerDefineProperty(_this, "fieldMode", _descriptor41, _this);
275
+ _initializerDefineProperty(_this, "headerLevel", _descriptor42, _this);
276
+ _initializerDefineProperty(_this, "headerStyle", _descriptor43, _this);
277
+ _initializerDefineProperty(_this, "exportRequestSize", _descriptor44, _this);
278
+ _initializerDefineProperty(_this, "initialLoad", _descriptor45, _this);
273
279
  /**
274
280
  * Controls which options should be enabled for the table personalization dialog.
275
281
  *
@@ -285,48 +291,48 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
285
291
  *<br/>
286
292
  * The Group option is only applicable to analytical tables and responsive tables.<br/>
287
293
  */
288
- _initializerDefineProperty(_this, "personalization", _descriptor45, _this);
294
+ _initializerDefineProperty(_this, "personalization", _descriptor46, _this);
289
295
  /**
290
296
  * Specifies the header text that is shown in the table.
291
297
  *
292
298
  */
293
- _initializerDefineProperty(_this, "header", _descriptor46, _this);
294
- _initializerDefineProperty(_this, "useBasicSearch", _descriptor47, _this);
299
+ _initializerDefineProperty(_this, "header", _descriptor47, _this);
300
+ _initializerDefineProperty(_this, "useBasicSearch", _descriptor48, _this);
295
301
  /**
296
302
  * Specifies if the empty rows are enabled. This allows to have dynamic enablement of the empty rows using the setter function.
297
303
  */
298
- _initializerDefineProperty(_this, "emptyRowsEnabled", _descriptor48, _this);
304
+ _initializerDefineProperty(_this, "emptyRowsEnabled", _descriptor49, _this);
299
305
  /**
300
306
  * Controls if the header text should be shown or not.
301
307
  *
302
308
  */
303
- _initializerDefineProperty(_this, "headerVisible", _descriptor49, _this);
304
- _initializerDefineProperty(_this, "tabTitle", _descriptor50, _this);
305
- _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor51, _this);
306
- _initializerDefineProperty(_this, "inMultiView", _descriptor52, _this);
307
- _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor53, _this);
308
- _initializerDefineProperty(_this, "enablePastingOfComputedProperties", _descriptor54, _this);
309
- _initializerDefineProperty(_this, "enableSelectAll", _descriptor55, _this);
310
- _initializerDefineProperty(_this, "selectionLimit", _descriptor56, _this);
311
- _initializerDefineProperty(_this, "creationMode", _descriptor57, _this);
309
+ _initializerDefineProperty(_this, "headerVisible", _descriptor50, _this);
310
+ _initializerDefineProperty(_this, "tabTitle", _descriptor51, _this);
311
+ _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor52, _this);
312
+ _initializerDefineProperty(_this, "inMultiView", _descriptor53, _this);
313
+ _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor54, _this);
314
+ _initializerDefineProperty(_this, "enablePastingOfComputedProperties", _descriptor55, _this);
315
+ _initializerDefineProperty(_this, "enableSelectAll", _descriptor56, _this);
316
+ _initializerDefineProperty(_this, "selectionLimit", _descriptor57, _this);
317
+ _initializerDefineProperty(_this, "creationMode", _descriptor58, _this);
312
318
  /**
313
319
  * Aggregation to forward the IllustratedMessage control to the mdc control.
314
320
  * @public
315
321
  */
316
- _initializerDefineProperty(_this, "noData", _descriptor58, _this);
322
+ _initializerDefineProperty(_this, "noData", _descriptor59, _this);
317
323
  /**
318
324
  * A set of options that can be configured to control the aggregation behavior
319
325
  * @public
320
326
  */
321
- _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor59, _this);
327
+ _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor60, _this);
322
328
  /**
323
329
  * Aggregate quickVariantSelection of the table.
324
330
  */
325
- _initializerDefineProperty(_this, "quickVariantSelection", _descriptor60, _this);
331
+ _initializerDefineProperty(_this, "quickVariantSelection", _descriptor61, _this);
326
332
  /**
327
333
  * Aggregate mass edit of the table.
328
334
  */
329
- _initializerDefineProperty(_this, "massEdit", _descriptor61, _this);
335
+ _initializerDefineProperty(_this, "massEdit", _descriptor62, _this);
330
336
  /**
331
337
  * An event is triggered when the table is about to be rebound. This event contains information about the binding info.
332
338
  *
@@ -339,30 +345,30 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
339
345
  * You can use this event to read the binding info.
340
346
  * You can use this event to add: Selects.
341
347
  */
342
- _initializerDefineProperty(_this, "beforeRebindTable", _descriptor62, _this);
348
+ _initializerDefineProperty(_this, "beforeRebindTable", _descriptor63, _this);
343
349
  /**
344
350
  * An event is triggered when the user chooses a row; the event contains information about which row is chosen.
345
351
  *
346
352
  * You can set this in order to handle the navigation manually.
347
353
  */
348
- _initializerDefineProperty(_this, "rowPress", _descriptor63, _this);
354
+ _initializerDefineProperty(_this, "rowPress", _descriptor64, _this);
349
355
  /**
350
356
  * An event is triggered when the user switched between view in an ALP.
351
357
  */
352
- _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor64, _this);
358
+ _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor65, _this);
353
359
  /**
354
360
  * An event is triggered when the user saved the variant.
355
361
  */
356
- _initializerDefineProperty(_this, "variantSaved", _descriptor65, _this);
362
+ _initializerDefineProperty(_this, "variantSaved", _descriptor66, _this);
357
363
  /**
358
364
  * An event is triggered when the user selected a variant.
359
365
  */
360
- _initializerDefineProperty(_this, "variantSelected", _descriptor66, _this);
366
+ _initializerDefineProperty(_this, "variantSelected", _descriptor67, _this);
361
367
  /**
362
368
  * An event triggered when the Table list binding changes.
363
369
  */
364
- _initializerDefineProperty(_this, "listBindingChange", _descriptor67, _this);
365
- _initializerDefineProperty(_this, "internalDataRequested", _descriptor68, _this);
370
+ _initializerDefineProperty(_this, "listBindingChange", _descriptor68, _this);
371
+ _initializerDefineProperty(_this, "internalDataRequested", _descriptor69, _this);
366
372
  _this.ignoreContextChangeEvent = false;
367
373
  _this.lock = {};
368
374
  _this.storedEvents = [];
@@ -370,10 +376,15 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
370
376
  /**
371
377
  * An event triggered when the selection in the table changes.
372
378
  */
373
- _initializerDefineProperty(_this, "selectionChange", _descriptor69, _this);
379
+ _initializerDefineProperty(_this, "selectionChange", _descriptor70, _this);
374
380
  _this.enhancedPropertyInfos = [];
375
381
  _this.propertyInfos = [];
376
382
  _this.originalTableDefinition = _this.tableDefinition;
383
+ if (!_this.getLayoutData()) {
384
+ _this.setLayoutData(new FlexItemData({
385
+ maxWidth: "100%"
386
+ }));
387
+ }
377
388
  _this.attachStateChangeHandler();
378
389
  _this.attachManifestEvents();
379
390
  _this.overrideRowPress = _this.hasListeners("rowPress");
@@ -440,7 +451,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
440
451
  if (metaPath) {
441
452
  suffix = metaPath.startsWith("/") ? metaPath.substring(1) : metaPath;
442
453
  }
443
- title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH");
454
+ title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH", undefined, suffix);
444
455
  description = resourceModel.getText("T_TABLE_AND_CHART_NO_DATA_TEXT", undefined, suffix);
445
456
  }
446
457
  } else {
@@ -481,6 +492,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
481
492
  this.content?.setHeaderLevel(consumerData.titleLevel);
482
493
  }
483
494
  };
495
+ _proto.init = function init() {
496
+ return _MacroAPI.prototype.init.call(this, true);
497
+ };
484
498
  _proto.getIgnoreContextChangeEvent = function getIgnoreContextChangeEvent() {
485
499
  return this.ignoreContextChangeEvent;
486
500
  };
@@ -529,6 +543,27 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
529
543
  return this.isContextMenuActive() ? this.getBindingContext("internal")?.getProperty("contextmenu/selectedContexts") ?? [] : this.content.getSelectedContexts();
530
544
  }
531
545
 
546
+ /**
547
+ * Returns all contexts that are loaded in the table.
548
+ *
549
+ * See also the {@link sap.ui.model.odata.v4.ODataListBinding#getAllCurrentContexts} method.
550
+ * @returns All contexts of the table's list binding, or undefined if the table data is not yet loaded.
551
+ * @public
552
+ * @since 1.142.0
553
+ */;
554
+ _proto.getAllCurrentContexts = function getAllCurrentContexts() {
555
+ return this.content?.getRowBinding()?.getAllCurrentContexts();
556
+ }
557
+
558
+ /**
559
+ * Clears the selection.
560
+ * @public
561
+ * @since 1.142.0
562
+ */;
563
+ _proto.clearSelection = function clearSelection() {
564
+ this.content?.clearSelection();
565
+ }
566
+
532
567
  /**
533
568
  * Adds a message to the table.
534
569
  *
@@ -871,6 +906,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
871
906
  _proto.onRowPressed = function onRowPressed(oEvent) {
872
907
  this.fireEvent("rowPress", oEvent.getParameters());
873
908
  };
909
+ _proto.onNoop = function onNoop() {
910
+ // Do nothing, this is used to ensure the table action are fired in responsive table
911
+ };
874
912
  _proto.isTableRowNavigationPossible = function isTableRowNavigationPossible(context) {
875
913
  // prevent navigation to an empty row
876
914
  const emptyRow = context.isInactive() == true && context.isTransient() === true;
@@ -1022,7 +1060,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1022
1060
  }), action === "Copy" ? this.requestSideEffectsForCopyAction(srcContext) : this.requestSideEffectsForChangeNextSiblingAction(srcContext)]);
1023
1061
  } catch (error) {
1024
1062
  MessageToast.show(this.getTranslatedText("M_TABLEDROP_FAILED", [""]));
1025
- Log.error(`The ${action} operation is unsuccessful. ` + error.message ?? "");
1063
+ Log.error(`The ${action} operation is unsuccessful. ` + (error.message ?? ""));
1026
1064
  }
1027
1065
  table.setBusy(false);
1028
1066
  internalContext.setProperty(`nodeUpdatesInfo/pastableContexts`, []);
@@ -1274,19 +1312,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1274
1312
  * @alias sap.fe.macros.TableAPI
1275
1313
  */;
1276
1314
  _proto.getFilterBarControl = function getFilterBarControl(filterBarRefId) {
1277
- // 'filterBar' property of macros:Table(passed as customData) might be
1278
- // 1. A localId wrt View(FPM explorer example).
1279
- // 2. Absolute Id(this was not supported in older versions).
1280
- // 3. A localId wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId.
1281
- // 'filterBar' was supported earlier as an 'association' to the 'mdc:Table' control inside 'macros:Table' in prior versions.
1282
- // In newer versions 'filterBar' is used like an association to 'macros:TableAPI'.
1283
- // This means that the Id is relative to 'macros:TableAPI'.
1284
- // This scenario happens in case of FilterBar and Table in a custom sections in OP of FEV4.
1285
-
1286
- const tableAPIId = this?.getId();
1287
- const tableAPILocalId = this.data("tableAPILocalId");
1288
- const potentialfilterBarId = tableAPILocalId && filterBarRefId && tableAPIId && tableAPIId.replace(new RegExp(tableAPILocalId + "$"), filterBarRefId); // 3
1289
- return this.getPageController()?.byId(filterBarRefId) || UI5Element.getElementById(filterBarRefId) || UI5Element.getElementById(potentialfilterBarId);
1315
+ return this.getPageController()?.byId(filterBarRefId) ||
1316
+ // Local id wrt View(FPM explorer example)
1317
+ UI5Element.getElementById(filterBarRefId) ||
1318
+ // Absolute Id(this was not supported in older versions)
1319
+ UI5Element.getElementById(`${this.getId().substring(0, this.getId().lastIndexOf("--") + 2)}${filterBarRefId}`); // Local id wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId
1290
1320
  }
1291
1321
 
1292
1322
  /**
@@ -1647,7 +1677,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1647
1677
  };
1648
1678
  _proto.destroy = function destroy(suppressInvalidate) {
1649
1679
  // We release hold on messageHandler by the control if there is one.
1650
- this.getPageController(false)?.messageHandler?.releaseHoldByControl(this);
1680
+ this.getPageController()?.messageHandler?.releaseHoldByControl(this);
1651
1681
  _MacroAPI.prototype.destroy.call(this, suppressInvalidate);
1652
1682
  };
1653
1683
  // The dialog used to display the table in full screen mode
@@ -1920,7 +1950,15 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1920
1950
  const metaModel = owner.getAppComponent().getMetaModel();
1921
1951
  const metaPathContext = metaModel.createBindingContext(fullMetaPath);
1922
1952
  this.tableDefinition = createTableDefinition(this);
1953
+ // Set Default values for properties based on table definition
1954
+ this.threshold ??= this.tableDefinition.annotation.threshold ?? this.tableDefinition.control.threshold;
1923
1955
  this.updatePropertiesFromTableDefinition();
1956
+
1957
+ // default creation mode
1958
+ this.creationMode ??= new TableCreationOptions({
1959
+ name: this.tableDefinition.annotation.create.mode,
1960
+ createAtEnd: this.tableDefinition.annotation.create.append
1961
+ });
1924
1962
  this.updateColumnsVisibility(this.tableDefinition.control.ignoredFields, this.tableDefinition);
1925
1963
  const collectionEntity = this.contextObjectPath.convertedTypes.resolvePath(this.tableDefinition.annotation.collection).target;
1926
1964
  const entityType = collectionEntity?.entityType ?? collectionEntity?.targetType;
@@ -2125,222 +2163,227 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
2125
2163
  enumerable: true,
2126
2164
  writable: true,
2127
2165
  initializer: null
2128
- }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec36], {
2166
+ }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "actionOverflowGroups", [_dec36], {
2167
+ configurable: true,
2168
+ enumerable: true,
2169
+ writable: true,
2170
+ initializer: null
2171
+ }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec37], {
2129
2172
  configurable: true,
2130
2173
  enumerable: true,
2131
2174
  writable: true,
2132
2175
  initializer: null
2133
- }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec37], {
2176
+ }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec38], {
2134
2177
  configurable: true,
2135
2178
  enumerable: true,
2136
2179
  writable: true,
2137
2180
  initializer: null
2138
- }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec38], {
2181
+ }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec39], {
2139
2182
  configurable: true,
2140
2183
  enumerable: true,
2141
2184
  writable: true,
2142
2185
  initializer: null
2143
- }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec39], {
2186
+ }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec40], {
2144
2187
  configurable: true,
2145
2188
  enumerable: true,
2146
2189
  writable: true,
2147
2190
  initializer: null
2148
- }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "widthIncludingColumnHeader", [_dec40], {
2191
+ }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "widthIncludingColumnHeader", [_dec41], {
2149
2192
  configurable: true,
2150
2193
  enumerable: true,
2151
2194
  writable: true,
2152
2195
  initializer: null
2153
- }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec41], {
2196
+ }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec42], {
2154
2197
  configurable: true,
2155
2198
  enumerable: true,
2156
2199
  writable: true,
2157
2200
  initializer: null
2158
- }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "dataInitialized", [_dec42], {
2201
+ }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "dataInitialized", [_dec43], {
2159
2202
  configurable: true,
2160
2203
  enumerable: true,
2161
2204
  writable: true,
2162
2205
  initializer: null
2163
- }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "bindingSuspended", [_dec43], {
2206
+ }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "bindingSuspended", [_dec44], {
2164
2207
  configurable: true,
2165
2208
  enumerable: true,
2166
2209
  writable: true,
2167
2210
  initializer: null
2168
- }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "outDatedBinding", [_dec44], {
2211
+ }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "outDatedBinding", [_dec45], {
2169
2212
  configurable: true,
2170
2213
  enumerable: true,
2171
2214
  writable: true,
2172
2215
  initializer: null
2173
- }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec45], {
2216
+ }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec46], {
2174
2217
  configurable: true,
2175
2218
  enumerable: true,
2176
2219
  writable: true,
2177
2220
  initializer: null
2178
- }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec46], {
2221
+ }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec47], {
2179
2222
  configurable: true,
2180
2223
  enumerable: true,
2181
2224
  writable: true,
2182
2225
  initializer: null
2183
- }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec47], {
2226
+ }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec48], {
2184
2227
  configurable: true,
2185
2228
  enumerable: true,
2186
2229
  writable: true,
2187
2230
  initializer: null
2188
- }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec48], {
2231
+ }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec49], {
2189
2232
  configurable: true,
2190
2233
  enumerable: true,
2191
2234
  writable: true,
2192
2235
  initializer: null
2193
- }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec49], {
2236
+ }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec50], {
2194
2237
  configurable: true,
2195
2238
  enumerable: true,
2196
2239
  writable: true,
2197
2240
  initializer: null
2198
- }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec50], {
2241
+ }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec51], {
2199
2242
  configurable: true,
2200
2243
  enumerable: true,
2201
2244
  writable: true,
2202
2245
  initializer: null
2203
- }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec51], {
2246
+ }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec52], {
2204
2247
  configurable: true,
2205
2248
  enumerable: true,
2206
2249
  writable: true,
2207
2250
  initializer: null
2208
- }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "exportRequestSize", [_dec52], {
2251
+ }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "exportRequestSize", [_dec53], {
2209
2252
  configurable: true,
2210
2253
  enumerable: true,
2211
2254
  writable: true,
2212
2255
  initializer: null
2213
- }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec53], {
2256
+ }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec54], {
2214
2257
  configurable: true,
2215
2258
  enumerable: true,
2216
2259
  writable: true,
2217
2260
  initializer: null
2218
- }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec54], {
2261
+ }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec55], {
2219
2262
  configurable: true,
2220
2263
  enumerable: true,
2221
2264
  writable: true,
2222
2265
  initializer: null
2223
- }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec55], {
2266
+ }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec56], {
2224
2267
  configurable: true,
2225
2268
  enumerable: true,
2226
2269
  writable: true,
2227
2270
  initializer: null
2228
- }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "useBasicSearch", [_dec56], {
2271
+ }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "useBasicSearch", [_dec57], {
2229
2272
  configurable: true,
2230
2273
  enumerable: true,
2231
2274
  writable: true,
2232
2275
  initializer: null
2233
- }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "emptyRowsEnabled", [_dec57], {
2276
+ }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "emptyRowsEnabled", [_dec58], {
2234
2277
  configurable: true,
2235
2278
  enumerable: true,
2236
2279
  writable: true,
2237
2280
  initializer: null
2238
- }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec58], {
2281
+ }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec59], {
2239
2282
  configurable: true,
2240
2283
  enumerable: true,
2241
2284
  writable: true,
2242
2285
  initializer: null
2243
- }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec59], {
2286
+ }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec60], {
2244
2287
  configurable: true,
2245
2288
  enumerable: true,
2246
2289
  writable: true,
2247
2290
  initializer: null
2248
- }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec60], {
2291
+ }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec61], {
2249
2292
  configurable: true,
2250
2293
  enumerable: true,
2251
2294
  writable: true,
2252
2295
  initializer: null
2253
- }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec61], {
2296
+ }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec62], {
2254
2297
  configurable: true,
2255
2298
  enumerable: true,
2256
2299
  writable: true,
2257
2300
  initializer: null
2258
- }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec62], {
2301
+ }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec63], {
2259
2302
  configurable: true,
2260
2303
  enumerable: true,
2261
2304
  writable: true,
2262
2305
  initializer: null
2263
- }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "enablePastingOfComputedProperties", [_dec63], {
2306
+ }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "enablePastingOfComputedProperties", [_dec64], {
2264
2307
  configurable: true,
2265
2308
  enumerable: true,
2266
2309
  writable: true,
2267
2310
  initializer: null
2268
- }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "enableSelectAll", [_dec64], {
2311
+ }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "enableSelectAll", [_dec65], {
2269
2312
  configurable: true,
2270
2313
  enumerable: true,
2271
2314
  writable: true,
2272
2315
  initializer: null
2273
- }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "selectionLimit", [_dec65], {
2316
+ }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "selectionLimit", [_dec66], {
2274
2317
  configurable: true,
2275
2318
  enumerable: true,
2276
2319
  writable: true,
2277
2320
  initializer: null
2278
- }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec66], {
2321
+ }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec67], {
2279
2322
  configurable: true,
2280
2323
  enumerable: true,
2281
2324
  writable: true,
2282
2325
  initializer: null
2283
- }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "noData", [_dec67], {
2326
+ }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "noData", [_dec68], {
2284
2327
  configurable: true,
2285
2328
  enumerable: true,
2286
2329
  writable: true,
2287
2330
  initializer: null
2288
- }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec68], {
2331
+ }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec69], {
2289
2332
  configurable: true,
2290
2333
  enumerable: true,
2291
2334
  writable: true,
2292
2335
  initializer: null
2293
- }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec69], {
2336
+ }), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec70], {
2294
2337
  configurable: true,
2295
2338
  enumerable: true,
2296
2339
  writable: true,
2297
2340
  initializer: null
2298
- }), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec70], {
2341
+ }), _descriptor62 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec71], {
2299
2342
  configurable: true,
2300
2343
  enumerable: true,
2301
2344
  writable: true,
2302
2345
  initializer: null
2303
- }), _descriptor62 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec71], {
2346
+ }), _descriptor63 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec72], {
2304
2347
  configurable: true,
2305
2348
  enumerable: true,
2306
2349
  writable: true,
2307
2350
  initializer: null
2308
- }), _descriptor63 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec72], {
2351
+ }), _descriptor64 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec73], {
2309
2352
  configurable: true,
2310
2353
  enumerable: true,
2311
2354
  writable: true,
2312
2355
  initializer: null
2313
- }), _descriptor64 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec73], {
2356
+ }), _descriptor65 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec74], {
2314
2357
  configurable: true,
2315
2358
  enumerable: true,
2316
2359
  writable: true,
2317
2360
  initializer: null
2318
- }), _descriptor65 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec74], {
2361
+ }), _descriptor66 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec75], {
2319
2362
  configurable: true,
2320
2363
  enumerable: true,
2321
2364
  writable: true,
2322
2365
  initializer: null
2323
- }), _descriptor66 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec75], {
2366
+ }), _descriptor67 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec76], {
2324
2367
  configurable: true,
2325
2368
  enumerable: true,
2326
2369
  writable: true,
2327
2370
  initializer: null
2328
- }), _descriptor67 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec76], {
2371
+ }), _descriptor68 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec77], {
2329
2372
  configurable: true,
2330
2373
  enumerable: true,
2331
2374
  writable: true,
2332
2375
  initializer: null
2333
- }), _descriptor68 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec77], {
2376
+ }), _descriptor69 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec78], {
2334
2377
  configurable: true,
2335
2378
  enumerable: true,
2336
2379
  writable: true,
2337
2380
  initializer: null
2338
- }), _descriptor69 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec78], {
2381
+ }), _descriptor70 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec79], {
2339
2382
  configurable: true,
2340
2383
  enumerable: true,
2341
2384
  writable: true,
2342
2385
  initializer: null
2343
- }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec79], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec104], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec105], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec106], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2386
+ }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onNoop", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onNoop"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec104], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec105], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec106], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec107], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec108], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2344
2387
  return TableAPI;
2345
2388
  }, false);
2346
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwiX2RlYzQ5IiwiX2RlYzUwIiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNTEiLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzU5IiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiX2RlYzY0IiwiX2RlYzY1IiwiX2RlYzY2IiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjciLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY4IiwiX2RlYzY5IiwiX2RlYzcwIiwiX2RlYzcxIiwiZXZlbnQiLCJfZGVjNzIiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJfZGVjNzciLCJfZGVjNzgiLCJfZGVjNzkiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjODAiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2RlYzEwNCIsIl9kZWMxMDUiLCJfZGVjMTA2IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsIm1TZXR0aW5ncyIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsIm90aGVycyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJwcm9wZXJ0eUVkaXRNb2RlQ2FjaGUiLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2Rlc2NyaXB0b3IyNCIsIl9kZXNjcmlwdG9yMjUiLCJfZGVzY3JpcHRvcjI2IiwiX2Rlc2NyaXB0b3IyNyIsIl9kZXNjcmlwdG9yMjgiLCJfZGVzY3JpcHRvcjI5IiwiX2Rlc2NyaXB0b3IzMCIsIl9kZXNjcmlwdG9yMzEiLCJfZGVzY3JpcHRvcjMyIiwiX2Rlc2NyaXB0b3IzMyIsIl9kZXNjcmlwdG9yMzQiLCJfZGVzY3JpcHRvcjM1IiwiX2Rlc2NyaXB0b3IzNiIsIl9kZXNjcmlwdG9yMzciLCJfZGVzY3JpcHRvcjM4IiwiX2Rlc2NyaXB0b3IzOSIsIl9kZXNjcmlwdG9yNDAiLCJfZGVzY3JpcHRvcjQxIiwiX2Rlc2NyaXB0b3I0MiIsIl9kZXNjcmlwdG9yNDMiLCJfZGVzY3JpcHRvcjQ0IiwiX2Rlc2NyaXB0b3I0NSIsIl9kZXNjcmlwdG9yNDYiLCJfZGVzY3JpcHRvcjQ3IiwiX2Rlc2NyaXB0b3I0OCIsIl9kZXNjcmlwdG9yNDkiLCJfZGVzY3JpcHRvcjUwIiwiX2Rlc2NyaXB0b3I1MSIsIl9kZXNjcmlwdG9yNTIiLCJfZGVzY3JpcHRvcjUzIiwiX2Rlc2NyaXB0b3I1NCIsIl9kZXNjcmlwdG9yNTUiLCJfZGVzY3JpcHRvcjU2IiwiX2Rlc2NyaXB0b3I1NyIsIl9kZXNjcmlwdG9yNTgiLCJfZGVzY3JpcHRvcjU5IiwiX2Rlc2NyaXB0b3I2MCIsIl9kZXNjcmlwdG9yNjEiLCJfZGVzY3JpcHRvcjYyIiwiX2Rlc2NyaXB0b3I2MyIsIl9kZXNjcmlwdG9yNjQiLCJfZGVzY3JpcHRvcjY1IiwiX2Rlc2NyaXB0b3I2NiIsIl9kZXNjcmlwdG9yNjciLCJfZGVzY3JpcHRvcjY4IiwiaWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwibG9jayIsInN0b3JlZEV2ZW50cyIsIm92ZXJyaWRlUm93UHJlc3MiLCJfZGVzY3JpcHRvcjY5IiwiZW5oYW5jZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvcyIsIm9yaWdpbmFsVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uIiwiYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoTWFuaWZlc3RFdmVudHMiLCJoYXNMaXN0ZW5lcnMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFJvd0JpbmRpbmciLCJwYXJhbWV0ZXJzIiwibWRjVGFibGUiLCJjb250ZW50IiwiZGF0YU1vZGVsIiwiZ2V0TW9kZWwiLCJiaW5kTGlzdCIsImdldFJvd0NvbGxlY3Rpb25QYXRoIiwidW5kZWZpbmVkIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIm9FdmVudCIsImNvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJpc0EiLCJ0YWJsZUFQSSIsImdldFBhcmVudCIsImhhbmRsZVN0YXRlQ2hhbmdlIiwiYXR0YWNoSWZOb0xpc3RlbmVycyIsImV2ZW50TmFtZSIsIm1ldGhvZENvbmZpZyIsImF0dGFjaEV2ZW50IiwidWk1RXZlbnQiLCJGUE1IZWxwZXIiLCJsb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZCIsIm1vZHVsZU5hbWUiLCJtZXRob2ROYW1lIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsImdldEN1c3RvbUZ1bmN0aW9uSW5mbyIsImJlZm9yZVJlYmluZFRhYmxlIiwicm93UHJlc3MiLCJzZWxlY3Rpb25DaGFuZ2UiLCJzZXRVcE5vRGF0YUluZm9ybWF0aW9uIiwidGFibGUiLCJnZXROb0RhdGEiLCJvd25lciIsIl9nZXRPd25lciIsImRlc2NyaXB0aW9uIiwidGl0bGUiLCJyZXNvdXJjZU1vZGVsIiwiZ2V0UmVzb3VyY2VNb2RlbCIsInN1ZmZpeCIsIm1ldGFQYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImdldFRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldE5vRGF0YU1lc3NhZ2VNb2RlIiwic2V0QWdncmVnYXRpb24iLCJUZXh0IiwidGV4dCIsImlsbHVzdHJhdGVkTWVzc2FnZSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiQmVmb3JlU2VhcmNoIiwiaWxsdXN0cmF0aW9uU2l6ZSIsImVuYWJsZURlZmF1bHRUaXRsZUFuZERlc2NyaXB0aW9uIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwic2V0SGVhZGVyIiwic2V0SGVhZGVyU3R5bGUiLCJoZWFkZXJTdHlsZSIsInNldEhlYWRlckxldmVsIiwidGl0bGVMZXZlbCIsImdldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCIsInNldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCIsInZhbHVlIiwic2V0QnVzeSIsInNldEF0dGFjaEV2ZW50cyIsImV2ZW50SGFuZGxlcnMiLCJfZ2V0QVBJRXh0ZW5zaW9uIiwic291cmNlIiwiaW5zdGFuY2VNYXAiLCJnZXQiLCJmaW5kIiwiYXBpIiwiZ2V0QmluZGluZyIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJpc0NvbnRleHRNZW51QWN0aXZlIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImFkZE1lc3NhZ2UiLCJnZXRDb250ZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0NvbnRleHRDaGFuZ2UiLCJkZXRhY2hFdmVudCIsInJvd0JpbmRpbmciLCJyZXNvbHZlZFBhdGgiLCJnZXRSZXNvbHZlZFBhdGgiLCJjcmVhdGVNZXNzYWdlIiwicGF0aCIsIm1lc3NhZ2UiLCJNZXNzYWdlIiwidGFyZ2V0IiwicHJvY2Vzc29yIiwicGVyc2lzdGVudCIsIl9nZXRNZXNzYWdlTWFuYWdlciIsImFkZE1lc3NhZ2VzIiwiZ2V0SWQiLCJjaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudCIsIl9vRXZlbnQiLCJpc1RhYmxlUmVhZE9ubHkiLCJpc0VkaXRhYmxlIiwiQ29tbW9uVXRpbHMiLCJnZXRJc0VkaXRhYmxlIiwidmlldyIsImdldFRhcmdldFZpZXciLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsInJlbW92ZU1lc3NhZ2UiLCJpZCIsIm1zZ01hbmFnZXIiLCJtZXNzYWdlcyIsImdldE1lc3NhZ2VNb2RlbCIsImdldERhdGEiLCJyZXN1bHQiLCJlIiwicmVtb3ZlTWVzc2FnZXMiLCJyZWZyZXNoIiwidGFibGVSb3dCaW5kaW5nIiwiaXNSZWxhdGl2ZSIsImdldFRhYmxlRGVmaW5pdGlvbiIsImFwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsImhlYWRlckNvbnRleHQiLCJnZXRIZWFkZXJDb250ZXh0IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJnZXRHcm91cElkIiwiZ2V0UXVpY2tGaWx0ZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwidGFibGVTdGF0ZSIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIm5hbWUiLCJyZXBsYWNlIiwiRGVzY2VuZGluZyIsImRlc2NlbmRpbmciLCJncm91cExldmVscyIsImdyb3VwIiwidGFibGVWaXoiLCJDb250ZW50IiwiaXRlbXMiLCJpdGVtIiwiVmFsdWUiLCJUeXBlIiwiYWdncmVnYXRpb25zIiwiaGFzQWdncmVnYXRpb25zIiwia2V5IiwibmV3S2V5IiwiaW5pdGlhbEV4cGFuc2lvbkxldmVsIiwiZ2V0UGF5bG9hZCIsInRhYmxlUFYiLCJQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MiLCJzZXRUYWJsZVZpc3VhbGl6YXRpb24iLCJwcm9wZXJ0aWVzIiwiR3JvdXBCeSIsIlNvcnRPcmRlciIsIkFnZ3JlZ2F0aW9ucyIsInNldFByb3BlcnRpZXMiLCJFcnJvciIsIlN0cmluZyIsInNldFByZXNlbnRhdGlvblZhcmlhbnQiLCJjdXJyZW50U3RhdGVQViIsImdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MiLCJwcm9wZXJ0eUluZm9OYW1lcyIsInByb3BJbmZvIiwibmV3VGFibGVTdGF0ZSIsImNvbnZlcnRQVlRvU3RhdGUiLCJ0YWJsZVByb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwidGFibGVQYXlsb2FkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsIk1lc3NhZ2luZyIsIl9nZXRSb3dCaW5kaW5nIiwib1RhYmxlIiwiZ2V0Q291bnRzIiwiVGFibGVVdGlscyIsImdldExpc3RCaW5kaW5nRm9yQ291bnQiLCJiYXRjaEdyb3VwSWQiLCJkYXRhIiwiYWRkaXRpb25hbEZpbHRlcnMiLCJnZXRIaWRkZW5GaWx0ZXJzIiwidGhlbiIsImlWYWx1ZSIsImdldENvdW50Rm9ybWF0dGVkIiwib25MaXN0QmluZGluZ0NoYW5nZSIsImZpcmVFdmVudCIsImdldFBhcmFtZXRlcnMiLCJzZXRGYXN0Q3JlYXRpb25Sb3dFbmFibGVtZW50IiwicmVmcmVzaFNlbGVjdGVkQ291bnQiLCJUYWJsZVJ1bnRpbWUiLCJzZXRDb250ZXh0c0FzeW5jIiwib25GaWVsZExpdmVDaGFuZ2UiLCJfb25GaWVsZExpdmVDaGFuZ2UiLCJvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlIiwiZmlsdGVyQmFySUQiLCJnZXRGaWx0ZXIiLCJmaWx0ZXJCYXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRTdXNwZW5kU2VsZWN0aW9uIiwicmViaW5kIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwib25UYWJsZU5hdmlnYXRlIiwib0NvbnRyb2xsZXIiLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZSIsImZ1bGxTY3JlZW5EaWFsb2ciLCJjbG9zZSIsIm5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVhc29uIiwiTmF2aWdhdGlvblJlYXNvbiIsIlJvd1ByZXNzIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQiLCJvblRhYmxlUm93UHJlc3MiLCJwcmVzc0V2ZW50Iiwicm93TmF2aWdhdGlvbkluZm8iLCJhbm5vdGF0aW9uIiwicm93IiwibmF2aWdhdGlvbkluZm8iLCJjb250cm9sbGVyIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJiaW5kaW5nQ29udGV4dCIsImF2b2lkUGFyYWxsZWxDYWxscyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJuYXZpZ2F0aW9uVGFyZ2V0IiwiZWRpdGFibGUiLCJjaGVja0VkaXRhYmxlIiwiY2FsbEV4dGVuc2lvbiIsInRhcmdldFBhdGgiLCJyZWNyZWF0ZUNvbnRleHQiLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJvblZhcmlhbnRTZWxlY3RlZCIsIm9yaWdpbmFsU291cmNlIiwiZ2V0U291cmNlIiwib25WYXJpYW50U2F2ZWQiLCJvblJvd1ByZXNzZWQiLCJjb250ZXh0IiwiZW1wdHlSb3ciLCJpc0luYWN0aXZlIiwiaXNUcmFuc2llbnQiLCJhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImVuYWJsZUFuYWx5dGljcyIsIm9uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJjb250ZXh0cyIsIm1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcyIsIl9vblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzIiwib25PcGVuSW5OZXdUYWJQcmVzcyIsImFsbENvbnRleHRzIiwibmF2aWdhYmxlQ29udGV4dHMiLCJwcm9taXNlVG9XYWl0IiwiUHJvbWlzZUtlZXBlciIsInRleHRLZXkiLCJNZXNzYWdlQm94IiwiY29uZmlybSIsImdldFRyYW5zbGF0ZWRUZXh0Iiwib25DbG9zZSIsInNob3VsZFByb2NlZWQiLCJwcm9taXNlIiwiZm9yRWFjaCIsIndhcm5pbmciLCJvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQiLCJldnQiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInNlbGVjdGVkQ29udGV4dHMiLCJEZWxldGVIZWxwZXIiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsIm1lc3NhZ2VIYW5kbGVyIiwic2hvd01lc3NhZ2VEaWFsb2ciLCJyZWxlYXNlSG9sZEJ5Q29udHJvbCIsIm9uSW50ZXJuYWxQYXRjaFNlbnQiLCJlZGl0Rmxvd0V4dGVuc2lvbiIsImVkaXRGbG93IiwiaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCIsImhhbmRsZVBhdGNoU2VudCIsImlubGluZUVkaXRGbG93IiwiaXNJbmxpbmVFZGl0UG9zc2libGUiLCJoYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50Iiwib25JbnRlcm5hbERhdGFSZWNlaXZlZCIsImlzUmVjb21tZW5kYXRpb25SZWxldmFudCIsImNvbnRleHRJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllckNvbHVtbiIsInJlc3BvbnNlQ29udGV4dHNBcnJheSIsImdldEFsbEN1cnJlbnRDb250ZXh0cyIsIm5ld0NvbnRleHRzIiwicHVzaCIsInJlY29tbWVuZGF0aW9ucyIsImZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMiLCJzZXREb3dubG9hZFVybCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwic2V0UHJvcGVydHkiLCJmaWx0ZXJzIiwicXVpY2tGaWx0ZXJzIiwic2hvd0NvdW50cyIsInNldENvdW50c0FzTG9hZGluZyIsInJlZnJlc2hVblNlbGVjdGVkQ291bnRzIiwib25QYXN0ZSIsImZvckNvbnRleHRNZW51Iiwic2V0Q29udGV4dE1lbnVBY3RpdmUiLCJyYXdQYXN0ZWREYXRhIiwibWVudSIsImludGVybmFsQ29udGV4dCIsImVuYWJsZVBhc3RlIiwiYWN0aW9uIiwic3JjQ29udGV4dHMiLCJzcmNDb250ZXh0IiwibmV3UGFyZW50Q29udGV4dCIsImdldFBhdGgiLCJhbGwiLCJtb3ZlIiwicGFyZW50IiwiY29weSIsInJlcXVlc3RTaWRlRWZmZWN0c0ZvckNvcHlBY3Rpb24iLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JDaGFuZ2VOZXh0U2libGluZ0FjdGlvbiIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRFbmFibGVQYXN0ZSIsImNlbGxTZWxlY3Rpb24iLCJnZXRDZWxsU2VsZWN0b3IiLCJnZXRTZWxlY3Rpb24iLCJjb2x1bW5zIiwiUGFzdGVIZWxwZXIiLCJwYXN0ZVJhbmdlRGF0YSIsInBhc3RlRGF0YSIsIm9uQ3V0IiwiX29uQ29weUN1dCIsIm9uQ29weSIsIm9uQmVmb3JlRXhwb3J0IiwiZXhwb3J0RXZlbnQiLCJfb25CZWZvcmVFeHBvcnQiLCJkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIiLCJzVGFibGVDb250ZXh0QmluZGluZ1BhdGgiLCJzVGFibGVSb3dCaW5kaW5nIiwiZ2V0VGFyZ2V0cyIsIm9uRGF0YVN0YXRlQ2hhbmdlIiwiZGF0YVN0YXRlSW5kaWNhdG9yIiwiZmlsdGVyZWRNZXNzYWdlcyIsImhpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMiLCJtc2ciLCJ0ZWNobmljYWxEZXRhaWxzIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsImVtcHR5Um93TWVzc2FnZSIsIm1pc3NpbmdDb2x1bW4iLCJmaWx0ZXIiLCJoaWRkZW5Qcm9wZXJ0eSIsIm1lc3NhZ2VTdHJpcEVycm9yIiwiam9pbiIsInNob3dNZXNzYWdlIiwiaW50ZXJuYWxNb2RlbCIsInJlc3VtZUJpbmRpbmciLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJnZXREYXRhSW5pdGlhbGl6ZWQiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm9GaWx0ZXJDb250cm9sIiwiRmlsdGVyVXRpbHMiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsInN1c3BlbmRCaW5kaW5nIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJmYXN0Q3JlYXRpb25Sb3ciLCJnZXRDcmVhdGlvblJvdyIsInRhYmxlQmluZGluZyIsImdldENvbnRleHQiLCJUYWJsZUhlbHBlciIsImVuYWJsZUZhc3RDcmVhdGlvblJvdyIsIm9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkIiwiX29uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkIiwib25NYXNzRWRpdEJ1dHRvblByZXNzZWQiLCJtYXNzRWRpdEhlbHBlciIsIk1hc3NFZGl0RGlhbG9nSGVscGVyIiwib25Db250ZXh0TWVudSIsInNldE1hc3NFZGl0RGlhbG9nSGVscGVyIiwib3BlbiIsIm9uU2VsZWN0aW9uQ2hhbmdlZCIsInVpNWV2ZW50Iiwic2V0Q29udGV4dHMiLCJzZWxlY3RlZENvbnRleHQiLCJvbkFjdGlvblByZXNzIiwicGFnZUNvbnRyb2xsZXIiLCJhY3Rpb25OYW1lIiwibW9kZWwiLCJsYWJlbEV4cHJlc3Npb24iLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsImxhYmVsIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJtb2RlbE5hbWUiLCJleGVjdXRlQWN0aW9uIiwibm90QXBwbGljYWJsZUNvbnRleHRzIiwiY29udmVydGVkTWV0YWRhdGEiLCJjb252ZXJ0VHlwZXMiLCJnZXRNZXRhTW9kZWwiLCJlbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lIiwibXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nIiwiTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2ciLCJlbnRpdHlTZXQiLCJlbnRpdHlTZXROYW1lIiwiYXBwbGljYWJsZUNvbnRleHRzIiwiaW52b2tlQWN0aW9uIiwiaW5mbyIsIm9uQ29udGV4dE1lbnVQcmVzcyIsIl9vbkNvbnRleHRNZW51UHJlc3MiLCJtYXNzRWRpdERpYWxvZ0hlbHBlciIsImdldE1hc3NFZGl0RGlhbG9nSGVscGVyIiwidXBkYXRlRmlsdGVyQmFyIiwiZmlsdGVyQmFyUmVmSWQiLCJnZXRGaWx0ZXJCYXIiLCJfc2V0RmlsdGVyQmFyIiwiZGV0YWNoRmlsdGVyQmFyIiwic2V0RmlsdGVyIiwiZ2V0RmlsdGVyQmFyQ29udHJvbCIsInRhYmxlQVBJSWQiLCJ0YWJsZUFQSUxvY2FsSWQiLCJwb3RlbnRpYWxmaWx0ZXJCYXJJZCIsIlJlZ0V4cCIsImJ5SWQiLCJoYW5kbGVDcmVhdGVBY3RpdmF0ZSIsImFjdGl2YXRlRXZlbnQiLCJfaGFuZGxlQ3JlYXRlQWN0aXZhdGUiLCJvbkRyYWdFbnRlckRvY3VtZW50IiwiX29uRHJhZ0VudGVyRG9jdW1lbnQiLCJvbkRyYWdTdGFydERvY3VtZW50IiwiX29uRHJhZ1N0YXJ0RG9jdW1lbnQiLCJvbkRyb3BEb2N1bWVudCIsIl9vbkRyb3BEb2N1bWVudCIsIm9uQ29sbGFwc2VFeHBhbmROb2RlIiwiZXhwYW5kIiwiZ2V0TWV0YWRhdGEiLCJfb25Db2xsYXBzZUV4cGFuZE5vZGUiLCJvbk1vdmVVcERvd24iLCJtb3ZlVXAiLCJfb25Nb3ZlVXBEb3duIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlSGVscGVyIiwic2V0U2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwic2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCIsIl9jcmVhdGVDb250ZW50VjJNb2RlIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsIm1ldGFNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJkZWVwQ2xvbmUiLCJ1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSIsImlnbm9yZWRGaWVsZHMiLCJjb2xsZWN0aW9uRW50aXR5IiwiY29sbGVjdGlvbiIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaGFuZGxlclByb3ZpZGVyIiwiVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciIsImZyYWdtZW50IiwiWE1MUHJlcHJvY2Vzc29yIiwicHJvY2VzcyIsInBhcnNlWE1MU3RyaW5nIiwieG1sIiwianN4IiwicmVuZGVyQXNYTUwiLCJNZGNUYWJsZVRlbXBsYXRlIiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsImdldENvbnZlcnRlZE1ldGFkYXRhIiwibW9kZWxzIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJkZXN0cm95IiwiRnJhZ21lbnQiLCJsb2FkIiwiZGVmaW5pdGlvbiIsImdldFJvb3RDb250cm9sbGVyIiwiY29udGFpbmluZ1ZpZXciLCJnZXRSb290Q29udHJvbCIsInByb3BlcnR5S2V5IiwicHJvcGVydHlWYWx1ZSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImluY2x1ZGVzIiwiZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0IiwicHJvcGVydHlOYW1lIiwiZW50aXR5UGF0aCIsInRhcmdldE1ldGFQYXRoIiwicHJvcGVydHlJbmZvIiwiYW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb252ZXJ0ZWR0YXJnZXRPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsImRhdGFNb2RlbFBhdGgiLCJGaWVsZFRlbXBsYXRpbmciLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUiLCJjcmVhdGVBbnlDb250cm9sIiwiTW9kZUFzRXhwcmVzc2lvbiIsInJvd0NvbnRleHQiLCJhbnlPYmplY3QiLCJBbnkiLCJhbnkiLCJzZXRNb2RlbCIsImdldFByb3BlcnR5RWRpdE1vZGUiLCJwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCIsImVkaXRNb2RlQXNFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJVSUZvcm1hdHRlcnMiLCJnZXRFZGl0TW9kZSIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiZWRpdE1vZGUiLCJnZXRBbnkiLCJzaG93Q29sdW1ucyIsImNvbHVtbktleXMiLCJjb2x1bW5LZXkiLCJtb2RpZnlEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbiIsImhpZGVDb2x1bW5zIiwic2V0SWdub3JlZEZpZWxkcyIsImdldElnbm9yZWRGaWVsZHMiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJnZXRTdGF0ZUtleSIsIm9Db250cm9sIiwiZ2V0TG9jYWxJZCIsImR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucyIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljIiwiZ2V0TURDVGFibGUiLCJhc3luY0NhbGwiLCJsb2NrTmFtZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsInNldEZ1bGxTY3JlZW5EaWFsb2ciLCJkaWFsb2ciLCJzZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0UHJvcGVydHlJbmZvcyIsImVuaGFuY2VkUHJvcGVydHlJbmZvIiwidmlzaWJsZSIsImV4cG9ydFNldHRpbmdzIiwiY2xpcGJvYXJkU2V0dGluZ3MiLCJ2aXN1YWxTZXR0aW5ncyIsInRvb2x0aXAiLCJpc0tleSIsImV4dGVuc2lvbiIsInRlY2huaWNhbGx5R3JvdXBhYmxlIiwidGVjaG5pY2FsbHlBZ2dyZWdhdGFibGUiLCJjdXN0b21BZ2dyZWdhdGUiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsIl9yZWYiLCJfIiwibWF4Q29uZGl0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJjb25zdHJhaW50cyIsImdyb3VwTGFiZWwiLCJjYXNlU2Vuc2l0aXZlIiwiZmlsdGVyYWJsZSIsInNvcnRhYmxlIiwiZ3JvdXBhYmxlIiwiZGF0YVR5cGUiLCJhZ2dyZWdhdGFibGUiLCJ1bml0IiwiX3JlZjIiLCJzZXRDYWNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0Q2FjaGVkUHJvcGVydHlJbmZvcyIsImNvbGxlY3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJnZXRUYWJsZVRlbXBsYXRlQmluZGluZ0luZm8iLCJyb3dCaW5kaW5nSW5mbyIsInN1c3BlbmRlZCIsIiRjb3VudCIsImVuYWJsZSRzZWxlY3QiLCJzZWxlY3QiLCJrZXlzIiwicmVxdWVzdEF0TGVhc3QiLCIkc2VsZWN0IiwiZW5hYmxlJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyIiwiJCRncm91cElkIiwiJCR1cGRhdGVHcm91cElkIiwiJCRvd25SZXF1ZXN0IiwiJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyIsInBhdGNoQ29tcGxldGVkIiwiYmluZCIsImRhdGFSZWNlaXZlZCIsImRhdGFSZXF1ZXN0ZWQiLCJjaGFuZ2UiLCJjcmVhdGVBY3RpdmF0ZSIsImNyZWF0ZVNlbnQiLCJoYW5kbGVDcmVhdGVTZW50IiwicGF0Y2hTZW50IiwiZXZlbnRzIiwiYWRkU2V0dGluZyIsImdldFNldHRpbmdzRm9yTWFuaWZlc3QiLCJ0YWJsZVNldHRpbmdzIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJleHBvcnRGaWxlTmFtZSIsImV4cG9ydFNoZWV0TmFtZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInBvcGluTGF5b3V0Iiwic2VsZWN0aW9uTW9kZSIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVNlbGVjdEFsbCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGlvbkZpZWxkcyIsImNyZWF0ZUF0RW5kIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImN1c3RvbUNvbnRlbnQiLCJ2aXNpYmxlRmllbGRzIiwib3BlcmF0aW9uR3JvdXBpbmdNb2RlIiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwicGF0aHMiLCJmaW5kU2xvdEFjdGlvbkZyb21LZXkiLCJhY3Rpb25zIiwiYSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjcmVhdGVDb250ZW50IiwiZ2V0RnVsbE1ldGFQYXRoIiwiZW5kc1dpdGgiLCJmb3JjZUNyZWF0aW9uIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsImZ1bGxNZXRhUGF0aCIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZVRhYmxlRGVmaW5pdGlvbiIsInVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uIiwiY29udmVydGVkVHlwZXMiLCJ0YXJnZXRUeXBlIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiY3JlYXRlTURDVGFibGUiLCJzZXR1cE9wdGltaXN0aWNCYXRjaCIsInNldE1ldGFQYXRoIiwiTWFuYWdlZE9iamVjdE1ldGFkYXRhIiwiaXNHZW5lcmF0ZWRJZCIsImNvbnRlbnRJZCIsInVzZUJhc2ljU2VhcmNoIiwiZ2VuZXJhdGUiLCJyZWFkT25seSIsImRpc3BsYXlNb2RlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZWQiLCJDcmVhdGlvbk1vZGUiLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJTdGFuZGFyZEFjdGlvbktleXMiLCJDcmVhdGUiLCJtb2RlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJzcGxpdCIsImdldENvdW50IiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZFR5cGVzLFxuXHREYXRhUG9pbnRUeXBlVHlwZXMsXG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB7XG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiwgWE1MRXZlbnRIb2xkZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIG1peGluLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJUm93QmluZGluZ0ludGVyZmFjZSBmcm9tIFwic2FwL2ZlL2NvcmUvSVJvd0JpbmRpbmdJbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgcGFyc2VYTUxTdHJpbmcsIHhtbCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9Ob3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZ1wiO1xuaW1wb3J0IE5hdmlnYXRpb25SZWFzb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvTmF2aWdhdGlvblJlYXNvblwiO1xuaW1wb3J0IEFueSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQW55XCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvLFxuXHR0eXBlIEV4dGVybmFsTWV0aG9kQ29uZmlnLFxuXHR0eXBlIFRhYmxlVHlwZSxcblx0dHlwZSBUYWJsZVZpc3VhbGl6YXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBTdGFuZGFyZEFjdGlvbktleXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvU3RhbmRhcmRBY3Rpb25zXCI7XG5pbXBvcnQgRGVsZXRlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0RlbGV0ZUhlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhc3RlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ05hdmlnYXRpb25QYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1JvdXRpbmdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IHR5cGUgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uQmluZGluZ0luZm8sIEV2ZW50SGFuZGxlciB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbGxlY3Rpb25CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdW1lckRhdGEgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCAqIGFzIEZpZWxkVGVtcGxhdGluZyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckJCVjQgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFN0YXRlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBCYXNpY1NlYXJjaCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9CYXNpY1NlYXJjaFwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0ICogYXMgTWRjVGFibGVUZW1wbGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9NZGNUYWJsZVRlbXBsYXRlXCI7XG5pbXBvcnQgdHlwZSBRdWlja0ZpbHRlclNlbGVjdG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1F1aWNrRmlsdGVyU2VsZWN0b3JcIjtcbmltcG9ydCBUYWJsZUNyZWF0aW9uT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUNyZWF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IFRhYmxlSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlSGVscGVyXCI7XG5pbXBvcnQgVGFibGVSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlUnVudGltZVwiO1xuaW1wb3J0IFRhYmxlVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVXRpbHNcIjtcbmltcG9ydCB7IGNvbnZlcnRQVlRvU3RhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9hZGFwdGVyL1RhYmxlUFZUb1N0YXRlXCI7XG5pbXBvcnQgTWFzc0VkaXREaWFsb2dIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvbWFzc0VkaXQvTWFzc0VkaXREaWFsb2dIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUHZQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBNZW51IGZyb20gXCJzYXAvbS9NZW51XCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhU3RhdGVJbmRpY2F0b3IkRGF0YVN0YXRlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vcGx1Z2lucy9EYXRhU3RhdGVJbmRpY2F0b3JcIjtcbmltcG9ydCB0eXBlIHsgUGFzdGVQcm92aWRlciRQYXN0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL3BsdWdpbnMvUGFzdGVQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEV2ZW50LCBkZWZhdWx0IGFzIFVJNUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1ldGFkYXRhIGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0TWV0YWRhdGFcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEZyYWdtZW50IGZyb20gXCJzYXAvdWkvY29yZS9GcmFnbWVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBEcmFnRHJvcEluZm8gZnJvbSBcInNhcC91aS9jb3JlL2RuZC9EcmFnRHJvcEluZm9cIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdGRlZmF1bHQgYXMgTURDVGFibGUsXG5cdE1EQ1RhYmxlUHJvcGVydHlJbmZvIGFzIFByb3BlcnR5SW5mbyxcblx0ZGVmYXVsdCBhcyBUYWJsZSxcblx0VGFibGUkQmVmb3JlRXhwb3J0RXZlbnQsXG5cdFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50LFxuXHRUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFxufSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgVHlwZUNvbmZpZyBmcm9tIFwic2FwL3VpL21kYy9UeXBlQ29uZmlnXCI7XG5pbXBvcnQgdHlwZSB7IEdyb3VwTGV2ZWxzLCBJdGVtcywgU29ydGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgeyB0eXBlIFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL1Jvd0FjdGlvbkl0ZW1cIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi4vbWRjL2FkYXB0ZXIvU3RhdGVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwT3ZlcnJpZGUgZnJvbSBcIi4vQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vQWN0aW9uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFuYWx5dGljYWxDb25maWd1cmF0aW9uIGZyb20gXCIuL0FuYWx5dGljYWxDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW5PdmVycmlkZSBmcm9tIFwiLi9Db2x1bW5PdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgTWFzc0VkaXQgZnJvbSBcIi4vTWFzc0VkaXRcIjtcbmltcG9ydCB0eXBlIFF1aWNrVmFyaWFudFNlbGVjdGlvbiBmcm9tIFwiLi9RdWlja1ZhcmlhbnRTZWxlY3Rpb25cIjtcbmltcG9ydCB7IGNyZWF0ZVRhYmxlRGVmaW5pdGlvbiB9IGZyb20gXCIuL1RhYmxlRGVmaW5pdGlvblwiO1xuaW1wb3J0IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIgZnJvbSBcIi4vVGFibGVFdmVudEhhbmRsZXJQcm92aWRlclwiO1xuaW1wb3J0IENvbHVtbk1hbmFnZW1lbnQgZnJvbSBcIi4vbWl4aW4vQ29sdW1uTWFuYWdlbWVudFwiO1xuaW1wb3J0IENvbnRleHRNZW51SGFuZGxlciBmcm9tIFwiLi9taXhpbi9Db250ZXh0TWVudUhhbmRsZXJcIjtcbmltcG9ydCBFbXB0eVJvd3NIYW5kbGVyIGZyb20gXCIuL21peGluL0VtcHR5Um93c0hhbmRsZXJcIjtcbmltcG9ydCBUYWJsZUFQSVN0YXRlSGFuZGxlciBmcm9tIFwiLi9taXhpbi9UYWJsZUFQSVN0YXRlSGFuZGxlclwiO1xuaW1wb3J0IFRhYmxlRXhwb3J0IGZyb20gXCIuL21peGluL1RhYmxlRXhwb3J0XCI7XG5pbXBvcnQgVGFibGVIaWVyYXJjaHkgZnJvbSBcIi4vbWl4aW4vVGFibGVIaWVyYXJjaHlcIjtcbmltcG9ydCBUYWJsZU9wdGltaXN0aWNCYXRjaCBmcm9tIFwiLi9taXhpbi9UYWJsZU9wdGltaXN0aWNCYXRjaFwiO1xuaW1wb3J0IFRhYmxlU2hhcmluZyBmcm9tIFwiLi9taXhpbi9UYWJsZVNoYXJpbmdcIjtcblxuZXhwb3J0IHR5cGUgRW5oYW5jZWRGRVByb3BlcnR5SW5mbyA9IFByb3BlcnR5SW5mbyAmIHtcblx0bmFtZTogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRyZWxhdGl2ZVBhdGg6IHN0cmluZztcblx0ZGVzY3JpcHRpb25Qcm9wZXJ0eT86IHN0cmluZztcblx0bW9kZT86IERpc3BsYXlNb2RlO1xuXHR2YWx1ZVByb3BlcnR5Pzogc3RyaW5nO1xuXHR0eXBlQ29uZmlnPzogVHlwZUNvbmZpZztcblx0ZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWU/OiBzdHJpbmc7XG5cdGFkZGl0aW9uYWxMYWJlbHM/OiBzdHJpbmdbXTtcblx0dHlwZT86IHN0cmluZztcblx0dGV4dEFycmFuZ2VtZW50Pzoge1xuXHRcdHRleHRQcm9wZXJ0eTogc3RyaW5nO1xuXHRcdG1vZGU6IERpc3BsYXlNb2RlO1xuXHR9O1xufTtcblxudHlwZSBEYXRhTW9kZWxDb252ZXJzaW9uID0ge1xuXHRkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCBQcm9wZXJ0eT47XG5cdGNvbnZlcnRlZHRhcmdldE9iamVjdDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcztcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ29sdW1uUHJvcGVydGllcyA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdHZpc2liaWxpdHk6IGJvb2xlYW47XG59W107XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uID0geyBjb2x1bW5LZXk6IHN0cmluZzsgdmlzaWJsZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlID0ge1xuXHRpbm5lclRhYmxlPzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcblx0XHR9O1xuXHRcdGZ1bGxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0ZmlsdGVyPzogb2JqZWN0O1xuXHRcdH07XG5cdH07XG5cdHF1aWNrRmlsdGVyPzoge1xuXHRcdHNlbGVjdGVkS2V5Pzogc3RyaW5nO1xuXHR9O1xuXHR2YXJpYW50TWFuYWdlbWVudD86IHtcblx0XHR2YXJpYW50SWQ/OiBzdHJpbmcgfCBudWxsO1xuXHR9O1xuXHRzdXBwbGVtZW50YXJ5Q29uZmlnPzogb2JqZWN0O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2sge1xuXHRlbmFibGVPcHRpbWlzdGljQmF0Y2hNb2RlKCk6IHZvaWQ7XG5cdG1ldGFQYXRoOiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRlbXB0eVJvd3NFbmFibGVkOiBib29sZWFuO1xuXHRnZXRDb250ZW50KCk6IFRhYmxlO1xuXHRnZXRUYWJsZURlZmluaXRpb24oKTogVGFibGVWaXN1YWxpemF0aW9uO1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXTtcblx0aXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbjtcblx0Y3JlYXRlQW55Q29udHJvbChNb2RlQXNFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgcm93Q29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCk6IHR5cGVvZiBBbnk7XG5cdGdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IERhdGFNb2RlbENvbnZlcnNpb24gfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBUYWJsZUFQSVxuXHRleHRlbmRzIFRhYmxlQVBJU3RhdGVIYW5kbGVyLFxuXHRcdFRhYmxlRXhwb3J0LFxuXHRcdFRhYmxlT3B0aW1pc3RpY0JhdGNoLFxuXHRcdFRhYmxlSGllcmFyY2h5LFxuXHRcdEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0Q29udGV4dE1lbnVIYW5kbGVyLFxuXHRcdFRhYmxlU2hhcmluZyxcblx0XHRDb2x1bW5NYW5hZ2VtZW50IHtcblx0Ly8gYWdncmVnYXRpb25cblx0Z2V0Q29udGVudCgpOiBNRENUYWJsZTtcblx0Ly8gYXNzb2NpYXRpb25cblx0Z2V0RmlsdGVyQmFyKCk6IHN0cmluZztcblx0Ly8gcHJvcGVydHlcblx0Z2V0RGF0YUluaXRpYWxpemVkKCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50IG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgYW5ub3RhdGlvbiBpcyBleHBlY3RlZCwgYnV0IHRoZSBUYWJsZSBidWlsZGluZyBibG9jayBjYW4gYWxzbyBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gRW50aXR5U2V0LlxuICogPGJyPlxuICogSWYgYSBQcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGhhdmUgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqIDxicj5cbiAqIElmIGEgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBjb250YWluIGEgdmFsaWQgUHJlc2VudGF0aW9uVmFyaWFudCB0aGF0IGFsc28gaGFzIGEgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6VGFibGUgaWQ9XCJNeVRhYmxlXCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIiwgeyByZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiXSB9KVxuQG1peGluKFRhYmxlQVBJU3RhdGVIYW5kbGVyKVxuQG1peGluKFRhYmxlRXhwb3J0KVxuQG1peGluKFRhYmxlT3B0aW1pc3RpY0JhdGNoKVxuQG1peGluKFRhYmxlSGllcmFyY2h5KVxuQG1peGluKEVtcHR5Um93c0hhbmRsZXIpXG5AbWl4aW4oQ29udGV4dE1lbnVIYW5kbGVyKVxuQG1peGluKFRhYmxlU2hhcmluZylcbkBtaXhpbihDb2x1bW5NYW5hZ2VtZW50KVxuY2xhc3MgVGFibGVBUEkgZXh0ZW5kcyBNYWNyb0FQSSBpbXBsZW1lbnRzIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IsIElSb3dCaW5kaW5nSW50ZXJmYWNlLCBJVGFibGVCbG9jayB7XG5cdGNvbnRlbnQhOiBUYWJsZTtcblxuXHRtYXNzRWRpdERpYWxvZ0hlbHBlcjogTWFzc0VkaXREaWFsb2dIZWxwZXIgfCB1bmRlZmluZWQ7XG5cblx0b3JpZ2luYWxUYWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0cHJvcGVydHlFZGl0TW9kZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCB0eXBlb2YgQW55PiA9IHt9O1xuXG5cdGluaXRpYWxDb250cm9sU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cblx0Y29uc3RydWN0b3IobVNldHRpbmdzPzogUHJvcGVydGllc09mPFRhYmxlQVBJPiAmIHsgaWQ/OiBzdHJpbmcgfSwgLi4ub3RoZXJzOiAkQ29udHJvbFNldHRpbmdzW10pIHtcblx0XHRzdXBlcihtU2V0dGluZ3MsIC4uLm90aGVycyk7XG5cdFx0dGhpcy5vcmlnaW5hbFRhYmxlRGVmaW5pdGlvbiA9IHRoaXMudGFibGVEZWZpbml0aW9uO1xuXG5cdFx0dGhpcy5hdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTtcblx0XHR0aGlzLmF0dGFjaE1hbmlmZXN0RXZlbnRzKCk7XG5cdFx0dGhpcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5oYXNMaXN0ZW5lcnMoXCJyb3dQcmVzc1wiKTtcblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5JUm93QmluZGluZ0ludGVyZmFjZVwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9jb3JlX0lSb3dCaW5kaW5nSW50ZXJmYWNlID0gdHJ1ZTtcblxuXHRnZXRSb3dCaW5kaW5nKHBhcmFtZXRlcnM/OiBvYmplY3QpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCBtZGNUYWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBkYXRhTW9kZWwgPSBtZGNUYWJsZS5nZXRNb2RlbCgpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRtZGNUYWJsZS5nZXRSb3dCaW5kaW5nKCkgPz9cblx0XHRcdChkYXRhTW9kZWw/LmJpbmRMaXN0KHRoaXMuZ2V0Um93Q29sbGVjdGlvblBhdGgoKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGFyYW1ldGVycykgYXMgT0RhdGFMaXN0QmluZGluZylcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHR9XG5cblx0c3RhdGVDaGFuZ2VIYW5kbGVyKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdGlmIChjb250cm9sLmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRjb25zdCB0YWJsZUFQSSA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmICh0YWJsZUFQST8uaGFuZGxlU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0dGFibGVBUEkuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoIHRoZSBldmVudCBoYW5kbGVycyBjb21pbmcgZnJvbSB0aGUgbWFuaWZlc3QgZm9yICdyb3dQcmVzcycsICdzZWxlY3Rpb25DaGFuZ2UnIGFuZCAnYmVmb3JlUmViaW5kVGFibGUnLlxuXHQgKiBXZSBpZ25vcmUgdGhlIG1hbmlmZXN0IGhhbmRsZXJzIGlmIHRoZSB0YWJsZSBhbHJlYWR5IGhhcyBldmVudCBoYW5kbGVycyAob3ZlcnJpZGUpLlxuXHQgKi9cblx0cHJpdmF0ZSBhdHRhY2hNYW5pZmVzdEV2ZW50cygpOiB2b2lkIHtcblx0XHRjb25zdCBhdHRhY2hJZk5vTGlzdGVuZXJzID0gKGV2ZW50TmFtZTogc3RyaW5nLCBtZXRob2RDb25maWc6IEV4dGVybmFsTWV0aG9kQ29uZmlnIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzTGlzdGVuZXJzKGV2ZW50TmFtZSkgJiYgbWV0aG9kQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudChldmVudE5hbWUsICh1aTVFdmVudDogVUk1RXZlbnQpID0+IHtcblx0XHRcdFx0XHRGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QobWV0aG9kQ29uZmlnLm1vZHVsZU5hbWUsIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLCB1aTVFdmVudCwgdWk1RXZlbnQpLmNhdGNoKFxuXHRcdFx0XHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRcdFx0XHRgRmFpbGVkIHRvIGNhbGwgJHtldmVudE5hbWV9IGV2ZW50IGhhbmRsZXIgJHttZXRob2RDb25maWcubW9kdWxlTmFtZX0gJHttZXRob2RDb25maWcubWV0aG9kTmFtZX1gLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcImJlZm9yZVJlYmluZFRhYmxlXCIsXG5cdFx0XHRnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmJlZm9yZVJlYmluZFRhYmxlLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbClcblx0XHQpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXCJyb3dQcmVzc1wiLCBnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LnJvd1ByZXNzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbCkpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcInNlbGVjdGlvbkNoYW5nZVwiLFxuXHRcdFx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5zZWxlY3Rpb25DaGFuZ2UsIHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhbiBpbGx1c3RyYXRlZCBtZXNzYWdlIGR1cmluZyB0aGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIHRhYmxlIEFQSS5cblx0ICogVXNlZnVsIGlmIHdlIGhhdmUgYSBidWlsZGluZyBibG9jayBpbiBhIGxpc3QgcmVwb3J0IHdpdGhvdXQgaW5pdGlhbCBsb2FkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBzZXRVcE5vRGF0YUluZm9ybWF0aW9uKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdGlmICghdGFibGUgfHwgdGFibGUuZ2V0Tm9EYXRhKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGxldCBkZXNjcmlwdGlvbjtcblx0XHRsZXQgdGl0bGU7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gZ2V0UmVzb3VyY2VNb2RlbChvd25lcik7XG5cdFx0XHRpZiAocmVzb3VyY2VNb2RlbCkge1xuXHRcdFx0XHRsZXQgc3VmZml4O1xuXHRcdFx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMubWV0YVBhdGg7XG5cdFx0XHRcdGlmIChtZXRhUGF0aCkge1xuXHRcdFx0XHRcdHN1ZmZpeCA9IG1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gbWV0YVBhdGguc3Vic3RyaW5nKDEpIDogbWV0YVBhdGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGl0bGUgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0lMTFVTVFJBVEVEX01FU1NBR0VfVElUTEVfQkVGT1JFU0VBUkNIXCIpO1xuXHRcdFx0XHRkZXNjcmlwdGlvbiA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVFwiLCB1bmRlZmluZWQsIHN1ZmZpeCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS50ZW1wbGF0ZXNcIikhO1xuXHRcdFx0dGl0bGUgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9JTExVU1RSQVRFRF9NRVNTQUdFX1RJVExFX0JFRk9SRVNFQVJDSFwiKTtcblx0XHRcdGRlc2NyaXB0aW9uID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVFwiKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXROb0RhdGFNZXNzYWdlTW9kZSgpID09PSBcInRleHRcIikge1xuXHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcIm5vRGF0YVwiLCBuZXcgVGV4dCh7IHRleHQ6IGRlc2NyaXB0aW9uIH0pKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlID0gbmV3IElsbHVzdHJhdGVkTWVzc2FnZSh7XG5cdFx0XHRcdHRpdGxlOiB0aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuXHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlOiBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLkJlZm9yZVNlYXJjaCxcblx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZTogdGhpcy5nZXROb0RhdGFNZXNzYWdlTW9kZSgpLFxuXHRcdFx0XHRlbmFibGVEZWZhdWx0VGl0bGVBbmREZXNjcmlwdGlvbjogZmFsc2Vcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnNldEFnZ3JlZ2F0aW9uKFwibm9EYXRhXCIsIGlsbHVzdHJhdGVkTWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX21hY3Jvc19jb250cm9sc19zZWN0aW9uX0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGdldFNlY3Rpb25Db250ZW50Um9sZSgpOiBcInByb3ZpZGVyXCIgfCBcImNvbnN1bWVyXCIge1xuXHRcdHJldHVybiBcImNvbnN1bWVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNlbmREYXRhVG9Db25zdW1lciBtZXRob2Qgd2hpY2ggaXMgYSBwYXJ0IG9mIHRoZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG5cdCAqXG5cdCAqIFdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvbiBjb250cm9sIHdoZW4gdGhlcmUgaXMgYSBUYWJsZSBidWlsZGluZyBibG9jayByZW5kZXJlZCB3aXRoaW4gYSBzZWN0aW9uXG5cdCAqIGFsb25nIHdpdGggdGhlIGNvbnN1bWVyRGF0YSBpLmUuIHNlY3Rpb24ncyBkYXRhIHN1Y2ggYXMgdGl0bGUgYW5kIHRpdGxlIGxldmVsIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgdGFibGUgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGFjY29yZGluZ2x5LlxuXHQgKlxuXHQgKi9cblxuXHRzZW5kRGF0YVRvQ29uc3VtZXIoY29uc3VtZXJEYXRhOiBDb25zdW1lckRhdGEpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXIoY29uc3VtZXJEYXRhLnRpdGxlKTtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyU3R5bGUoY29uc3VtZXJEYXRhLmhlYWRlclN0eWxlIGFzIFRpdGxlTGV2ZWwpO1xuXHRcdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXJMZXZlbChjb25zdW1lckRhdGEudGl0bGVMZXZlbCBhcyBUaXRsZUxldmVsKTtcblx0XHR9XG5cdH1cblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXVxuXHR9KVxuXHRjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdHRhYmxlRGVmaW5pdGlvbiE6IFRhYmxlVmlzdWFsaXphdGlvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRlbnRJZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZXhwb3J0U2hlZXROYW1lPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0ZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQXV0b1wiLCBcIkZpeGVkXCJdIH0pXG5cdHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHJvd0NvdW50PzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVBhc3RlPzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0dGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkJsb2NrXCIsIFwiR3JpZExhcmdlXCIsIFwiR3JpZFNtYWxsXCJdIH0pXG5cdHBvcGluTGF5b3V0Pzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzU2VhcmNoYWJsZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlQ29uZGVuc2VkTGF5b3V0PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlcIiwgXCJBdXRvXCIsIFwiRm9yY2VNdWx0aVwiLCBcIkZvcmNlU2luZ2xlXCJdIH0pXG5cdHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0Y29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZVxuXHR9KVxuXHRhY3Rpb25zPzogKEFjdGlvbiB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKVtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtbk92ZXJyaWRlXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGNvbHVtbnM/OiAoQ29sdW1uIHwgQ29sdW1uT3ZlcnJpZGUpW107XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHkhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqL1xuXHQvL0Bhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIgfSlcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaGVhZGVyIHNob3VsZCBiZSBhIHBhcnQgb2YgdGhlIHdpZHRoIGNhbGN1bGF0aW9uLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRkYXRhSW5pdGlhbGl6ZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGJpbmRpbmdTdXNwZW5kZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdG91dERhdGVkQmluZGluZyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0aXNBbHAhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIsIGRlZmF1bHRWYWx1ZTogVGl0bGVMZXZlbC5BdXRvIH0pXG5cdGhlYWRlckxldmVsITogVGl0bGVMZXZlbDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiB9KVxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRleHBvcnRSZXF1ZXN0U2l6ZT86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZSBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIHRhYmxlIGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogIC0gU29ydDxici8+XG5cdCAqICAtIENvbHVtbjxici8+XG5cdCAqICAtIEZpbHRlcjxici8+XG5cdCAqICAtIEdyb3VwPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBUaGUgR3JvdXAgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSB0byBhbmFseXRpY2FsIHRhYmxlcyBhbmQgcmVzcG9uc2l2ZSB0YWJsZXMuPGJyLz5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgaWYgdGhlIGVtcHR5IHJvd3MgYXJlIGVuYWJsZWQuIFRoaXMgYWxsb3dzIHRvIGhhdmUgZHluYW1pYyBlbmFibGVtZW50IG9mIHRoZSBlbXB0eSByb3dzIHVzaW5nIHRoZSBzZXR0ZXIgZnVuY3Rpb24uXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRlbXB0eVJvd3NFbmFibGVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGhlYWRlciB0ZXh0IHNob3VsZCBiZSBzaG93biBvciBub3QuXG5cdCAqXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNCaW5kaW5nSW5mbzogdHJ1ZSB9KVxuXHRoZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRhYlRpdGxlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVDcmVhdGlvbk9wdGlvbnNcIiwgZGVmYXVsdENsYXNzOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB9KVxuXHRjcmVhdGlvbk1vZGU/OiBUYWJsZUNyZWF0aW9uT3B0aW9ucztcblxuXHQvKipcblx0ICogQWdncmVnYXRpb24gdG8gZm9yd2FyZCB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGNvbnRyb2wgdG8gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uSWxsdXN0cmF0ZWRNZXNzYWdlXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5tLlRleHRcIl0sXG5cdFx0Zm9yd2FyZGluZzoge1xuXHRcdFx0Z2V0dGVyOiBcImdldE1EQ1RhYmxlXCIsXG5cdFx0XHRhZ2dyZWdhdGlvbjogXCJub0RhdGFcIlxuXHRcdH1cblx0fSlcblx0bm9EYXRhPzogSWxsdXN0cmF0ZWRNZXNzYWdlO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIlxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbj86IEFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIG9mIHRoZSB0YWJsZS5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFF1aWNrVmFyaWFudFNlbGVjdGlvbjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG1hc3MgZWRpdCBvZiB0aGUgdGFibGUuXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiXG5cdH0pXG5cdG1hc3NFZGl0PzogTWFzc0VkaXQ7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0YWJsZSBpcyBhYm91dCB0byBiZSByZWJvdW5kLiBUaGlzIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICpcblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgb3IgcmVhZDogRmlsdGVycywgU29ydGVycy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byByZWFkIHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkOiBTZWxlY3RzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0YmVmb3JlUmViaW5kVGFibGU/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKi9cblx0QGV2ZW50KClcblx0cm93UHJlc3M/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZWQgYmV0d2VlbiB2aWV3IGluIGFuIEFMUC5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNhdmVkIHRoZSB2YXJpYW50LlxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGEgdmFyaWFudC5cblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgVGFibGUgbGlzdCBiaW5kaW5nIGNoYW5nZXMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRsaXN0QmluZGluZ0NoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdGludGVybmFsRGF0YVJlcXVlc3RlZCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50PjtcblxuXHRwcml2YXRlIGlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgbG9jazogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRzdG9yZWRFdmVudHM6IEV2ZW50SGFuZGxlcltdID0gW107XG5cblx0b3ZlcnJpZGVSb3dQcmVzcyA9IGZhbHNlO1xuXG5cdGdldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQ7XG5cdH1cblxuXHRzZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IHZhbHVlO1xuXHR9XG5cblx0c2V0QnVzeSh2YWx1ZTogYm9vbGVhbik6IHRoaXMge1xuXHRcdHN1cGVyLnNldEJ1c3kodmFsdWUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0QnVzeSh2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZXZlbnQgaGFuZGxlcnMgdG8gdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gZXZlbnRIYW5kbGVyc1xuXHQgKi9cblx0c2V0QXR0YWNoRXZlbnRzKGV2ZW50SGFuZGxlcnM6IEV2ZW50SGFuZGxlcltdKTogdm9pZCB7XG5cdFx0dGhpcy5zdG9yZWRFdmVudHMgPSBldmVudEhhbmRsZXJzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHJlbGV2YW50IHRhYmxlQVBJIGZvciBhIFVJNSBldmVudC5cblx0ICogQW4gZXZlbnQgY2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgdGhlIGlubmVyIGNvbnRyb2wgKHRoZSB0YWJsZSkgb3IgdGhlIE9EYXRhIGxpc3RCaW5kaW5nXG5cdCAqIFRoZSBmaXJzdCBpbml0aWF0b3IgaXMgdGhlIHVzdWFsIG9uZSBzbyBpdCdzIG1hbmFnZWQgYnkgdGhlIE1hY3JvQVBJIHdoZXJlYXNcblx0ICogdGhlIHNlY29uZCBvbmUgaXMgc3BlY2lmaWMgdG8gdGhpcyBBUEkgYW5kIGhhcyB0byBtYW5hZ2VkIGJ5IHRoZSBUYWJsZUFQSS5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgVUk1IGV2ZW50IHNvdXJjZVxuXHQgKiBAcmV0dXJucyBUaGUgVGFibGVBUEkgb3IgZmFsc2UgaWYgbm90IGZvdW5kXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRzdGF0aWMgX2dldEFQSUV4dGVuc2lvbihzb3VyY2U6IE1hbmFnZWRPYmplY3QpOiBUYWJsZUFQSSB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHRhYmxlQVBJOiBUYWJsZUFQSSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoc291cmNlLmlzQTxPRGF0YUxpc3RCaW5kaW5nPihcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHR0YWJsZUFQSSA9ICgodGhpcyBhcyB1bmtub3duIGFzIFhNTEV2ZW50SG9sZGVyKS5pbnN0YW5jZU1hcD8uZ2V0KHRoaXMpIGFzIFRhYmxlQVBJW10pPy5maW5kKFxuXHRcdFx0XHQoYXBpKSA9PiBhcGkuY29udGVudD8uZ2V0Um93QmluZGluZz8uKCkgPT09IHNvdXJjZSB8fCBhcGkuY29udGVudD8uZ2V0QmluZGluZyhcIml0ZW1zXCIpID09PSBzb3VyY2Vcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZUFQSTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIHRhYmxlIHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0Ly8gV2hlbiBhIGNvbnRleHQgbWVudSBpdGVtIGhhcyBiZWVuIHByZXNzZWQsIHRoZSBzZWxlY3RlZENvbnRleHRzIGNvcnJlc3BvbmQgdG8gdGhlIGl0ZW1zIG9uIHdoaWNoXG5cdFx0Ly8gdGhlIGNvcnJlc3BvbmRpbmcgYWN0aW9uIHNoYWxsIGJlIGFwcGxpZWQuXG5cdFx0cmV0dXJuIHRoaXMuaXNDb250ZXh0TWVudUFjdGl2ZSgpXG5cdFx0XHQ/IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9zZWxlY3RlZENvbnRleHRzXCIpID8/IFtdXG5cdFx0XHQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG1lc3NhZ2UgdG8gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBUaGUgbWVzc2FnZSBhcHBsaWVzIHRvIHRoZSB3aG9sZSB0YWJsZSBhbmQgbm90IHRvIGFuIGluZGl2aWR1YWwgdGFibGUgcm93LlxuXHQgKiBAcGFyYW0gW3BhcmFtZXRlcnNdIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgbWVzc2FnZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy50eXBlIE1lc3NhZ2UgdHlwZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5tZXNzYWdlIE1lc3NhZ2UgdGV4dFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5kZXNjcmlwdGlvbiBNZXNzYWdlIGRlc2NyaXB0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnBlcnNpc3RlbnQgVHJ1ZSBpZiB0aGUgbWVzc2FnZSBpcyBwZXJzaXN0ZW50XG5cdCAqIEByZXR1cm5zIFByb21pc2U8c3RyaW5nPiBUaGUgSUQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgYWRkTWVzc2FnZShwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0aWYgKCF0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpICYmICF0YWJsZS5nZXRSb3dCaW5kaW5nKCkpIHtcblx0XHRcdGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrQ29udGV4dENoYW5nZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0XHRpZiAodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0XHRcdFx0dGFibGUuZGV0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgY2hlY2tDb250ZXh0Q2hhbmdlKTtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRhYmxlLmF0dGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGNoZWNrQ29udGV4dENoYW5nZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgcm93QmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCByZXNvbHZlZFBhdGggPSByb3dCaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIGFzIHN0cmluZztcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVNZXNzYWdlKHRhYmxlLCByZXNvbHZlZFBhdGgsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVNZXNzYWdlKFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHtcblx0XHRcdHRhcmdldDogcGF0aCxcblx0XHRcdHR5cGU6IHBhcmFtZXRlcnMudHlwZSxcblx0XHRcdG1lc3NhZ2U6IHBhcmFtZXRlcnMubWVzc2FnZSxcblx0XHRcdHByb2Nlc3NvcjogdGFibGUuZ2V0TW9kZWwoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0cGVyc2lzdGVudDogcGFyYW1ldGVycy5wZXJzaXN0ZW50XG5cdFx0fSk7XG5cdFx0dGhpcy5fZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyhtZXNzYWdlKTtcblx0XHRyZXR1cm4gbWVzc2FnZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgdGFibGUgc2hvdWxkIHJlcXVlc3QgcmVjb21tZW5kYXRpb25zIGZ1bmN0aW9uLlxuXHQgKiBUaGUgdGFibGUgaW4gdmlldyBzaG91bGQgb25seSByZXF1ZXN0IHJlY29tbWVuZGF0aW9ucyBpZlxuXHQgKiAxLiBUaGUgUGFnZSBpcyBpbiBFZGl0IG1vZGVcblx0ICogMi4gVGFibGUgaXMgbm90IHJlYWQgb25seVxuXHQgKiAzLiBJdCBoYXMgYW5ub3RhdGlvbiBmb3IgQ29tbW9uLlJlY29tbWVuZGVkVmFsdWVzRnVuY3Rpb25cblx0ICogNC4gVmlldyBpcyBub3QgTGlzdFJlcG9ydCwgZm9yIE9QL1N1Yk9QIGFuZCBmb3J3YXJkIHZpZXdzIHJlY29tbWVuZGF0aW9ucyBzaG91bGQgYmUgcmVxdWVzdGVkLlxuXHQgKiBAcGFyYW0gX29FdmVudFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9ucyBuZWVkcyB0byBiZSByZXF1ZXN0ZWRcblx0ICovXG5cdGNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KF9vRXZlbnQ6IFVJNUV2ZW50KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaXNUYWJsZVJlYWRPbmx5ID0gdGhpcy5nZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIpO1xuXHRcdGNvbnN0IGlzRWRpdGFibGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRoaXMpO1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdC8vIHJlcXVlc3QgZm9yIGFjdGlvbiBvbmx5IGlmIHdlIGFyZSBpbiBPUC9TdWJPUCBhbmQgaW4gRWRpdCBtb2RlLCBhbHNvIHRhYmxlIGlzIG5vdCByZWFkT25seVxuXHRcdGlmICghaXNUYWJsZVJlYWRPbmx5ICYmIGlzRWRpdGFibGUgJiYgdmlld0RhdGEuY29udmVydGVyVHlwZSAhPT0gXCJMaXN0UmVwb3J0XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZShpZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbXNnTWFuYWdlciA9IHRoaXMuX2dldE1lc3NhZ2VNYW5hZ2VyKCk7XG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBtc2dNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtZXNzYWdlcy5maW5kKChlOiBNZXNzYWdlKSA9PiBlLmdldElkKCkgPT09IGlkKTtcblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRtc2dNYW5hZ2VyLnJlbW92ZU1lc3NhZ2VzKHJlc3VsdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3RzIGEgcmVmcmVzaCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2goKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGVSb3dCaW5kaW5nID0gdGhpcy5jb250ZW50LmdldFJvd0JpbmRpbmcoKTtcblx0XHRpZiAodGFibGVSb3dCaW5kaW5nICYmICh0YWJsZVJvd0JpbmRpbmcuaXNSZWxhdGl2ZSgpIHx8IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSkge1xuXHRcdFx0Ly8gRm9yIHRyZWUgdGFibGVzLCB0aGUgcmVmcmVzaCBpcyBhbHdheXMgZG9uZSB1c2luZyBzaWRlIGVmZmVjdHMgdG8gcHJlc2VydmUgZXhwYW5zaW9uIHN0YXRlc1xuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuY29udGVudCk7XG5cdFx0XHRjb25zdCBoZWFkZXJDb250ZXh0ID0gdGFibGVSb3dCaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblxuXHRcdFx0aWYgKGhlYWRlckNvbnRleHQpIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdFx0LnJlcXVlc3RTaWRlRWZmZWN0cyhbeyAkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIiB9XSwgaGVhZGVyQ29udGV4dCwgdGFibGVSb3dCaW5kaW5nLmdldEdyb3VwSWQoKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhYmxlUm93QmluZGluZz8ucmVmcmVzaCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldFF1aWNrRmlsdGVyKCk6IFF1aWNrRmlsdGVyU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFF1aWNrRmlsdGVyKCkgYXMgUXVpY2tGaWx0ZXJTZWxlY3RvciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgYXBwbGllZCB0byB0aGUgdGFibGVcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcz4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IHRhYmxlU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRhYmxlKTtcblxuXHRcdFx0Ly9XZSByZW1vdmUgXCJQcm9wZXJ0eTo6XCIgYXMgaXQgaXMgcHJlZml4ZWQgdG8gdGhvc2UgY29sdW1ucyB0aGF0IGhhdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eUluZm9zLlxuXHRcdFx0Ly9UaGUgUHJlc2VudGF0aW9uIFZhcmlhbnQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyAoaXQgaXMgb25seSByZXF1aXJlZCBieSB0aGUgVGFibGUgYW5kIEFwcFN0YXRlKS5cblx0XHRcdGNvbnN0IHNvcnRPcmRlciA9IHRhYmxlU3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRQcm9wZXJ0eTogc29ydGVyLm5hbWUucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIiksXG5cdFx0XHRcdFx0RGVzY2VuZGluZzogc29ydGVyLmRlc2NlbmRpbmcgPz8gZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZ3JvdXBMZXZlbHMgPSB0YWJsZVN0YXRlLmdyb3VwTGV2ZWxzPy5tYXAoKGdyb3VwOiBHcm91cExldmVscykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZ3JvdXAubmFtZS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgdGFibGVWaXogPSB7XG5cdFx0XHRcdENvbnRlbnQ6IHRhYmxlU3RhdGUuaXRlbXM/Lm1hcCgoaXRlbTogSXRlbXMpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0VmFsdWU6IGl0ZW0ubmFtZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRUeXBlOiBcIkxpbmVJdGVtXCJcblx0XHRcdH07XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHsgYWdncmVnYXRlZD86IGJvb2xlYW4gfT4gPSB7fTtcblx0XHRcdGxldCBoYXNBZ2dyZWdhdGlvbnMgPSBmYWxzZTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRhYmxlU3RhdGUuYWdncmVnYXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0tleSA9IGtleS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdFx0YWdncmVnYXRpb25zW25ld0tleV0gPSB0YWJsZVN0YXRlLmFnZ3JlZ2F0aW9uc1trZXldO1xuXHRcdFx0XHRoYXNBZ2dyZWdhdGlvbnMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gKHRhYmxlLmdldFBheWxvYWQoKSBhcyB7IGluaXRpYWxFeHBhbnNpb25MZXZlbD86IG51bWJlcjsgaGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nIH0pXG5cdFx0XHRcdD8uaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0Y29uc3QgdGFibGVQViA9IG5ldyBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MoKTtcblx0XHRcdHRhYmxlUFYuc2V0VGFibGVWaXN1YWxpemF0aW9uKHRhYmxlVml6KTtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXM6IFB2UHJvcGVydGllcyA9IHtcblx0XHRcdFx0R3JvdXBCeTogZ3JvdXBMZXZlbHMgfHwgW10sXG5cdFx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyIHx8IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGhhc0FnZ3JlZ2F0aW9ucykge1xuXHRcdFx0XHRwcm9wZXJ0aWVzLkFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9ucztcblx0XHRcdH1cblx0XHRcdGlmIChpbml0aWFsRXhwYW5zaW9uTGV2ZWwpIHtcblx0XHRcdFx0cHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSBpbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZVBWLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cdFx0XHRyZXR1cm4gdGFibGVQVjtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBhIG5ldyBwcmVzZW50YXRpb24gdmFyaWFudCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZVBWIFRoZSBuZXcgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyB0byBiZSBzZXQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRQcmVzZW50YXRpb25WYXJpYW50KHRhYmxlUFY6IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblxuXHRcdFx0Y29uc3QgY3VycmVudFN0YXRlUFYgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSB0aGlzLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb05hbWVzID0gcHJvcGVydHlJbmZvcy5tYXAoKHByb3BJbmZvKSA9PiBwcm9wSW5mby5rZXkpO1xuXHRcdFx0Y29uc3QgbmV3VGFibGVTdGF0ZSA9IGNvbnZlcnRQVlRvU3RhdGUodGFibGVQViwgY3VycmVudFN0YXRlUFYsIHByb3BlcnR5SW5mb05hbWVzKTtcblx0XHRcdGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IHRhYmxlUFYuZ2V0UHJvcGVydGllcygpO1xuXHRcdFx0aWYgKHRhYmxlUHJvcGVydGllcz8uaW5pdGlhbEV4cGFuc2lvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgdGFibGVQYXlsb2FkID0gdGFibGUuZ2V0UGF5bG9hZCgpIGFzIHsgaW5pdGlhbEV4cGFuc2lvbkxldmVsPzogbnVtYmVyOyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfTtcblx0XHRcdFx0dGFibGVQYXlsb2FkLmluaXRpYWxFeHBhbnNpb25MZXZlbCA9IHRhYmxlUHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKHRhYmxlLCBuZXdUYWJsZVN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gc2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBhcHBsaWVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgS2V5IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFyaWFudC4gSW4gY2FzZSB0aGUgbW9kZWwgaXMgbm90IHlldCBzZXQsIGBudWxsYCB3aWxsIGJlIHJldHVybmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRDdXJyZW50VmFyaWFudEtleSgpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKT8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgYSB2YXJpYW50IG1hbmFnZW1lbnQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gSWYgdGhlIHBhc3NlZCBrZXkgZG9lc24ndCBpZGVudGlmeSBhIHZhcmlhbnQsIGl0IHdpbGwgYmUgaWdub3JlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk7XG5cdFx0dmFyaWFudE1hbmFnZW1lbnQuc2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5KTtcblx0fVxuXG5cdF9nZXRNZXNzYWdlTWFuYWdlcigpOiBNZXNzYWdpbmcge1xuXHRcdHJldHVybiBNZXNzYWdpbmc7XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdF9nZXRSb3dCaW5kaW5nKCk6IE9EYXRhTGlzdEJpbmRpbmcge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBvVGFibGUuZ2V0Um93QmluZGluZygpO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q291bnRzKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIFRhYmxlVXRpbHMuZ2V0TGlzdEJpbmRpbmdGb3JDb3VudChvVGFibGUsIG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLCB7XG5cdFx0XHRiYXRjaEdyb3VwSWQ6ICF0aGlzLmdldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiKSA/IG9UYWJsZS5kYXRhKFwiYmF0Y2hHcm91cElkXCIpIDogXCIkYXV0b1wiLFxuXHRcdFx0YWRkaXRpb25hbEZpbHRlcnM6IFRhYmxlVXRpbHMuZ2V0SGlkZGVuRmlsdGVycyhvVGFibGUpXG5cdFx0fSlcblx0XHRcdC50aGVuKChpVmFsdWU6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVGFibGVVdGlscy5nZXRDb3VudEZvcm1hdHRlZChpVmFsdWUpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBcIjBcIjtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNvbnRleHQgY2hhbmdlIG9uIHRoZSB0YWJsZS5cblx0ICogQW4gZXZlbnQgaXMgZmlyZWQgdG8gcHJvcGFnYXRlIHRoZSBPZGF0YUxpc3RCaW5kaW5nIGV2ZW50IGFuZCB0aGUgZW5hYmxlbWVudFxuXHQgKiBvZiB0aGUgY3JlYXRpb24gcm93IGlzIGNhbGN1bGF0ZWQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgVUk1IGV2ZW50XG5cdCAqL1xuXHRvbkxpc3RCaW5kaW5nQ2hhbmdlKHVpNUV2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwibGlzdEJpbmRpbmdDaGFuZ2VcIiwgdWk1RXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHR0aGlzLnNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnJlZnJlc2hTZWxlY3RlZENvdW50KCk7XG5cdFx0VGFibGVSdW50aW1lLnNldENvbnRleHRzQXN5bmModGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkZpZWxkTGl2ZUNoYW5nZSh1aTVFdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRmllbGRMaXZlQ2hhbmdlKHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb24gYSBxdWlja0ZpbHRlclxuXHQgKiBUaGUgdGFibGUgaXMgcmVib3VuZCBpZiB0aGUgRmlsdGVyQmFyIGlzIG5vdCBzdXNwZW5kZWQgYW5kIHVwZGF0ZSB0aGUgQXBwU3RhdGUuXG5cdCAqXG5cdCAqL1xuXHRvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdC8vIFJlYmluZCB0aGUgdGFibGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIHF1aWNrIGZpbHRlciBrZXkuXG5cdFx0Ly8gV2UgZG9uJ3QgcmViaW5kIHRoZSB0YWJsZSBpZiB0aGUgZmlsdGVyQmFyIGZvciB0aGUgdGFibGUgaXMgc3VzcGVuZGVkXG5cdFx0Ly8gYXMgcmViaW5kIHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBmaWx0ZXJCYXIgaXMgcmVzdW1lZFxuXHRcdGNvbnN0IGZpbHRlckJhcklEID0gdGFibGUuZ2V0RmlsdGVyKCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gKGZpbHRlckJhcklEICYmIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsdGVyQmFySUQpKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFmaWx0ZXJCYXI/LmdldFN1c3BlbmRTZWxlY3Rpb24/LigpKSB7XG5cdFx0XHR0YWJsZS5yZWJpbmQoKTtcblx0XHR9XG5cdFx0KENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHRvblRhYmxlTmF2aWdhdGUob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBvQ29udGV4dDogQ29udGV4dCwgbVBhcmFtZXRlcnM6IG9iamVjdCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUob0NvbnRleHQpKSB7XG5cdFx0XHRpZiAodGhpcy5mdWxsU2NyZWVuRGlhbG9nKSB7XG5cdFx0XHRcdC8vIEV4aXQgZnVsbHNjcmVlbiBtb2RlIGJlZm9yZSBuYXZpZ2F0aW9uXG5cdFx0XHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZy5jbG9zZSgpOyAvLyBUaGUgZnVsbHNjcmVlbmRpYWxvZyB3aWxsIHNldCB0aGlzLmZ1bGxTY3JlZW5EaWFsb2cgdG8gdW5kZWZpbmVkIHdoZW4gY2xvc2luZ1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBtUGFyYW1ldGVycywgeyByZWFzb246IE5hdmlnYXRpb25SZWFzb24uUm93UHJlc3MgfSk7XG5cdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQob0NvbnRleHQsIG5hdmlnYXRpb25QYXJhbWV0ZXJzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgcm93IHByZXNzIGV2ZW50IG9mIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHByZXNzRXZlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPlxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uVGFibGVSb3dQcmVzcyhwcmVzc0V2ZW50OiBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB2b2lkPiB7XG5cdFx0Y29uc3Qgcm93TmF2aWdhdGlvbkluZm8gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uYW5ub3RhdGlvbi5yb3c/Lm5hdmlnYXRpb25JbmZvO1xuXHRcdGlmICh0aGlzLm92ZXJyaWRlUm93UHJlc3MgPT09IHRydWUpIHtcblx0XHRcdC8vIFRoZXJlJ3MgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJvd1ByZXNzIGV2ZW50IC0tPiB3ZSBqdXN0IGZpcmUgdGhlIGV2ZW50IGFuZCBkbyBub3QgbmF2aWdhdGVcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicm93UHJlc3NcIiwgcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdH0gZWxzZSBpZiAocm93TmF2aWdhdGlvbkluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0aWYgKHJvd05hdmlnYXRpb25JbmZvLnR5cGUgPT09IFwiT3V0Ym91bmRcIikge1xuXHRcdFx0XHQvLyBPdXRib3VuZCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiB0aGlzLmF2b2lkUGFyYWxsZWxDYWxscyhcblx0XHRcdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHRcdFx0Y29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZChcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlcixcblx0XHRcdFx0XHRcdFx0cm93TmF2aWdhdGlvbkluZm8ubmF2aWdhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW50ZXJuYWwgbmF2aWdhdGlvblxuXHRcdFx0XHRjb25zdCBlZGl0YWJsZSA9IHJvd05hdmlnYXRpb25JbmZvLmNoZWNrRWRpdGFibGUgPyAhYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRjYWxsRXh0ZW5zaW9uOiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldFBhdGg6IHJvd05hdmlnYXRpb25JbmZvLnRhcmdldFBhdGgsXG5cdFx0XHRcdFx0ZWRpdGFibGUsXG5cdFx0XHRcdFx0cmVjcmVhdGVDb250ZXh0OiByb3dOYXZpZ2F0aW9uSW5mby5yZWNyZWF0ZUNvbnRleHRcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRyZXR1cm4gdGhpcy5vblRhYmxlTmF2aWdhdGUoY29udHJvbGxlciwgYmluZGluZ0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaXJlcyB0aGUgY29ycmVzcG9uZGluZyBldmVudCB3aGVuIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGlzIHByZXNzZWQgKGluIEFMUCkuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VnbWVudGVkQnV0dG9uUHJlc3NcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIG5ldyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2VsZWN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQuLi5vRXZlbnQuZ2V0UGFyYW1ldGVycygpLFxuXHRcdFx0b3JpZ2luYWxTb3VyY2U6IG9FdmVudC5nZXRTb3VyY2UoKVxuXHRcdH07XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2VsZWN0ZWRcIiwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhcmlhbnRTYXZlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2F2ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHJvdyBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Sb3dQcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0aXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0Ly8gcHJldmVudCBuYXZpZ2F0aW9uIHRvIGFuIGVtcHR5IHJvd1xuXHRcdGNvbnN0IGVtcHR5Um93ID0gY29udGV4dC5pc0luYWN0aXZlKCkgPT0gdHJ1ZSAmJiBjb250ZXh0LmlzVHJhbnNpZW50KCkgPT09IHRydWU7XG5cdFx0Ly8gT3IgaW4gdGhlIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCB0YWJsZSwgaWYgd2UncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGEgY29udGV4dCBjb3JyZXNwb25kaW5nIHRvIGEgdmlzdWFsIGdyb3VwIG9yIGdyYW5kIHRvdGFsXG5cdFx0Ly8gLS0+IENhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0Y29uc3QgYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQgPVxuXHRcdFx0dGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5lbmFibGVBbmFseXRpY3MgPT09IHRydWUgJiZcblx0XHRcdGNvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHRcIikgJiZcblx0XHRcdHR5cGVvZiBjb250ZXh0LmdldFByb3BlcnR5KFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpID09PSBcImJvb2xlYW5cIjtcblx0XHRyZXR1cm4gIShlbXB0eVJvdyB8fCBhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhcblx0XHRvRXZlbnQ6IFVJNUV2ZW50LFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB8IGJvb2xlYW4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRyZXR1cm4gdGhpcy5fb25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhjb250cm9sbGVyLCBjb250ZXh0cywgbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbk9wZW5Jbk5ld1RhYlByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0YWxsQ29udGV4dHM6IENvbnRleHRbXSxcblx0XHRuYXZpZ2FibGVDb250ZXh0czogQ29udGV4dFtdLFxuXHRcdHBhcmFtZXRlcnM6IFJvdXRpbmdOYXZpZ2F0aW9uUGFyYW1ldGVycyxcblx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiBQcm9taXNlPHZvaWQgfCBib29sZWFuPiB7XG5cdFx0aWYgKG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCA8PSBtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXMpIHtcblx0XHRcdGNvbnN0IHByb21pc2VUb1dhaXQgPSBuZXcgUHJvbWlzZUtlZXBlcjxib29sZWFuPigpO1xuXHRcdFx0aWYgKG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCA8IGFsbENvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCB0ZXh0S2V5ID1cblx0XHRcdFx0XHRuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGggPT09IDFcblx0XHRcdFx0XHRcdD8gXCJUX1RBQkxFX05BVklHQVRJT05fTk9UX0FMTF9JVEVNU19OQVZJR0FCTEVfU0lOR1VMQVJcIlxuXHRcdFx0XHRcdFx0OiBcIlRfVEFCTEVfTkFWSUdBVElPTl9OT1RfQUxMX0lURU1TX05BVklHQUJMRV9QTFVSQUxcIjtcblx0XHRcdFx0TWVzc2FnZUJveC5jb25maXJtKFxuXHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQodGV4dEtleSwgW2FsbENvbnRleHRzLmxlbmd0aCwgbmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoLCBtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXNdKSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvbkNsb3NlOiAocmVzdWx0OiBzdHJpbmcpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gXCJDQU5DRUxcIikge1xuXHRcdFx0XHRcdFx0XHRcdHByb21pc2VUb1dhaXQucmVzb2x2ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cHJvbWlzZVRvV2FpdC5yZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByb21pc2VUb1dhaXQucmVzb2x2ZSh0cnVlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNob3VsZFByb2NlZWQgPSBhd2FpdCBwcm9taXNlVG9XYWl0LnByb21pc2U7XG5cdFx0XHRpZiAoc2hvdWxkUHJvY2VlZCkge1xuXHRcdFx0XHRuYXZpZ2FibGVDb250ZXh0cy5mb3JFYWNoKGFzeW5jIChjb250ZXh0OiBDb250ZXh0KSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0KSkge1xuXHRcdFx0XHRcdFx0cGFyYW1ldGVycy5lZGl0YWJsZSA9ICFjb250ZXh0LmdldFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlRm9yd2FyZFRvQ29udGV4dChjb250ZXh0LCBwYXJhbWV0ZXJzKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhcblx0XHRcdFx0TGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhLmdldFRleHQoXCJUX1RBQkxFX05BVklHQVRJT05fVE9PX01BTllfSVRFTVNfU0VMRUNURURcIiwgW1xuXHRcdFx0XHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtc1xuXHRcdFx0XHRdKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbFBhdGNoQ29tcGxldGVkKGV2dDogRXZlbnQ8eyBlcnJvcjogeyBzdGF0dXM/OiBudW1iZXI7IGNhdXNlPzogeyBzdGF0dXM/OiBudW1iZXIgfTsgbWVzc2FnZT86IHN0cmluZyB9IH0+KTogdm9pZCB7XG5cdFx0Ly8gQkNQOiAyMzgwMDIzMDkwXG5cdFx0Ly8gV2UgaGFuZGxlIGVuYWJsZW1lbnQgb2YgRGVsZXRlIGZvciB0aGUgdGFibGUgaGVyZS5cblx0XHQvLyBFZGl0Rmxvdy50cyNoYW5kbGVQYXRjaFNlbnQgaXMgaGFuZGxpbmcgdGhlIGFjdGlvbiBlbmFibGVtZW50LlxuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGNvbnN0IHNlbGVjdGVkQ29udGV4dHMgPSB0aGlzLmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblx0XHREZWxldGVIZWxwZXIudXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMoaW50ZXJuYWxNb2RlbENvbnRleHQsIHNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdGlmIChldnQuZ2V0UGFyYW1ldGVyKFwiZXJyb3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZyh7IGNvbnRyb2w6IHRoaXMgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5yZWxlYXNlSG9sZEJ5Q29udHJvbCh0aGlzKTtcblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbFBhdGNoU2VudChldnQ6IE9EYXRhQ29udGV4dEJpbmRpbmckUGF0Y2hTZW50RXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdGNvbnN0IGVkaXRGbG93RXh0ZW5zaW9uID0gY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHRjb250cm9sbGVyLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmhhbmRsZVBhdGNoU2VudCkge1xuXHRcdFx0ZWRpdEZsb3dFeHRlbnNpb24uaGFuZGxlUGF0Y2hTZW50LmNhbGwodGhpcywgZXZ0KTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2xsZXIuaW5saW5lRWRpdEZsb3cuaXNJbmxpbmVFZGl0UG9zc2libGUoKSkge1xuXHRcdFx0Y29udHJvbGxlci5pbmxpbmVFZGl0Rmxvdy5oYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50LmNhbGwodGhpcywgZXZ0KTtcblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZWNlaXZlZChvRXZlbnQ6IFVJNUV2ZW50PHsgZXJyb3I6IHN0cmluZyB9LCBPRGF0YUxpc3RCaW5kaW5nPik6IHZvaWQge1xuXHRcdGNvbnN0IGlzUmVjb21tZW5kYXRpb25SZWxldmFudCA9IHRoaXMuY2hlY2tJZlJlY29tbWVuZGF0aW9uUmVsZXZhbnQob0V2ZW50KTtcblx0XHRpZiAoaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50KSB7XG5cdFx0XHRjb25zdCBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMuZ2V0SWRlbnRpZmllckNvbHVtbihpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQpIGFzIHN0cmluZ1tdO1xuXHRcdFx0Y29uc3QgcmVzcG9uc2VDb250ZXh0c0FycmF5ID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldEFsbEN1cnJlbnRDb250ZXh0cygpO1xuXHRcdFx0Y29uc3QgbmV3Q29udGV4dHM6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBbXTtcblx0XHRcdHJlc3BvbnNlQ29udGV4dHNBcnJheS5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG5cdFx0XHRcdG5ld0NvbnRleHRzLnB1c2goe1xuXHRcdFx0XHRcdGNvbnRleHQsXG5cdFx0XHRcdFx0Y29udGV4dElkZW50aWZpZXJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyhuZXdDb250ZXh0cywgdHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5ob2xkTWVzc2FnZXNGb3JDb250cm9sKHRoaXMpO1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZXJyb3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZyh7IGNvbnRyb2w6IHRoaXMgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5yZWxlYXNlSG9sZEJ5Q29udHJvbCh0aGlzKTtcblx0XHRcdHRoaXMuc2V0RG93bmxvYWRVcmwoKTtcblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJkYXRhSW5pdGlhbGl6ZWRcIiwgdHJ1ZSk7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdFx0aWYgKHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC5maWx0ZXJzPy5xdWlja0ZpbHRlcnM/LnNob3dDb3VudHMgPT09IHRydWUpIHtcblx0XHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8uc2V0Q291bnRzQXNMb2FkaW5nKCk7XG5cdFx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnJlZnJlc2hVblNlbGVjdGVkQ291bnRzKCk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5ob2xkTWVzc2FnZXNGb3JDb250cm9sKHRoaXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIFBhc3RlIG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgZXZlbnRcblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgVGhlIHBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvblBhc3RlKGV2dDogUGFzdGVQcm92aWRlciRQYXN0ZUV2ZW50LCBjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgcmF3UGFzdGVkRGF0YSA9IGV2dC5nZXRQYXJhbWV0ZXIoXCJkYXRhXCIpLFxuXHRcdFx0c291cmNlID0gZXZ0LmdldFNvdXJjZSgpO1xuXHRcdGxldCB0YWJsZTogVGFibGU7XG5cdFx0aWYgKCFmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0Ly8gdGFibGUgdG9vbGJhclxuXHRcdFx0dGFibGUgPSAoc291cmNlLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgPyBzb3VyY2UgOiAoc291cmNlIGFzIENvbnRyb2wpLmdldFBhcmVudCgpKSBhcyBUYWJsZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY29udGV4dCBtZW51XG5cdFx0XHRjb25zdCBtZW51ID0gKHNvdXJjZS5pc0EoXCJzYXAubS5NZW51XCIpID8gc291cmNlIDogKHNvdXJjZSBhcyBDb250cm9sKS5nZXRQYXJlbnQoKSkgYXMgTWVudTtcblx0XHRcdHRhYmxlID0gbWVudS5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCkgYXMgVGFibGU7XG5cdFx0fVxuXHRcdGNvbnN0IGludGVybmFsQ29udGV4dCA9IHRhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cblx0XHQvLyBJZiBwYXN0ZSBpcyBkaXNhYmxlZCBvciBpZiB3ZSdyZSBub3QgaW4gZWRpdCBtb2RlIGluIGFuIE9iamVjdFBhZ2UsIHdlIGNhbid0IHBhc3RlIGFueXRoaW5nXG5cdFx0aWYgKCF0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZVBhc3RlIHx8ICh0YWJsZS5nZXRSb3dCaW5kaW5nKCkuaXNSZWxhdGl2ZSgpICYmICFDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRoaXMpKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIG9ubHkgaW4gY2FzZSBvZiBUcmVlVGFibGVcblx0XHRjb25zdCBhY3Rpb24gPSBpbnRlcm5hbENvbnRleHQuZ2V0UHJvcGVydHkoXCJub2RlVXBkYXRlc0luZm8vbGFzdEFjdGlvblwiKTtcblx0XHRjb25zdCBzcmNDb250ZXh0cyA9IGludGVybmFsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm5vZGVVcGRhdGVzSW5mby9wYXN0YWJsZUNvbnRleHRzXCIpO1xuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wudHlwZSA9PT0gXCJUcmVlVGFibGVcIikge1xuXHRcdFx0bGV0IHNyY0NvbnRleHQgPSBzcmNDb250ZXh0c1swXTtcblx0XHRcdGNvbnN0IG5ld1BhcmVudENvbnRleHQgPSAhZm9yQ29udGV4dE1lbnVcblx0XHRcdFx0PyAodGFibGUuZ2V0U2VsZWN0ZWRDb250ZXh0cygpWzBdIGFzIENvbnRleHQpXG5cdFx0XHRcdDogKGludGVybmFsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9zZWxlY3RlZENvbnRleHRzXCIpWzBdIGFzIENvbnRleHQpO1xuXHRcdFx0Ly8gSWYgdGhlIHRhcmdldENvbnRleHQgaGFzIGJlZW4gZGlzYXNzb2NpYXRlZCBmcm9tIHRoZSB0YWJsZSBkdWUgdG8gZXhwYW5kIGFuZCBjb2xsYXBzZSBhY3Rpb25zLCB3ZSBhdHRlbXB0IHRvIHJldHJpZXZlIGl0IHVzaW5nIGl0cyBwYXRoLlxuXHRcdFx0c3JjQ29udGV4dCA9IHRhYmxlXG5cdFx0XHRcdC5nZXRSb3dCaW5kaW5nKClcblx0XHRcdFx0LmdldEFsbEN1cnJlbnRDb250ZXh0cygpXG5cdFx0XHRcdC5maW5kKChjb250ZXh0KSA9PiBjb250ZXh0LmdldFBhdGgoKSA9PT0gc3JjQ29udGV4dD8uZ2V0UGF0aCgpKTtcblxuXHRcdFx0aWYgKCFzcmNDb250ZXh0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihgVGhlICR7YWN0aW9ufSBvcGVyYXRpb24gaXMgdW5zdWNjZXNzZnVsIGJlY2F1c2UgdGhlIHJlbGV2YW50IGNvbnRleHQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0YWJsZS5zZXRCdXN5KHRydWUpO1xuXHRcdFx0XHRhd2FpdCBQcm9taXNlLmFsbChbXG5cdFx0XHRcdFx0c3JjQ29udGV4dC5tb3ZlKHsgcGFyZW50OiBuZXdQYXJlbnRDb250ZXh0ID8/IG51bGwsIGNvcHk6IGFjdGlvbiA9PT0gXCJDb3B5XCIgfSksXG5cdFx0XHRcdFx0YWN0aW9uID09PSBcIkNvcHlcIlxuXHRcdFx0XHRcdFx0PyB0aGlzLnJlcXVlc3RTaWRlRWZmZWN0c0ZvckNvcHlBY3Rpb24oc3JjQ29udGV4dClcblx0XHRcdFx0XHRcdDogdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JDaGFuZ2VOZXh0U2libGluZ0FjdGlvbihzcmNDb250ZXh0KVxuXHRcdFx0XHRdKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX1RBQkxFRFJPUF9GQUlMRURcIiwgW1wiXCJdKSk7XG5cdFx0XHRcdExvZy5lcnJvcihgVGhlICR7YWN0aW9ufSBvcGVyYXRpb24gaXMgdW5zdWNjZXNzZnVsLiBgICsgKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlID8/IFwiXCIpO1xuXHRcdFx0fVxuXHRcdFx0dGFibGUuc2V0QnVzeShmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9wYXN0YWJsZUNvbnRleHRzYCwgW10pO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBub2RlVXBkYXRlc0luZm8vcGFzdGVFbmFibGVtZW50YCwgZmFsc2UpO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBjb250ZXh0bWVudS9ub2RlVXBkYXRlc0luZm8vcGFzdGVFbmFibGVtZW50YCwgZmFsc2UpO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBub2RlVXBkYXRlc0luZm8vbGFzdEFjdGlvbmAsIHVuZGVmaW5lZCk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvL1RoaXMgY29kZSBpcyBleGVjdXRlZCBmb3IgdGFibGVzIGV4Y2VwdGVkIFRyZWVUYWJsZVxuXHRcdGlmICh0YWJsZS5nZXRFbmFibGVQYXN0ZSgpID09PSB0cnVlICYmICFmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0Y29uc3QgY2VsbFNlbGVjdGlvbiA9IHRhYmxlLmdldENlbGxTZWxlY3RvcigpPy5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdGlmIChjZWxsU2VsZWN0aW9uPy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0UGFzdGVIZWxwZXIucGFzdGVSYW5nZURhdGEocmF3UGFzdGVkRGF0YSA/PyBbXSwgY2VsbFNlbGVjdGlvbiwgdGFibGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0UGFzdGVIZWxwZXIucGFzdGVEYXRhKHJhd1Bhc3RlZERhdGEgPz8gW10sIHRhYmxlLCBjb250cm9sbGVyKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9PUF9DT05UUk9MTEVSX1NBUEZFX1BBU1RFX0RJU0FCTEVEX01FU1NBR0VcIiksIHtcblx0XHRcdFx0dGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUlwiKVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIEN1dCBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25DdXQoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDdXRcIik7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ29weSBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Db3B5KGV2dDogVUk1RXZlbnQ8e30sIFVJNUVsZW1lbnQ+LCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5fb25Db3B5Q3V0KGV2dCwgZm9yQ29udGV4dE1lbnUsIFwiQ29weVwiKTtcblx0fVxuXG5cdC8vIFRoaXMgZXZlbnQgd2lsbCBhbGxvdyB1cyB0byBpbnRlcmNlcHQgdGhlIGV4cG9ydCBiZWZvcmUgaXMgdHJpZ2dlcmVkIHRvIGNvdmVyIHNwZWNpZmljIGNhc2VzXG5cdC8vIHRoYXQgY291bGRuJ3QgYmUgYWRkcmVzc2VkIG9uIHRoZSBwcm9wZXJ0eUluZm9zIGZvciBlYWNoIGNvbHVtbi5cblx0Ly8gZS5nLiBGaXhlZCBUYXJnZXQgVmFsdWUgZm9yIHRoZSBkYXRhcG9pbnRzXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudDogVGFibGUkQmVmb3JlRXhwb3J0RXZlbnQpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25CZWZvcmVFeHBvcnQoZXhwb3J0RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIE1EQyBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIHRvIGRpc3BsYXkgbWVzc2FnZVN0cmlwIG9uIGEgdGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlXG5cdCAqIEBwYXJhbSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdG8gcmVuZGVyIHRoZSBtZXNzYWdlU3RyaXAgdmlzaWJsZVxuXHQgKi9cblx0ZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyKG1lc3NhZ2U6IE1lc3NhZ2UsIGNvbnRyb2w6IENvbnRyb2wpOiBib29sZWFuIHtcblx0XHRjb25zdCBtZGNUYWJsZSA9IGNvbnRyb2wgYXMgTURDVGFibGU7XG5cdFx0Y29uc3Qgc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID0gbWRjVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IHNUYWJsZVJvd0JpbmRpbmcgPSAoc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID8gYCR7c1RhYmxlQ29udGV4dEJpbmRpbmdQYXRofS9gIDogXCJcIikgKyBtZGNUYWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBzVGFibGVSb3dCaW5kaW5nID09PSBtZXNzYWdlLmdldFRhcmdldHMoKVswXSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGV2ZW50IGhhbmRsZXMgdGhlIERhdGFTdGF0ZSBvZiB0aGUgRGF0YVN0YXRlSW5kaWNhdG9yIHBsdWdpbiBmcm9tIE1EQyBvbiBhIHRhYmxlLlxuXHQgKiBJdCdzIGZpcmVkIHdoZW4gbmV3IGVycm9yIG1lc3NhZ2VzIGFyZSBzZW50IGZyb20gdGhlIGJhY2tlbmQgdG8gdXBkYXRlIHJvdyBoaWdobGlnaHRpbmcuXG5cdCAqIEBwYXJhbSBldnQgRXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EYXRhU3RhdGVDaGFuZ2UoZXZ0OiBEYXRhU3RhdGVJbmRpY2F0b3IkRGF0YVN0YXRlQ2hhbmdlRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBkYXRhU3RhdGVJbmRpY2F0b3IgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgZmlsdGVyZWRNZXNzYWdlcyA9IGV2dC5nZXRQYXJhbWV0ZXIoXCJmaWx0ZXJlZE1lc3NhZ2VzXCIpIGFzIE1lc3NhZ2VbXTtcblx0XHRpZiAoZmlsdGVyZWRNZXNzYWdlcykge1xuXHRcdFx0Y29uc3QgaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcyA9IGZpbHRlcmVkTWVzc2FnZXNcblx0XHRcdFx0Lm1hcCgobXNnKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGVjaG5pY2FsRGV0YWlscyA9IChtc2cuZ2V0VGVjaG5pY2FsRGV0YWlscygpIHx8IHt9KSBhcyB7XG5cdFx0XHRcdFx0XHR0YWJsZUlkPzogc3RyaW5nO1xuXHRcdFx0XHRcdFx0ZW1wdHlSb3dNZXNzYWdlPzogYm9vbGVhbjtcblx0XHRcdFx0XHRcdG1pc3NpbmdDb2x1bW4/OiBzdHJpbmc7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRyZXR1cm4gdGVjaG5pY2FsRGV0YWlscy5lbXB0eVJvd01lc3NhZ2UgPT09IHRydWUgJiYgdGVjaG5pY2FsRGV0YWlscy5taXNzaW5nQ29sdW1uO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZmlsdGVyKChoaWRkZW5Qcm9wZXJ0eSkgPT4gISFoaWRkZW5Qcm9wZXJ0eSk7XG5cdFx0XHRpZiAoaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVN0cmlwRXJyb3IgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcblx0XHRcdFx0XHRoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHRcdFx0PyBcIk1fTUVTU0FHRVNUUklQX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5cIlxuXHRcdFx0XHRcdFx0OiBcIk1fTUVTU0FHRVNUUklQX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5fUExVUkFMXCIsXG5cdFx0XHRcdFx0W2hpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMuam9pbihcIiwgXCIpXVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRkYXRhU3RhdGVJbmRpY2F0b3Iuc2hvd01lc3NhZ2UobWVzc2FnZVN0cmlwRXJyb3IsIFwiRXJyb3JcIik7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gZGF0YVN0YXRlSW5kaWNhdG9yLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcImZpbHRlcmVkTWVzc2FnZXNcIiwgZmlsdGVyZWRNZXNzYWdlcywgZGF0YVN0YXRlSW5kaWNhdG9yLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgQ29udGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVzdW1lQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiLCBmYWxzZSk7XG5cdFx0aWYgKChiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgJiYgIXRoaXMuZ2V0RGF0YUluaXRpYWxpemVkKCkpIHx8IHRoaXMuZ2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIikpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIiwgZmFsc2UpO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnJlYmluZCgpO1xuXHRcdH1cblx0fVxuXG5cdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzKG9GaWx0ZXJDb250cm9sOiBDb250cm9sKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQ29udHJvbCBhcyBGaWx0ZXJCYXIsIG9UYWJsZSk7XG5cdH1cblxuXHRzdXNwZW5kQmluZGluZygpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiLCB0cnVlKTtcblx0fVxuXG5cdGludmFsaWRhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJkYXRhSW5pdGlhbGl6ZWRcIiwgZmFsc2UpO1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIiwgZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGNyZWF0aW9uIHJvdy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3QgZmFzdENyZWF0aW9uUm93ID0gdGFibGUuZ2V0Q3JlYXRpb25Sb3coKTtcblxuXHRcdGlmIChmYXN0Q3JlYXRpb25Sb3cgJiYgIWZhc3RDcmVhdGlvblJvdy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRjb25zdCB0YWJsZUJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHRhYmxlQmluZGluZy5nZXRDb250ZXh0KCk7XG5cblx0XHRcdGlmIChiaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0XHRUYWJsZUhlbHBlci5lbmFibGVGYXN0Q3JlYXRpb25Sb3coXG5cdFx0XHRcdFx0ZmFzdENyZWF0aW9uUm93LFxuXHRcdFx0XHRcdHRhYmxlQmluZGluZy5nZXRQYXRoKCksXG5cdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0YmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIHRoZSBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHJldHVybiB0aGlzLl9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uTWFzc0VkaXRCdXR0b25QcmVzc2VkKHVpNUV2ZW50OiBVSTVFdmVudCwgZm9yQ29udGV4dE1lbnU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG1hc3NFZGl0SGVscGVyID0gbmV3IE1hc3NFZGl0RGlhbG9nSGVscGVyKHtcblx0XHRcdHRhYmxlOiB0aGlzLmNvbnRlbnQsXG5cdFx0XHRvbkNvbnRleHRNZW51OiBmb3JDb250ZXh0TWVudSxcblx0XHRcdG9uQ2xvc2U6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXREaWFsb2dIZWxwZXIobWFzc0VkaXRIZWxwZXIpO1xuXHRcdG1hc3NFZGl0SGVscGVyLm9wZW4oKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvblNlbGVjdGlvbkNoYW5nZWQodWk1ZXZlbnQ6IFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgVGFibGVSdW50aW1lLnNldENvbnRleHRzKHVpNWV2ZW50KTtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB7IC4uLnVpNWV2ZW50LmdldFBhcmFtZXRlcnMoKSwgc2VsZWN0ZWRDb250ZXh0OiB0aGlzLmdldFNlbGVjdGVkQ29udGV4dHMoKSB9KTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFjdGlvblByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+LFxuXHRcdHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRhY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0bW9kZWw6IE9EYXRhTW9kZWw7XG5cdFx0XHRub3RBcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0XHRjb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0YXBwbGljYWJsZUNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRlbnRpdHlTZXROYW1lOiBzdHJpbmc7XG5cdFx0fVxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRwYXJhbWV0ZXJzLm1vZGVsID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCBsYWJlbEV4cHJlc3Npb24gPSByZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKTtcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24obGFiZWxFeHByZXNzaW9uKSAmJiAobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJpMThuXCIgfHwgbGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJAaTE4blwiKSkge1xuXHRcdFx0Ly9yZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKVxuXHRcdFx0cGFyYW1ldGVycy5sYWJlbCA9XG5cdFx0XHRcdChvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TW9kZWwobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSkgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UHJvcGVydHkobGFiZWxFeHByZXNzaW9uLnBhdGgpID8/XG5cdFx0XHRcdHBhcmFtZXRlcnMubGFiZWw7XG5cdFx0fVxuXHRcdGxldCBleGVjdXRlQWN0aW9uID0gdHJ1ZTtcblx0XHRpZiAocGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgJiYgcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gSWYgd2UgaGF2ZSBub24gYXBwbGljYWJsZSBjb250ZXh0cywgd2UgbmVlZCB0byBvcGVuIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlciBpZiBoZSB3YW50cyB0byBjb250aW51ZVxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMocGFyYW1ldGVycy5tb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGg8RW50aXR5VHlwZT4odGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lKS50YXJnZXQhO1xuXHRcdFx0Y29uc3QgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nID0gbmV3IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nKHtcblx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZSxcblx0XHRcdFx0bm90QXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLm5vdEFwcGxpY2FibGVDb250ZXh0cyxcblx0XHRcdFx0dGl0bGU6IHBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IGdldFJlc291cmNlTW9kZWwodGhpcyksXG5cdFx0XHRcdGVudGl0eVNldDogcGFyYW1ldGVycy5lbnRpdHlTZXROYW1lLFxuXHRcdFx0XHRhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuXHRcdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IHBhcmFtZXRlcnMuYXBwbGljYWJsZUNvbnRleHRzXG5cdFx0XHR9KTtcblx0XHRcdHBhcmFtZXRlcnMuY29udGV4dHMgPSBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0cztcblx0XHRcdGV4ZWN1dGVBY3Rpb24gPSBhd2FpdCBteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2cub3Blbih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKGV4ZWN1dGVBY3Rpb24pIHtcblx0XHRcdC8vIERpcmVjdCBleGVjdXRpb24gb2YgdGhlIGFjdGlvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHBhZ2VDb250cm9sbGVyLmVkaXRGbG93Lmludm9rZUFjdGlvbihhY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50OiBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIGludGVybmFsIHRhYmxlIGRlZmluaXRpb24gZm9yIGV4dGVybmFsIHVzYWdlIGluIHRoZSBkZWxlZ2F0ZS5cblx0ICogQHJldHVybnMgVGhlIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1hc3NFZGl0RGlhbG9nSGVscGVyXG5cdCAqL1xuXHRzZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdERpYWxvZ0hlbHBlcj86IE1hc3NFZGl0RGlhbG9nSGVscGVyKTogdm9pZCB7XG5cdFx0dGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlciA9IG1hc3NFZGl0RGlhbG9nSGVscGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cG9zZSB0aGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLCBpZiBhbnlcblx0ICovXG5cdGdldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBjb25uZWN0IHRoZSBmaWx0ZXIgdG8gdGhlIHRhYmxlQVBJIGlmIHJlcXVpcmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXG5cdHVwZGF0ZUZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhclJlZklkID0gdGhpcy5nZXRGaWx0ZXJCYXIoKTtcblx0XHRpZiAodGFibGUgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGUuZ2V0RmlsdGVyPy4oKSAhPT0gZmlsdGVyQmFyUmVmSWQpIHtcblx0XHRcdHRoaXMuX3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3RlbmVycyBvZiB0aGUgZmlsdGVyQmFyLlxuXHQgKi9cblx0ZGV0YWNoRmlsdGVyQmFyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdHRhYmxlPy5zZXRGaWx0ZXIoXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbnRyb2xcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdGdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vICdmaWx0ZXJCYXInIHByb3BlcnR5IG9mIG1hY3JvczpUYWJsZShwYXNzZWQgYXMgY3VzdG9tRGF0YSkgbWlnaHQgYmVcblx0XHQvLyAxLiBBIGxvY2FsSWQgd3J0IFZpZXcoRlBNIGV4cGxvcmVyIGV4YW1wbGUpLlxuXHRcdC8vIDIuIEFic29sdXRlIElkKHRoaXMgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gb2xkZXIgdmVyc2lvbnMpLlxuXHRcdC8vIDMuIEEgbG9jYWxJZCB3cnQgRnJhZ21lbnRJZCh3aGVuIGFuIFhNTENvbXBvc2l0ZSBvciBGcmFnbWVudCBpcyBpbmRlcGVuZGVudGx5IHByb2Nlc3NlZCkgaW5zdGVhZCBvZiBWaWV3SWQuXG5cdFx0Ly8gICAgJ2ZpbHRlckJhcicgd2FzIHN1cHBvcnRlZCBlYXJsaWVyIGFzIGFuICdhc3NvY2lhdGlvbicgdG8gdGhlICdtZGM6VGFibGUnIGNvbnRyb2wgaW5zaWRlICdtYWNyb3M6VGFibGUnIGluIHByaW9yIHZlcnNpb25zLlxuXHRcdC8vICAgIEluIG5ld2VyIHZlcnNpb25zICdmaWx0ZXJCYXInIGlzIHVzZWQgbGlrZSBhbiBhc3NvY2lhdGlvbiB0byAnbWFjcm9zOlRhYmxlQVBJJy5cblx0XHQvLyAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIElkIGlzIHJlbGF0aXZlIHRvICdtYWNyb3M6VGFibGVBUEknLlxuXHRcdC8vICAgIFRoaXMgc2NlbmFyaW8gaGFwcGVucyBpbiBjYXNlIG9mIEZpbHRlckJhciBhbmQgVGFibGUgaW4gYSBjdXN0b20gc2VjdGlvbnMgaW4gT1Agb2YgRkVWNC5cblxuXHRcdGNvbnN0IHRhYmxlQVBJSWQgPSB0aGlzPy5nZXRJZCgpO1xuXHRcdGNvbnN0IHRhYmxlQVBJTG9jYWxJZCA9IHRoaXMuZGF0YShcInRhYmxlQVBJTG9jYWxJZFwiKTtcblx0XHRjb25zdCBwb3RlbnRpYWxmaWx0ZXJCYXJJZCA9XG5cdFx0XHR0YWJsZUFQSUxvY2FsSWQgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGVBUElJZCAmJiB0YWJsZUFQSUlkLnJlcGxhY2UobmV3IFJlZ0V4cCh0YWJsZUFQSUxvY2FsSWQgKyBcIiRcIiksIGZpbHRlckJhclJlZklkKTsgLy8gM1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8XG5cdFx0XHRVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlckJhclJlZklkKSB8fFxuXHRcdFx0VUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChwb3RlbnRpYWxmaWx0ZXJCYXJJZClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpbHRlciBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZmlsdGVyQmFyLlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyUmVmSWQgSWQgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdF9zZXRGaWx0ZXJCYXIoZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5nZXRGaWx0ZXJCYXJDb250cm9sKGZpbHRlckJhclJlZklkKTtcblxuXHRcdGlmIChmaWx0ZXJCYXIpIHtcblx0XHRcdGlmIChmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckFQST4oXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5nZXRJZCgpfS1jb250ZW50YCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckJCVjQ+KFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyXCIpICYmXG5cdFx0XHRcdGZpbHRlckJhcj8uY29udGVudD8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5jb250ZW50LmdldElkKCl9LWNvbnRlbnRgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGZpbHRlckJhci5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpIHx8XG5cdFx0XHRcdGZpbHRlckJhci5pc0E8dHlwZW9mIEJhc2ljU2VhcmNoPihcInNhcC5mZS5tYWNyb3MudGFibGUuQmFzaWNTZWFyY2hcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0YWJsZS5zZXRGaWx0ZXIoZmlsdGVyQmFyLmdldElkKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIGhhbmRsZUNyZWF0ZUFjdGl2YXRlKGFjdGl2YXRlRXZlbnQ6IFVJNUV2ZW50PHsgY29udGV4dDogQ29udGV4dCB9LCBPRGF0YUxpc3RCaW5kaW5nPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRhd2FpdCB0aGlzLl9oYW5kbGVDcmVhdGVBY3RpdmF0ZShhY3RpdmF0ZUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZHJhZ2dlZCBlbGVtZW50IGVudGVycyBhIHRhYmxlIHJvdy5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EcmFnRW50ZXJEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8eyBiaW5kaW5nQ29udGV4dDogQ29udGV4dDsgZHJhZ1NvdXJjZTogQ29udGV4dDsgZHJvcFBvc2l0aW9uOiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgXCJPblwiIH0sIERyYWdEcm9wSW5mbz5cblx0KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRHJhZ0VudGVyRG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0YXJ0cyB0aGUgZHJhZyBvZiB0aGUgZG9jdW1lbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRHJhZ1N0YXJ0RG9jdW1lbnQodWk1RXZlbnQ6IFVJNUV2ZW50PHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQgfSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25EcmFnU3RhcnREb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogRHJvcHMgdGhlIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICogQHJldHVybnMgVGhlIFByb21pc2Vcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkRyb3BEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8e1xuXHRcdFx0YmluZGluZ0NvbnRleHQ6IENvbnRleHQ7XG5cdFx0XHRkcmFnU291cmNlOiBDb250ZXh0O1xuXHRcdFx0ZHJvcFBvc2l0aW9uOiBzdHJpbmc7XG5cdFx0fT5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGF3YWl0IHRoaXMuX29uRHJvcERvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkNvbGxhcHNlRXhwYW5kTm9kZSh1aTVFdmVudDogVUk1RXZlbnQsIGV4cGFuZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAodWk1RXZlbnQuZ2V0U291cmNlKCkuZ2V0TWV0YWRhdGEoKS5pc0EoXCJzYXAubS5NZW51SXRlbVwiKSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Db2xsYXBzZUV4cGFuZE5vZGUodWk1RXZlbnQsIGV4cGFuZCk7XG5cdH1cblxuXHQvKipcblx0ICogSW50ZXJuYWwgbWV0aG9kIHRvIG1vdmUgYSByb3cgdXAgb3IgZG93biBpbiBhIFRyZWUgdGFibGUuXG5cdCAqIEBwYXJhbSB1aTVFdmVudFxuXHQgKiBAcGFyYW0gbW92ZVVwIFRydWUgZm9yIG1vdmUgdXAsIGZhbHNlIGZvciBtb3ZlIGRvd25cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Nb3ZlVXBEb3duKHVpNUV2ZW50OiBVSTVFdmVudCwgbW92ZVVwOiBib29sZWFuLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Nb3ZlVXBEb3duKHVpNUV2ZW50LCBtb3ZlVXAsIGZvckNvbnRleHRNZW51KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGZyb20gdGhlIHRhYmxlLiBUaGlzIGZ1bmN0aW9uIGNvbnNpZGVycyBvbmx5IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBhcHBsaWVkIGF0IHRoZSBjb250cm9sIGxldmVsLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudCgpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuZ2V0U2VsZWN0aW9uVmFyaWFudCh0aGlzLmdldENvbnRlbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gYXBwbHkgdG8gdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIFNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudChzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2UpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCh0aGlzLmdldENvbnRlbnQoKSwgc2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIF9jcmVhdGVDb250ZW50VjJNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBwcmVwcm9jZXNzb3JDb250ZXh0ID0gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ7XG5cdFx0aWYgKG93bmVyICYmIHByZXByb2Nlc3NvckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5tZXRhUGF0aCkhO1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXG5cdFx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLm9yaWdpbmFsVGFibGVEZWZpbml0aW9uKTtcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBbXTsgLy8gQXMgd2UgaGF2ZSBhIG5ldyB0YWJsZSBkZWZpbml0aW9uLCB3ZSBjbGVhbiB0aGUgY2FjaGVkIHByb3BlcnR5SW5mb3MgdG8gcmVjcmVhdGUgdGhlbVxuXG5cdFx0XHRjb25zdCBjb252ZXJ0ZWRNZXRhZGF0YSA9IGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpO1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IGNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzXG5cdFx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0dGhpcy5jb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdGNvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgaGFuZGxlclByb3ZpZGVyID0gbmV3IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIodGhpcywgeyBjb2xsZWN0aW9uRW50aXR5LCBtZXRhTW9kZWwgfSk7XG5cblx0XHRcdGNvbnN0IGZyYWdtZW50ID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoXG5cdFx0XHRcdHBhcnNlWE1MU3RyaW5nKFxuXHRcdFx0XHRcdHhtbGA8cm9vdFxuXHRcdFx0eG1sbnM9XCJzYXAubVwiXG5cdFx0XHR4bWxuczptZGM9XCJzYXAudWkubWRjXCJcblx0XHRcdHhtbG5zOnBsdWdpbnM9XCJzYXAubS5wbHVnaW5zXCJcblx0XHRcdHhtbG5zOm1kY1RhYmxlPVwic2FwLnVpLm1kYy50YWJsZVwiXG5cdFx0XHR4bWxuczptYWNyb1RhYmxlPVwic2FwLmZlLm1hY3Jvcy50YWJsZVwiXG5cdFx0XHR4bWxuczptZGNhdD1cInNhcC51aS5tZGMuYWN0aW9udG9vbGJhclwiXG5cdFx0XHR4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcIlxuXHRcdFx0eG1sbnM6Y29udHJvbD1cInNhcC5mZS5jb3JlLmNvbnRyb2xzXCJcblx0XHRcdHhtbG5zOmR0PVwic2FwLnVpLmR0XCJcblx0XHRcdHhtbG5zOmZsPVwic2FwLnVpLmZsXCJcblx0XHRcdHhtbG5zOnZhcmlhbnQ9XCJzYXAudWkuZmwudmFyaWFudHNcIlxuXHRcdFx0eG1sbnM6cDEzbj1cInNhcC51aS5tZGMucDEzblwiXG5cdFx0XHR4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiPiR7anN4LnJlbmRlckFzWE1MKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIE1kY1RhYmxlVGVtcGxhdGUuZ2V0TURDVGFibGVUZW1wbGF0ZSh0aGlzLCB7XG5cdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHByZXByb2Nlc3NvckNvbnRleHQuZ2V0Q29udmVydGVkTWV0YWRhdGEoKSxcblx0XHRcdFx0XHRtZXRhTW9kZWwsXG5cdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdGFwcENvbXBvbmVudDogb3duZXIuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdFx0fSk7XG5cdFx0XHR9KX08L3Jvb3Q+YCxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdClbMF0sXG5cdFx0XHRcdHsgbW9kZWxzOiB7fSB9LFxuXHRcdFx0XHRwcmVwcm9jZXNzb3JDb250ZXh0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKGZyYWdtZW50LmZpcnN0RWxlbWVudENoaWxkKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgb2xkIE1EQyB0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIEZpbHRlckJhciBsaXN0ZW5lcnNcblx0XHRcdFx0dGhpcy5kZXRhY2hGaWx0ZXJCYXIoKTtcblxuXHRcdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblx0XHRcdFx0Y29uc3QgY29udGVudCA9IChhd2FpdCBGcmFnbWVudC5sb2FkKHtcblx0XHRcdFx0XHRkZWZpbml0aW9uOiBmcmFnbWVudC5maXJzdEVsZW1lbnRDaGlsZCxcblx0XHRcdFx0XHRjb250cm9sbGVyOiBvd25lci5nZXRSb290Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiBvd25lci5nZXRSb290Q29udHJvbCgpXG5cdFx0XHRcdH0pKSBhcyBUYWJsZTtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblxuXHRcdFx0XHR0aGlzLnVwZGF0ZUZpbHRlckJhcigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHVua25vd24sIGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHByb3BlcnR5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBbXCJpZ25vcmVkRmllbGRzXCIsIFwibWV0YVBhdGhcIl0uaW5jbHVkZXMocHJvcGVydHlLZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlLCBiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBkYXRhIG1vZGVsIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgZGF0YSBtb2RlbCBwYXRoIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdC5cblx0ICovXG5cblx0Z2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0YU1vZGVsQ29udmVyc2lvbiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0YWJsZS5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRpZiAoIW1ldGFNb2RlbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlQYXRoID0gdGFibGUuZGF0YShcIm1ldGFQYXRoXCIpO1xuXHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gdGhpcy5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkuZmluZCgocHJvcGVydHlJbmZvKSA9PiBwcm9wZXJ0eUluZm8ubmFtZSA9PT0gcHJvcGVydHlOYW1lKVxuXHRcdFx0Py5hbm5vdGF0aW9uUGF0aDtcblx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSBtZXRhTW9kZWwuZ2V0Q29udGV4dCh0YXJnZXRNZXRhUGF0aCEpO1xuXHRcdGNvbnN0IGVudGl0eVNldCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KGVudGl0eVBhdGgpO1xuXHRcdGNvbnN0IGNvbnZlcnRlZHRhcmdldE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0TWV0YU1vZGVsQ29udGV4dCh0YXJnZXRPYmplY3QpIGFzXG5cdFx0XHR8IERhdGFGaWVsZEFic3RyYWN0VHlwZXNcblx0XHRcdHwgRGF0YVBvaW50VHlwZVR5cGVzO1xuXHRcdGxldCBkYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHk+KFxuXHRcdFx0dGFyZ2V0T2JqZWN0LFxuXHRcdFx0ZW50aXR5U2V0XG5cdFx0KTtcblx0XHRkYXRhTW9kZWxQYXRoID1cblx0XHRcdEZpZWxkVGVtcGxhdGluZy5nZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUoXG5cdFx0XHRcdGRhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzPlxuXHRcdFx0KSB8fCBkYXRhTW9kZWxQYXRoO1xuXHRcdHJldHVybiB7IGRhdGFNb2RlbFBhdGg6IGRhdGFNb2RlbFBhdGgsIGNvbnZlcnRlZHRhcmdldE9iamVjdDogY29udmVydGVkdGFyZ2V0T2JqZWN0IH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBiaW5kaW5nIGNvbnRleHQgZm9yIHRoZSBnaXZlbiBNb2RlQXNFeHByZXNzaW9uLlxuXHQgKiBAcGFyYW0gTW9kZUFzRXhwcmVzc2lvblxuXHQgKiBAcGFyYW0gcm93Q29udGV4dFxuXHQgKiBAcmV0dXJuc1xuXHQgKi9cblxuXHRjcmVhdGVBbnlDb250cm9sKE1vZGVBc0V4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCByb3dDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkKTogdHlwZW9mIEFueSB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBhbnlPYmplY3QgPSBuZXcgQW55KHsgYW55OiBNb2RlQXNFeHByZXNzaW9uIH0pO1xuXHRcdGFueU9iamVjdC5zZXRNb2RlbChyb3dDb250ZXh0Py5nZXRNb2RlbCgpKTtcblx0XHRhbnlPYmplY3Quc2V0TW9kZWwodGFibGUuZ2V0TW9kZWwoXCJ1aVwiKSwgXCJ1aVwiKTtcblx0XHRyZXR1cm4gYW55T2JqZWN0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZWRpdCBtb2RlIG9mIGEgUHJvcGVydHkuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSByb3dDb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSByb3cgY29udGFpbmluZyB0aGUgcHJvcGVydHlcblx0ICogQHJldHVybnMgVGhlIGVkaXQgbW9kZSBvZiB0aGUgZmllbGRcblx0ICovXG5cblx0Z2V0UHJvcGVydHlFZGl0TW9kZShwcm9wZXJ0eU5hbWU6IHN0cmluZywgcm93Q29udGV4dDogQ29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGFueU9iamVjdDogdHlwZW9mIEFueSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0pIHtcblx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWUpPy5kYXRhTW9kZWxQYXRoO1xuXHRcdFx0Y29uc3QgY29udmVydGVkdGFyZ2V0T2JqZWN0ID0gdGhpcy5nZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lKT8uY29udmVydGVkdGFyZ2V0T2JqZWN0O1xuXHRcdFx0aWYgKGRhdGFNb2RlbFBhdGggJiYgY29udmVydGVkdGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5Rm9yRmllbGRDb250cm9sID0gKGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdCBhcyB1bmtub3duIGFzIERhdGFGaWVsZFR5cGVzKT8uVmFsdWVcblx0XHRcdFx0XHQ/IChkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhRmllbGRUeXBlcykuVmFsdWVcblx0XHRcdFx0XHQ6IGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0XHRcdFx0Y29uc3QgZWRpdE1vZGVBc0V4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRVSUZvcm1hdHRlcnMuZ2V0RWRpdE1vZGUocHJvcGVydHlGb3JGaWVsZENvbnRyb2wsIGRhdGFNb2RlbFBhdGgsIGZhbHNlLCB0cnVlLCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFueU9iamVjdCA9IHRoaXMuY3JlYXRlQW55Q29udHJvbChlZGl0TW9kZUFzRXhwcmVzc2lvbiwgcm93Q29udGV4dCk7XG5cdFx0XHRcdHRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0gPSBhbnlPYmplY3Q7XG5cdFx0XHRcdGFueU9iamVjdC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTsgLy8gd2UgbmVlZCB0byBzZXQgdGhlIGJpbmRpbmcgY29udGV4dCB0byBudWxsIG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIGFkZERlcGVuZGVudCB3aWxsIHNldCBpdCB0byB0aGUgY29udGV4dCBvZiB0aGUgdGFibGVcblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQoYW55T2JqZWN0KTsgLy8gdG8gZGVzdHJveSBpdCB3aGVuIHRoZSB0YWJsZUFQSSBpcyBkZXN0cm95ZWRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YW55T2JqZWN0ID0gdGhpcy5wcm9wZXJ0eUVkaXRNb2RlQ2FjaGVbcHJvcGVydHlOYW1lXTtcblx0XHR9XG5cdFx0YW55T2JqZWN0Py5zZXRCaW5kaW5nQ29udGV4dChyb3dDb250ZXh0KTtcblx0XHRjb25zdCBlZGl0TW9kZSA9IGFueU9iamVjdD8uZ2V0QW55KCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGFueU9iamVjdD8uc2V0QmluZGluZ0NvbnRleHQobnVsbCk7XG5cdFx0cmV0dXJuIGVkaXRNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3cgdGhlIGNvbHVtbnMgd2l0aCB0aGUgZ2l2ZW4gY29sdW1uIGtleXMgYnkgc2V0dGluZyB0aGVpciBhdmFpbGFiaWxpdHkgdG8gRGVmYXVsdC5cblx0ICogQHBhcmFtIGNvbHVtbktleXMgVGhlIGtleXMgZm9yIHRoZSBjb2x1bW5zIHRvIHNob3dcblx0ICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuXHQgKiBAcHVibGljXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTI0LjBcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICovXG5cdGFzeW5jIHNob3dDb2x1bW5zKGNvbHVtbktleXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Zm9yIChjb25zdCBjb2x1bW5LZXkgb2YgY29sdW1uS2V5cykge1xuXHRcdFx0dGhpcy5tb2RpZnlEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbihjb2x1bW5LZXksIHRydWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhpZGUgdGhlIGNvbHVtbnMgd2l0aCB0aGUgZ2l2ZW4gY29sdW1uIGtleXMgYnkgc2V0dGluZyB0aGVpciBhdmFpbGFiaWxpdHkgdG8gRGVmYXVsdC5cblx0ICogQHBhcmFtIGNvbHVtbktleXMgVGhlIGtleXMgZm9yIHRoZSBjb2x1bW5zIHRvIGhpZGVcblx0ICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuXHQgKiBAcHVibGljXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTI0LjBcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICovXG5cdGFzeW5jIGhpZGVDb2x1bW5zKGNvbHVtbktleXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Zm9yIChjb25zdCBjb2x1bW5LZXkgb2YgY29sdW1uS2V5cykge1xuXHRcdFx0dGhpcy5tb2RpZnlEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbihjb2x1bW5LZXksIGZhbHNlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gaWdub3JlZEZpZWxkcyBUaGUgZmllbGRzIHRvIGlnbm9yZVxuXHQgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhpcyBpbiBvcmRlciB0byBhbGxvdyBtZXRob2QgY2hhaW5pbmdcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRJZ25vcmVkRmllbGRzKGlnbm9yZWRGaWVsZHM6IHN0cmluZyk6IHRoaXMge1xuXHRcdHJldHVybiB0aGlzLnNldFByb3BlcnR5KFwiaWdub3JlZEZpZWxkc1wiLCBpZ25vcmVkRmllbGRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgaWdub3JlZEZpZWxkcyBwcm9wZXJ0eVxuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldElnbm9yZWRGaWVsZHMoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShcImlnbm9yZWRGaWVsZHNcIikgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udHJvbCBzdGF0ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gY29udHJvbCBzdGF0ZSBrZXkuXG5cdCAqIEBwYXJhbSBjb250cm9sU3RhdGUgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIC0gVGhlIGZ1bGwgc3RhdGUgb2YgdGhlIGNvbnRyb2wgYWxvbmcgd2l0aCB0aGUgaW5pdGlhbCBzdGF0ZSBpZiBhdmFpbGFibGUuXG5cdCAqL1xuXHRnZXRDb250cm9sU3RhdGUoY29udHJvbFN0YXRlOiBDb250cm9sU3RhdGUpOiBDb250cm9sU3RhdGUge1xuXHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gdGhpcy5pbml0aWFsQ29udHJvbFN0YXRlO1xuXHRcdGlmIChjb250cm9sU3RhdGUpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGZ1bGxTdGF0ZTogY29udHJvbFN0YXRlIGFzIG9iamVjdCxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiBpbml0aWFsQ29udHJvbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRyb2xTdGF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBrZXkgdG8gYmUgdXNlZCBmb3IgZ2l2ZW4gY29udHJvbC5cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIGdldCBzdGF0ZSBrZXkgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3Igc3RvcmluZyB0aGUgY29udHJvbHMgc3RhdGVcblx0ICovXG5cdGdldFN0YXRlS2V5KG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzLmNvbnRlbnQpPy5nZXRMb2NhbElkKG9Db250cm9sLmdldElkKCkpIHx8IG9Db250cm9sLmdldElkKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdGFibGUgZGVmaW5pdGlvbiB3aXRoIGlnbm9yZWRGaWVsZHMgYW5kIGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucy5cblx0ICogQHBhcmFtIGlnbm9yZWRGaWVsZHNcblx0ICogQHBhcmFtIGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uc1xuXHQgKiBAcGFyYW0gdGFibGVEZWZpbml0aW9uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KFxuXHRcdGlnbm9yZWRGaWVsZHM6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0XHRkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnM6IER5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uW10sXG5cdFx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb25cblx0KTogdm9pZCB7XG5cdFx0Q29sdW1uTWFuYWdlbWVudC51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eVN0YXRpYyhpZ25vcmVkRmllbGRzLCBkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnMsIHRhYmxlRGVmaW5pdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgTURDIHRhYmxlLlxuXHQgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIGZvcndhcmRpbmcgYWdncmVnYXRpb24gdG8gZ2V0IHRoZSB0YXJnZXQgb2YgdGhlIGFnZ3JlZ2F0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcmV0dXJucyBUaGUgbWRjIHRhYmxlXG5cdCAqL1xuXHRnZXRNRENUYWJsZSgpOiBNRENUYWJsZSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgdGhlIE1EQyBzdGF0ZSB1dGlsIHdoZW4gdGhlIHN0YXRlIGZvciB0aGlzIGNvbnRyb2wncyBjaGlsZCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxscyB0aGUgYXN5bmNDYWxsIGZ1bmN0aW9uIG9ubHkgaWYgdGhlIGxvY2tOYW1lIGlzIG5vdCBhbHJlYWR5IGxvY2tlZC5cblx0ICogQHBhcmFtIGFzeW5jQ2FsbFxuXHQgKiBAcGFyYW0gbG9ja05hbWVcblx0ICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuXHQgKi9cblx0YXN5bmMgYXZvaWRQYXJhbGxlbENhbGxzKGFzeW5jQ2FsbDogRnVuY3Rpb24sIGxvY2tOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodGhpcy5sb2NrW2xvY2tOYW1lXSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmxvY2tbbG9ja05hbWVdID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgYXN5bmNDYWxsKCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHR0aGlzLmxvY2tbbG9ja05hbWVdID0gZmFsc2U7XG5cdFx0fVxuXHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSBmYWxzZTtcblx0fVxuXG5cdGRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdC8vIFdlIHJlbGVhc2UgaG9sZCBvbiBtZXNzYWdlSGFuZGxlciBieSB0aGUgY29udHJvbCBpZiB0aGVyZSBpcyBvbmUuXG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcihmYWxzZSk/Lm1lc3NhZ2VIYW5kbGVyPy5yZWxlYXNlSG9sZEJ5Q29udHJvbCh0aGlzKTtcblx0XHRzdXBlci5kZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdH1cblxuXHRwcml2YXRlIGZ1bGxTY3JlZW5EaWFsb2c/OiBEaWFsb2c7IC8vIFRoZSBkaWFsb2cgdXNlZCB0byBkaXNwbGF5IHRoZSB0YWJsZSBpbiBmdWxsIHNjcmVlbiBtb2RlXG5cblx0c2V0RnVsbFNjcmVlbkRpYWxvZyhkaWFsb2c6IERpYWxvZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZyA9IGRpYWxvZztcblx0fVxuXG5cdHByaXZhdGUgZW5oYW5jZWRQcm9wZXJ0eUluZm9zOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHRwcml2YXRlIHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdID0gW107XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEBwYXJhbSBlbmhhbmNlZFByb3BlcnR5SW5mb3Ncblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoZW5oYW5jZWRQcm9wZXJ0eUluZm9zOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcyA9IGVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmZXRjaGVkIHByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGUgY29udGFpbmluZyBpbnRlcm5hbCBwcm9wZXJ0aWVzLlxuXHQgKiBAcmV0dXJucyBUaGUgUHJvcGVydHlJbmZvIGVuaGFuY2VkIHdpdGggdGhlIFByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTogRW5oYW5jZWRGRVByb3BlcnR5SW5mb1tdIHtcblx0XHRyZXR1cm4gdGhpcy5lbmhhbmNlZFByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgTURDIGV4cGVjdGVkIHByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGUgY29udGFpbmluZyBpbnRlcm5hbCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm9cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldFByb3BlcnR5SW5mb3MoKTogUHJvcGVydHlJbmZvW10ge1xuXHRcdGNvbnN0IHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBlbmhhbmNlZFByb3BlcnR5SW5mbyBvZiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcyBhcyBQcm9wZXJ0eUluZm9bXSkge1xuXHRcdFx0bGV0IHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRrZXk6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmtleSxcblx0XHRcdFx0bGFiZWw6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmxhYmVsLFxuXHRcdFx0XHR2aXNpYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby52aXNpYmxlLFxuXHRcdFx0XHRleHBvcnRTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXhwb3J0U2V0dGluZ3MsXG5cdFx0XHRcdGNsaXBib2FyZFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jbGlwYm9hcmRTZXR0aW5ncyxcblx0XHRcdFx0dmlzdWFsU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc3VhbFNldHRpbmdzLFxuXHRcdFx0XHR0b29sdGlwOiBlbmhhbmNlZFByb3BlcnR5SW5mby50b29sdGlwLFxuXHRcdFx0XHRpc0tleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uaXNLZXlcblx0XHRcdH07XG5cblx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvczogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucHJvcGVydHlJbmZvc1xuXHRcdFx0XHR9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IGV4dGVuc2lvbjogUHJvcGVydHlJbmZvW1wiZXh0ZW5zaW9uXCJdO1xuXHRcdFx0XHRpZiAoZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uKSB7XG5cdFx0XHRcdFx0ZXh0ZW5zaW9uID0ge1xuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlHcm91cGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUdyb3VwYWJsZSxcblx0XHRcdFx0XHRcdHRlY2huaWNhbGx5QWdncmVnYXRhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24udGVjaG5pY2FsbHlBZ2dyZWdhdGFibGUsXG5cdFx0XHRcdFx0XHRjdXN0b21BZ2dyZWdhdGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi5jdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRcdFx0XHRhZGRpdGlvbmFsUHJvcGVydGllczogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRleHRlbnNpb24gPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZXh0ZW5zaW9uKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdFx0Li4ucHJvcGVydHlJbmZvLFxuXHRcdFx0XHRcdHBhdGg6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnBhdGgsXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9uczogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubWF4Q29uZGl0aW9ucyxcblx0XHRcdFx0XHRmb3JtYXRPcHRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5mb3JtYXRPcHRpb25zLFxuXHRcdFx0XHRcdGNvbnN0cmFpbnRzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jb25zdHJhaW50cyxcblx0XHRcdFx0XHRncm91cDogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXAsXG5cdFx0XHRcdFx0Z3JvdXBMYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXBMYWJlbCxcblx0XHRcdFx0XHRjYXNlU2Vuc2l0aXZlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jYXNlU2Vuc2l0aXZlLFxuXHRcdFx0XHRcdGZpbHRlcmFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZpbHRlcmFibGUsXG5cdFx0XHRcdFx0c29ydGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnNvcnRhYmxlLFxuXHRcdFx0XHRcdGdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXBhYmxlLFxuXHRcdFx0XHRcdGRhdGFUeXBlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5kYXRhVHlwZSxcblx0XHRcdFx0XHRhZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHR1bml0OiBlbmhhbmNlZFByb3BlcnR5SW5mby51bml0LFxuXHRcdFx0XHRcdHRleHQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRleHQsXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRwcm9wZXJ0eUluZm9zLnB1c2goXG5cdFx0XHRcdE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhwcm9wZXJ0eUluZm8pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpIGFzIFByb3BlcnR5SW5mb1xuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHRzZXRDYWNoZWRQcm9wZXJ0eUluZm9zKHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdKTogdm9pZCB7XG5cdFx0dGhpcy5wcm9wZXJ0eUluZm9zID0gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdGdldENhY2hlZFByb3BlcnR5SW5mb3MoKTogUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLnByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGF0aCBmb3IgdGhlIHRhYmxlIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBwYXRoXG5cdCAqL1xuXHRnZXRSb3dDb2xsZWN0aW9uUGF0aCgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2xsZXIuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb2xsZWN0aW9uQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKGNvbGxlY3Rpb25Db250ZXh0ISwgY29udGV4dFBhdGgpO1xuXHRcdHJldHVybiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGRhdGFNb2RlbFBhdGgpIHx8IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYmluZGluZyBpbmZvIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbGlzdCBiaW5kaW5nIGZvciB0aGUgTURDIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgdGFibGUgYmluZGluZyBpbmZvXG5cdCAqL1xuXHRnZXRUYWJsZVRlbXBsYXRlQmluZGluZ0luZm8oKTogQ29sbGVjdGlvbkJpbmRpbmdJbmZvIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpITtcblx0XHRjb25zdCBwYXRoID0gdGhpcy5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpO1xuXHRcdGNvbnN0IHJvd0JpbmRpbmdJbmZvOiBDb2xsZWN0aW9uQmluZGluZ0luZm8gPSB7XG5cdFx0XHRzdXNwZW5kZWQ6IGZhbHNlLFxuXHRcdFx0cGF0aCxcblx0XHRcdHBhcmFtZXRlcnM6IHtcblx0XHRcdFx0JGNvdW50OiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5lbmFibGUkc2VsZWN0KSB7XG5cdFx0XHQvLyBEb24ndCBhZGQgJHNlbGVjdCBwYXJhbWV0ZXIgaW4gY2FzZSBvZiBhbiBhbmFseXRpY2FsIHF1ZXJ5LCB0aGlzIGlzbid0IHN1cHBvcnRlZCBieSB0aGUgbW9kZWxcblx0XHRcdGNvbnN0IHNlbGVjdCA9IE9iamVjdC5rZXlzKHRoaXMudGFibGVEZWZpbml0aW9uLnJlcXVlc3RBdExlYXN0KS5qb2luKFwiLFwiKTtcblx0XHRcdGlmIChzZWxlY3QpIHtcblx0XHRcdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJHNlbGVjdCA9IHNlbGVjdDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uZW5hYmxlJCRnZXRLZWVwQWxpdmVDb250ZXh0KSB7XG5cdFx0XHQvLyB3ZSBsYXRlciBlbnN1cmUgaW4gdGhlIGRlbGVnYXRlIG9ubHkgb25lIGxpc3QgYmluZGluZyBmb3IgYSBnaXZlbiB0YXJnZXRDb2xsZWN0aW9uUGF0aCBoYXMgdGhlIGZsYWcgJCRnZXRLZWVwQWxpdmVDb250ZXh0XG5cdFx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJGdldEtlZXBBbGl2ZUNvbnRleHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIENsZWFycyB0aGUgc2VsZWN0aW9uIGFmdGVyIGEgc2VhcmNoL2ZpbHRlclxuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkY2xlYXJTZWxlY3Rpb25PbkZpbHRlciA9IHRydWU7XG5cblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJGdyb3VwSWQgPSBcIiRhdXRvLldvcmtlcnNcIjtcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJHVwZGF0ZUdyb3VwSWQgPSBcIiRhdXRvXCI7XG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRvd25SZXF1ZXN0ID0gdHJ1ZTtcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJHBhdGNoV2l0aG91dFNpZGVFZmZlY3RzID0gdHJ1ZTtcblxuXHRcdC8vIEV2ZW50IGhhbmRsZXJzXG5cdFx0Y29uc3QgZWRpdEZsb3dFeHRlbnNpb24gPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdGNvbnN0IGV2ZW50SGFuZGxlcnM6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiA9IHt9O1xuXHRcdGV2ZW50SGFuZGxlcnMucGF0Y2hDb21wbGV0ZWQgPSB0aGlzLm9uSW50ZXJuYWxQYXRjaENvbXBsZXRlZC5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuZGF0YVJlY2VpdmVkID0gdGhpcy5vbkludGVybmFsRGF0YVJlY2VpdmVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5kYXRhUmVxdWVzdGVkID0gdGhpcy5vbkludGVybmFsRGF0YVJlcXVlc3RlZC5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY2hhbmdlID0gdGhpcy5vbkxpc3RCaW5kaW5nQ2hhbmdlLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jcmVhdGVBY3RpdmF0ZSA9IHRoaXMuaGFuZGxlQ3JlYXRlQWN0aXZhdGUuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNyZWF0ZVNlbnQgPSBlZGl0Rmxvd0V4dGVuc2lvbi5oYW5kbGVDcmVhdGVTZW50LmJpbmQoZWRpdEZsb3dFeHRlbnNpb24pO1xuXHRcdGV2ZW50SGFuZGxlcnMucGF0Y2hTZW50ID0gdGhpcy5vbkludGVybmFsUGF0Y2hTZW50LmJpbmQodGhpcyk7XG5cblx0XHRyb3dCaW5kaW5nSW5mby5ldmVudHMgPSBldmVudEhhbmRsZXJzO1xuXG5cdFx0cmV0dXJuIHJvd0JpbmRpbmdJbmZvO1xuXHR9XG5cblx0cHJvdGVjdGVkIHN0YXRpYyBhZGRTZXR0aW5nKHRhcmdldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0YXJnZXRba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgbWFuaWZlc3QtZnJpZW5kbHkgc2V0dGluZ3MgZnJvbSB0YWJsZUFQSSBwcm9wZXJ0aWVzLlxuXHQgKiBAcmV0dXJucyBTZXR0aW5nc1xuXHQgKi9cblx0Z2V0U2V0dGluZ3NGb3JNYW5pZmVzdCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRXhwb3J0XCIsIHRoaXMuZW5hYmxlRXhwb3J0KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0UmVxdWVzdFNpemVcIiwgdGhpcy5leHBvcnRSZXF1ZXN0U2l6ZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydEZpbGVOYW1lXCIsIHRoaXMuZXhwb3J0RmlsZU5hbWUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRTaGVldE5hbWVcIiwgdGhpcy5leHBvcnRTaGVldE5hbWUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJmcm96ZW5Db2x1bW5Db3VudFwiLCB0aGlzLmZyb3plbkNvbHVtbkNvdW50KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvbHVtbkZyZWV6ZVwiLCB0aGlzLmRpc2FibGVDb2x1bW5GcmVlemUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRNb2RlXCIsIHRoaXMucm93Q291bnRNb2RlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRcIiwgdGhpcy5yb3dDb3VudCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb3B5VG9DbGlwYm9hcmRcIiwgdGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2Nyb2xsVGhyZXNob2xkXCIsIHRoaXMuc2Nyb2xsVGhyZXNob2xkKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicG9waW5MYXlvdXRcIiwgdGhpcy5wb3BpbkxheW91dCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbk1vZGVcIiwgdGhpcy5zZWxlY3Rpb25Nb2RlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcIiwgdGhpcy5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMuaWdub3JlZEZpZWxkcyk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblxuXHRcdGlmICh0aGlzLmNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Y29uc3QgY3JlYXRpb25Nb2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwibmFtZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5uYW1lKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0ZUF0RW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGVcIiwgdGhpcy5jcmVhdGlvbk1vZGUuaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJjdXN0b21GcmFnbWVudFwiLCB0aGlzLm1hc3NFZGl0LmN1c3RvbUNvbnRlbnQpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJmcm9tSW5saW5lXCIsIHRydWUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQudmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuaWdub3JlZEZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIiwgdGhpcy5tYXNzRWRpdC5vcGVyYXRpb25Hcm91cGluZ01vZGUpO1xuXHRcdFx0dGFibGVTZXR0aW5nc1tcImVuYWJsZU1hc3NFZGl0XCJdID0gZW5hYmxlTWFzc0VkaXQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24/LmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IGFuYWx5dGljYWxDb25maWd1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsIHtcblx0XHRcdFx0cGF0aHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5zaG93Q291bnRzXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGFibGVTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kIGFuIGFjdGlvbiBmcm9tIGl0cyBrZXkuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgVGhlIGFjdGlvbiBpZiBpdCBjYW4gYmUgZm91bmQgKG9yIHVuZGVmaW5lZClcblx0ICovXG5cdGZpbmRTbG90QWN0aW9uRnJvbUtleShrZXk6IHN0cmluZyk6IEFjdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHJlc3VsdDogQWN0aW9uIHwgdW5kZWZpbmVkO1xuXG5cdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zID8/IFtdKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGFjdGlvbi5pc0E8QWN0aW9uR3JvdXA+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiKSB8fFxuXHRcdFx0XHRhY3Rpb24uaXNBPEFjdGlvbkdyb3VwT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmVzdWx0ID8/PSBhY3Rpb24uYWN0aW9ucy5maW5kKChhKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGEuaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSAmJiBhLmtleSA9PT0ga2V5O1xuXHRcdFx0XHR9KSBhcyBBY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpICYmIGFjdGlvbi5rZXkgPT09IGtleSkge1xuXHRcdFx0XHRyZXN1bHQgPSBhY3Rpb247XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0Z2V0RnVsbE1ldGFQYXRoKCk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMubWV0YVBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcblx0XHRcdHJldHVybiB0aGlzLm1ldGFQYXRoO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZXh0UGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLmNvbnRleHRQYXRofSR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0vJHt0aGlzLm1ldGFQYXRofWA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb250ZW50KGZvcmNlQ3JlYXRpb24gPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAoIW93bmVyKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA/Pz0gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IGZ1bGxNZXRhUGF0aCA9IHRoaXMuZ2V0RnVsbE1ldGFQYXRoKCk7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQgfHwgZm9yY2VDcmVhdGlvbikge1xuXHRcdFx0dGhpcy5kZXRhY2hGaWx0ZXJCYXIoKTtcblx0XHRcdHRoaXMuY29udGVudD8uZGVzdHJveSgpO1xuXG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChmdWxsTWV0YVBhdGgpITtcblxuXHRcdFx0dGhpcy50YWJsZURlZmluaXRpb24gPSBjcmVhdGVUYWJsZURlZmluaXRpb24odGhpcyk7XG5cdFx0XHR0aGlzLnVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk7XG5cblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbilcblx0XHRcdFx0LnRhcmdldCBhcyBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gKGNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSA/PyAoY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHRcdFx0dGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lID0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lO1xuXG5cdFx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0aGlzLCB7IG1ldGFNb2RlbCwgY29sbGVjdGlvbkVudGl0eSB9LCB0aGlzKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlTURDVGFibGUoe1xuXHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGhDb250ZXh0LFxuXHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLFxuXHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdG1ldGFNb2RlbFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXMudXBkYXRlRmlsdGVyQmFyKCk7XG5cdFx0dGhpcy5zZXR1cE9wdGltaXN0aWNCYXRjaCgpO1xuXHRcdHRoaXMuc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpO1xuXHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8uc2V0TWV0YVBhdGgoZnVsbE1ldGFQYXRoKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlTURDVGFibGUocGFyYW1ldGVyczogTWRjVGFibGVUZW1wbGF0ZS5UYWJsZVRlbXBsYXRpbmdQYXJhbWV0ZXJzKTogTURDVGFibGUge1xuXHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk6IHZvaWQge1xuXHRcdC8vIElEIGZvciB0aGUgaW50ZXJuYWwgTURDIHRhYmxlXG5cdFx0aWYgKE1hbmFnZWRPYmplY3RNZXRhZGF0YS5pc0dlbmVyYXRlZElkKHRoaXMuZ2V0SWQoKSkpIHtcblx0XHRcdHRoaXMuY29udGVudElkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gYCR7dGhpcy5nZXRJZCgpfS1jb250ZW50YDtcblx0XHR9XG5cblx0XHQvLyBCYXNpYyBzZWFyY2ggZmllbGQgaWYgbm8gZmlsdGVyIGJhciBpcyBwcm92aWRlZFxuXHRcdGlmICh0aGlzLnVzZUJhc2ljU2VhcmNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIElmIG5vIGZpbHRlcmJhciBpcyBwcm92aWRlZCwgdXNlIHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0XHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXJCYXIgPSBnZW5lcmF0ZShbdGhpcy5jb250ZW50SWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgXCJCYXNpY1NlYXJjaFwiXSk7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlYWQtb25seSBtb2RlXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5yZWFkT25seSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHQodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5kaXNwbGF5TW9kZSA9PT0gdHJ1ZSB8fCB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJlYWRPbmx5ID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5yZWFkT25seSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gRW5hYmxlIGVtcHR5IHJvd3Ncblx0XHRpZiAodGhpcy5lbXB0eVJvd3NFbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0XHR0aGlzLmNyZWF0aW9uTW9kZT8ubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChlbmFibGVkICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZCAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbXB0eVJvd3NFbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldE5vRGF0YU1lc3NhZ2VNb2RlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbW9kZSA9IHRoaXMubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5tb2RlRm9yTm9EYXRhTWVzc2FnZSA/PyBcImlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvXCI7XG5cdFx0cmV0dXJuIG1vZGUgPT09IFwidGV4dFwiID8gXCJ0ZXh0XCIgOiBtb2RlLnNwbGl0KFwiLVwiKVsxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSByb3cgYmluZGluZyBvZiB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0Q291bnQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb3dCaW5kaW5nKCk/LmdldENvdW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVBUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7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LENBQUFseEIsT0FBQSxDQUFBZ0csU0FBQSxvQkFBQXpHLE1BQUEsR0FBQW1WLE1BQUEsQ0FBQTZjLHdCQUFBLENBQUF2eEIsT0FBQSxDQUFBZ0csU0FBQSxvQkFBQWhHLE9BQUEsQ0FBQWdHLFNBQUEsR0FBQWtyQix5QkFBQSxDQUFBbHhCLE9BQUEsQ0FBQWdHLFNBQUEseUJBQUF4RyxPQUFBLEdBQUFrVixNQUFBLENBQUE2Yyx3QkFBQSxDQUFBdnhCLE9BQUEsQ0FBQWdHLFNBQUEseUJBQUFoRyxPQUFBLENBQUFnRyxTQUFBLEdBQUFrckIseUJBQUEsQ0FBQWx4QixPQUFBLENBQUFnRyxTQUFBLDJCQUFBdkcsT0FBQSxHQUFBaVYsTUFBQSxDQUFBNmMsd0JBQUEsQ0FBQXZ4QixPQUFBLENBQUFnRyxTQUFBLDJCQUFBaEcsT0FBQSxDQUFBZ0csU0FBQSxHQUFBa3JCLHlCQUFBLENBQUFseEIsT0FBQSxDQUFBZ0csU0FBQSwwQkFBQXRHLE9BQUEsR0FBQWdWLE1BQUEsQ0FBQTZjLHdCQUFBLENBQUF2eEIsT0FBQSxDQUFBZ0csU0FBQSwwQkFBQWhHLE9BQUEsQ0FBQWdHLFNBQUEsR0FBQWtyQix5QkFBQSxDQUFBbHhCLE9BQUEsQ0FBQWdHLFNBQUEsMEJBQUFyRyxPQUFBLEdBQUErVSxNQUFBLENBQUE2Yyx3QkFBQSxDQUFBdnhCLE9BQUEsQ0FBQWdHLFNBQUEsMEJBQUFoRyxPQUFBLENBQUFnRyxTQUFBLEdBQUFrckIseUJBQUEsQ0FBQWx4QixPQUFBLENBQUFnRyxTQUFBLHFCQUFBcEcsT0FBQSxHQUFBOFUsTUFBQSxDQUFBNmMsd0JBQUEsQ0FBQXZ4QixPQUFBLENBQUFnRyxTQUFBLHFCQUFBaEcsT0FBQSxDQUFBZ0csU0FBQSxHQUFBa3JCLHlCQUFBLENBQUFseEIsT0FBQSxDQUFBZ0csU0FBQSwyQkFBQW5HLE9BQUEsR0FBQTZVLE1BQUEsQ0FBQTZjLHdCQUFBLENBQUF2eEIsT0FBQSxDQUFBZ0csU0FBQSwyQkFBQWhHLE9BQUEsQ0FBQWdHLFNBQUEsR0FBQWtyQix5QkFBQSxDQUFBbHhCLE9BQUEsQ0FBQWdHLFNBQUEsbUJBQUFsRyxPQUFBLEdBQUE0VSxNQUFBLENBQUE2Yyx3QkFBQSxDQUFBdnhCLE9BQUEsQ0FBQWdHLFNBQUEsbUJBQUFoRyxPQUFBLENBQUFnRyxTQUFBLEdBQUFoRyxPQUFBLE1BQUFELE1BQUEsS0FBQUEsTUFBQSxLQUFBQSxNQUFBLEtBQUFBLE1BQUEsS0FBQUEsTUFBQSxLQUFBQSxNQUFBLEtBQUFBLE1BQUEsS0FBQUEsTUFBQSxLQUFBQSxNQUFBO0VBQUEsT0FnakUvRDFJLFFBQVE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
2389
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiZGVmYXVsdFZhbHVlIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwiX2RlYzQ5IiwiX2RlYzUwIiwiX2RlYzUxIiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiX2RlYzY0IiwiX2RlYzY1IiwiX2RlYzY2IiwiX2RlYzY3IiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjgiLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY5IiwiX2RlYzcwIiwiX2RlYzcxIiwiX2RlYzcyIiwiZXZlbnQiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJfZGVjNzciLCJfZGVjNzgiLCJfZGVjNzkiLCJfZGVjODAiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2RlYzEwNCIsIl9kZWMxMDUiLCJfZGVjMTA2IiwiX2RlYzEwNyIsIl9kZWMxMDgiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX01hY3JvQVBJIiwibVNldHRpbmdzIiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwib3RoZXJzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsInByb3BlcnR5RWRpdE1vZGVDYWNoZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwiX2Rlc2NyaXB0b3IzMSIsIl9kZXNjcmlwdG9yMzIiLCJfZGVzY3JpcHRvcjMzIiwiX2Rlc2NyaXB0b3IzNCIsIl9kZXNjcmlwdG9yMzUiLCJfZGVzY3JpcHRvcjM2IiwiX2Rlc2NyaXB0b3IzNyIsIl9kZXNjcmlwdG9yMzgiLCJfZGVzY3JpcHRvcjM5IiwiX2Rlc2NyaXB0b3I0MCIsIl9kZXNjcmlwdG9yNDEiLCJfZGVzY3JpcHRvcjQyIiwiX2Rlc2NyaXB0b3I0MyIsIl9kZXNjcmlwdG9yNDQiLCJfZGVzY3JpcHRvcjQ1IiwiX2Rlc2NyaXB0b3I0NiIsIl9kZXNjcmlwdG9yNDciLCJfZGVzY3JpcHRvcjQ4IiwiX2Rlc2NyaXB0b3I0OSIsIl9kZXNjcmlwdG9yNTAiLCJfZGVzY3JpcHRvcjUxIiwiX2Rlc2NyaXB0b3I1MiIsIl9kZXNjcmlwdG9yNTMiLCJfZGVzY3JpcHRvcjU0IiwiX2Rlc2NyaXB0b3I1NSIsIl9kZXNjcmlwdG9yNTYiLCJfZGVzY3JpcHRvcjU3IiwiX2Rlc2NyaXB0b3I1OCIsIl9kZXNjcmlwdG9yNTkiLCJfZGVzY3JpcHRvcjYwIiwiX2Rlc2NyaXB0b3I2MSIsIl9kZXNjcmlwdG9yNjIiLCJfZGVzY3JpcHRvcjYzIiwiX2Rlc2NyaXB0b3I2NCIsIl9kZXNjcmlwdG9yNjUiLCJfZGVzY3JpcHRvcjY2IiwiX2Rlc2NyaXB0b3I2NyIsIl9kZXNjcmlwdG9yNjgiLCJfZGVzY3JpcHRvcjY5IiwiaWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwibG9jayIsInN0b3JlZEV2ZW50cyIsIm92ZXJyaWRlUm93UHJlc3MiLCJfZGVzY3JpcHRvcjcwIiwiZW5oYW5jZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvcyIsIm9yaWdpbmFsVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uIiwiZ2V0TGF5b3V0RGF0YSIsInNldExheW91dERhdGEiLCJGbGV4SXRlbURhdGEiLCJtYXhXaWR0aCIsImF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaE1hbmlmZXN0RXZlbnRzIiwiaGFzTGlzdGVuZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRSb3dCaW5kaW5nIiwicGFyYW1ldGVycyIsIm1kY1RhYmxlIiwiY29udGVudCIsImRhdGFNb2RlbCIsImdldE1vZGVsIiwiYmluZExpc3QiLCJnZXRSb3dDb2xsZWN0aW9uUGF0aCIsInVuZGVmaW5lZCIsIlN0YXRlVXRpbCIsImRldGFjaFN0YXRlQ2hhbmdlIiwic3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoU3RhdGVDaGFuZ2UiLCJvRXZlbnQiLCJjb250cm9sIiwiZ2V0UGFyYW1ldGVyIiwiaXNBIiwidGFibGVBUEkiLCJnZXRQYXJlbnQiLCJoYW5kbGVTdGF0ZUNoYW5nZSIsImF0dGFjaElmTm9MaXN0ZW5lcnMiLCJldmVudE5hbWUiLCJtZXRob2RDb25maWciLCJhdHRhY2hFdmVudCIsInVpNUV2ZW50IiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJtb2R1bGVOYW1lIiwibWV0aG9kTmFtZSIsImNhdGNoIiwiZXJyb3IiLCJMb2ciLCJnZXRDdXN0b21GdW5jdGlvbkluZm8iLCJiZWZvcmVSZWJpbmRUYWJsZSIsInJvd1ByZXNzIiwic2VsZWN0aW9uQ2hhbmdlIiwic2V0VXBOb0RhdGFJbmZvcm1hdGlvbiIsInRhYmxlIiwiZ2V0Tm9EYXRhIiwib3duZXIiLCJfZ2V0T3duZXIiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwicmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJzdWZmaXgiLCJtZXRhUGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJnZXRUZXh0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJnZXROb0RhdGFNZXNzYWdlTW9kZSIsInNldEFnZ3JlZ2F0aW9uIiwiVGV4dCIsInRleHQiLCJpbGx1c3RyYXRlZE1lc3NhZ2UiLCJJbGx1c3RyYXRlZE1lc3NhZ2UiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIkJlZm9yZVNlYXJjaCIsImlsbHVzdHJhdGlvblNpemUiLCJlbmFibGVEZWZhdWx0VGl0bGVBbmREZXNjcmlwdGlvbiIsImdldFNlY3Rpb25Db250ZW50Um9sZSIsInNlbmREYXRhVG9Db25zdW1lciIsImNvbnN1bWVyRGF0YSIsInNldEhlYWRlciIsInNldEhlYWRlclN0eWxlIiwiaGVhZGVyU3R5bGUiLCJzZXRIZWFkZXJMZXZlbCIsInRpdGxlTGV2ZWwiLCJpbml0IiwiZ2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50Iiwic2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwidmFsdWUiLCJzZXRCdXN5Iiwic2V0QXR0YWNoRXZlbnRzIiwiZXZlbnRIYW5kbGVycyIsIl9nZXRBUElFeHRlbnNpb24iLCJzb3VyY2UiLCJpbnN0YW5jZU1hcCIsImdldCIsImZpbmQiLCJhcGkiLCJnZXRCaW5kaW5nIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImlzQ29udGV4dE1lbnVBY3RpdmUiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiY2xlYXJTZWxlY3Rpb24iLCJhZGRNZXNzYWdlIiwiZ2V0Q29udGVudCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tDb250ZXh0Q2hhbmdlIiwiZGV0YWNoRXZlbnQiLCJyb3dCaW5kaW5nIiwicmVzb2x2ZWRQYXRoIiwiZ2V0UmVzb2x2ZWRQYXRoIiwiY3JlYXRlTWVzc2FnZSIsInBhdGgiLCJtZXNzYWdlIiwiTWVzc2FnZSIsInRhcmdldCIsInByb2Nlc3NvciIsInBlcnNpc3RlbnQiLCJfZ2V0TWVzc2FnZU1hbmFnZXIiLCJhZGRNZXNzYWdlcyIsImdldElkIiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJfb0V2ZW50IiwiaXNUYWJsZVJlYWRPbmx5IiwiaXNFZGl0YWJsZSIsIkNvbW1vblV0aWxzIiwiZ2V0SXNFZGl0YWJsZSIsInZpZXciLCJnZXRUYXJnZXRWaWV3Iiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImNvbnZlcnRlclR5cGUiLCJyZW1vdmVNZXNzYWdlIiwiaWQiLCJtc2dNYW5hZ2VyIiwibWVzc2FnZXMiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVzdWx0IiwiZSIsInJlbW92ZU1lc3NhZ2VzIiwicmVmcmVzaCIsInRhYmxlUm93QmluZGluZyIsImlzUmVsYXRpdmUiLCJnZXRUYWJsZURlZmluaXRpb24iLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJoZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiZ2V0R3JvdXBJZCIsImdldFF1aWNrRmlsdGVyIiwiZ2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInRhYmxlU3RhdGUiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJzb3J0T3JkZXIiLCJzb3J0ZXJzIiwibWFwIiwic29ydGVyIiwiUHJvcGVydHkiLCJuYW1lIiwicmVwbGFjZSIsIkRlc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiZ3JvdXBMZXZlbHMiLCJncm91cCIsInRhYmxlVml6IiwiQ29udGVudCIsIml0ZW1zIiwiaXRlbSIsIlZhbHVlIiwiVHlwZSIsImFnZ3JlZ2F0aW9ucyIsImhhc0FnZ3JlZ2F0aW9ucyIsImtleSIsIm5ld0tleSIsImluaXRpYWxFeHBhbnNpb25MZXZlbCIsImdldFBheWxvYWQiLCJ0YWJsZVBWIiwiUHJlc2VudGF0aW9uVmFyaWFudENsYXNzIiwic2V0VGFibGVWaXN1YWxpemF0aW9uIiwicHJvcGVydGllcyIsIkdyb3VwQnkiLCJTb3J0T3JkZXIiLCJBZ2dyZWdhdGlvbnMiLCJzZXRQcm9wZXJ0aWVzIiwiRXJyb3IiLCJTdHJpbmciLCJzZXRQcmVzZW50YXRpb25WYXJpYW50IiwiY3VycmVudFN0YXRlUFYiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvTmFtZXMiLCJwcm9wSW5mbyIsIm5ld1RhYmxlU3RhdGUiLCJjb252ZXJ0UFZUb1N0YXRlIiwidGFibGVQcm9wZXJ0aWVzIiwiZ2V0UHJvcGVydGllcyIsInRhYmxlUGF5bG9hZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwiZ2V0VmFyaWFudCIsInNldEN1cnJlbnRWYXJpYW50S2V5IiwidmFyaWFudE1hbmFnZW1lbnQiLCJNZXNzYWdpbmciLCJfZ2V0Um93QmluZGluZyIsIm9UYWJsZSIsImdldENvdW50cyIsIlRhYmxlVXRpbHMiLCJnZXRMaXN0QmluZGluZ0ZvckNvdW50IiwiYmF0Y2hHcm91cElkIiwiZGF0YSIsImFkZGl0aW9uYWxGaWx0ZXJzIiwiZ2V0SGlkZGVuRmlsdGVycyIsInRoZW4iLCJpVmFsdWUiLCJnZXRDb3VudEZvcm1hdHRlZCIsIm9uTGlzdEJpbmRpbmdDaGFuZ2UiLCJmaXJlRXZlbnQiLCJnZXRQYXJhbWV0ZXJzIiwic2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCIsInJlZnJlc2hTZWxlY3RlZENvdW50IiwiVGFibGVSdW50aW1lIiwic2V0Q29udGV4dHNBc3luYyIsIm9uRmllbGRMaXZlQ2hhbmdlIiwiX29uRmllbGRMaXZlQ2hhbmdlIiwib25RdWlja0ZpbHRlclNlbGVjdGlvbkNoYW5nZSIsImZpbHRlckJhcklEIiwiZ2V0RmlsdGVyIiwiZmlsdGVyQmFyIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsInJlYmluZCIsImdldENvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJ1cGRhdGVBcHBTdGF0ZSIsIm9uVGFibGVOYXZpZ2F0ZSIsIm9Db250cm9sbGVyIiwib0NvbnRleHQiLCJtUGFyYW1ldGVycyIsImlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUiLCJmdWxsU2NyZWVuRGlhbG9nIiwiY2xvc2UiLCJuYXZpZ2F0aW9uUGFyYW1ldGVycyIsIk9iamVjdCIsImFzc2lnbiIsInJlYXNvbiIsIk5hdmlnYXRpb25SZWFzb24iLCJSb3dQcmVzcyIsIl9yb3V0aW5nIiwibmF2aWdhdGVGb3J3YXJkVG9Db250ZXh0Iiwib25UYWJsZVJvd1ByZXNzIiwicHJlc3NFdmVudCIsInJvd05hdmlnYXRpb25JbmZvIiwiYW5ub3RhdGlvbiIsInJvdyIsIm5hdmlnYXRpb25JbmZvIiwiY29udHJvbGxlciIsImdldFBhZ2VDb250cm9sbGVyIiwiYmluZGluZ0NvbnRleHQiLCJhdm9pZFBhcmFsbGVsQ2FsbHMiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kIiwibmF2aWdhdGlvblRhcmdldCIsImVkaXRhYmxlIiwiY2hlY2tFZGl0YWJsZSIsImNhbGxFeHRlbnNpb24iLCJ0YXJnZXRQYXRoIiwicmVjcmVhdGVDb250ZXh0Iiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwib25WYXJpYW50U2VsZWN0ZWQiLCJvcmlnaW5hbFNvdXJjZSIsImdldFNvdXJjZSIsIm9uVmFyaWFudFNhdmVkIiwib25Sb3dQcmVzc2VkIiwib25Ob29wIiwiY29udGV4dCIsImVtcHR5Um93IiwiaXNJbmFjdGl2ZSIsImlzVHJhbnNpZW50IiwiYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQiLCJlbmFibGVBbmFseXRpY3MiLCJvblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzIiwiY29udGV4dHMiLCJtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXMiLCJfb25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyIsIm9uT3BlbkluTmV3VGFiUHJlc3MiLCJhbGxDb250ZXh0cyIsIm5hdmlnYWJsZUNvbnRleHRzIiwicHJvbWlzZVRvV2FpdCIsIlByb21pc2VLZWVwZXIiLCJ0ZXh0S2V5IiwiTWVzc2FnZUJveCIsImNvbmZpcm0iLCJnZXRUcmFuc2xhdGVkVGV4dCIsIm9uQ2xvc2UiLCJzaG91bGRQcm9jZWVkIiwicHJvbWlzZSIsImZvckVhY2giLCJ3YXJuaW5nIiwib25JbnRlcm5hbFBhdGNoQ29tcGxldGVkIiwiZXZ0IiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJzZWxlY3RlZENvbnRleHRzIiwiRGVsZXRlSGVscGVyIiwidXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMiLCJtZXNzYWdlSGFuZGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwicmVsZWFzZUhvbGRCeUNvbnRyb2wiLCJvbkludGVybmFsUGF0Y2hTZW50IiwiZWRpdEZsb3dFeHRlbnNpb24iLCJlZGl0RmxvdyIsImhvbGRNZXNzYWdlc0ZvckNvbnRyb2wiLCJoYW5kbGVQYXRjaFNlbnQiLCJpbmxpbmVFZGl0RmxvdyIsImlzSW5saW5lRWRpdFBvc3NpYmxlIiwiaGFuZGxlSW5saW5lRWRpdFBhdGNoU2VudCIsIm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQiLCJpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJjb250ZXh0SWRlbnRpZmllciIsImdldElkZW50aWZpZXJDb2x1bW4iLCJyZXNwb25zZUNvbnRleHRzQXJyYXkiLCJuZXdDb250ZXh0cyIsInB1c2giLCJyZWNvbW1lbmRhdGlvbnMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zIiwic2V0RG93bmxvYWRVcmwiLCJvbkludGVybmFsRGF0YVJlcXVlc3RlZCIsInNldFByb3BlcnR5IiwiZmlsdGVycyIsInF1aWNrRmlsdGVycyIsInNob3dDb3VudHMiLCJzZXRDb3VudHNBc0xvYWRpbmciLCJyZWZyZXNoVW5TZWxlY3RlZENvdW50cyIsIm9uUGFzdGUiLCJmb3JDb250ZXh0TWVudSIsInNldENvbnRleHRNZW51QWN0aXZlIiwicmF3UGFzdGVkRGF0YSIsIm1lbnUiLCJpbnRlcm5hbENvbnRleHQiLCJlbmFibGVQYXN0ZSIsImFjdGlvbiIsInNyY0NvbnRleHRzIiwic3JjQ29udGV4dCIsIm5ld1BhcmVudENvbnRleHQiLCJnZXRQYXRoIiwiYWxsIiwibW92ZSIsInBhcmVudCIsImNvcHkiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JDb3B5QWN0aW9uIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yQ2hhbmdlTmV4dFNpYmxpbmdBY3Rpb24iLCJNZXNzYWdlVG9hc3QiLCJzaG93IiwiZ2V0RW5hYmxlUGFzdGUiLCJjZWxsU2VsZWN0aW9uIiwiZ2V0Q2VsbFNlbGVjdG9yIiwiZ2V0U2VsZWN0aW9uIiwiY29sdW1ucyIsIlBhc3RlSGVscGVyIiwicGFzdGVSYW5nZURhdGEiLCJwYXN0ZURhdGEiLCJvbkN1dCIsIl9vbkNvcHlDdXQiLCJvbkNvcHkiLCJvbkJlZm9yZUV4cG9ydCIsImV4cG9ydEV2ZW50IiwiX29uQmVmb3JlRXhwb3J0IiwiZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyIiwic1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoIiwic1RhYmxlUm93QmluZGluZyIsImdldFRhcmdldHMiLCJvbkRhdGFTdGF0ZUNoYW5nZSIsImRhdGFTdGF0ZUluZGljYXRvciIsImZpbHRlcmVkTWVzc2FnZXMiLCJoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzIiwibXNnIiwidGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJlbXB0eVJvd01lc3NhZ2UiLCJtaXNzaW5nQ29sdW1uIiwiZmlsdGVyIiwiaGlkZGVuUHJvcGVydHkiLCJtZXNzYWdlU3RyaXBFcnJvciIsImpvaW4iLCJzaG93TWVzc2FnZSIsImludGVybmFsTW9kZWwiLCJyZXN1bWVCaW5kaW5nIiwiYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkIiwiZ2V0RGF0YUluaXRpYWxpemVkIiwicmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMiLCJvRmlsdGVyQ29udHJvbCIsIkZpbHRlclV0aWxzIiwiZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMiLCJzdXNwZW5kQmluZGluZyIsImludmFsaWRhdGVDb250ZW50IiwiZmFzdENyZWF0aW9uUm93IiwiZ2V0Q3JlYXRpb25Sb3ciLCJ0YWJsZUJpbmRpbmciLCJnZXRDb250ZXh0IiwiVGFibGVIZWxwZXIiLCJlbmFibGVGYXN0Q3JlYXRpb25Sb3ciLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIl9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIm9uTWFzc0VkaXRCdXR0b25QcmVzc2VkIiwibWFzc0VkaXRIZWxwZXIiLCJNYXNzRWRpdERpYWxvZ0hlbHBlciIsIm9uQ29udGV4dE1lbnUiLCJzZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsIm9wZW4iLCJvblNlbGVjdGlvbkNoYW5nZWQiLCJ1aTVldmVudCIsInNldENvbnRleHRzIiwic2VsZWN0ZWRDb250ZXh0Iiwib25BY3Rpb25QcmVzcyIsInBhZ2VDb250cm9sbGVyIiwiYWN0aW9uTmFtZSIsIm1vZGVsIiwibGFiZWxFeHByZXNzaW9uIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJsYWJlbCIsImlzUGF0aEluTW9kZWxFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwiZXhlY3V0ZUFjdGlvbiIsIm5vdEFwcGxpY2FibGVDb250ZXh0cyIsImNvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydFR5cGVzIiwiZ2V0TWV0YU1vZGVsIiwiZW50aXR5VHlwZSIsInJlc29sdmVQYXRoIiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsIm15VW5hcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsIk5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0TmFtZSIsImFwcGxpY2FibGVDb250ZXh0cyIsImludm9rZUFjdGlvbiIsImluZm8iLCJvbkNvbnRleHRNZW51UHJlc3MiLCJfb25Db250ZXh0TWVudVByZXNzIiwibWFzc0VkaXREaWFsb2dIZWxwZXIiLCJnZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsInVwZGF0ZUZpbHRlckJhciIsImZpbHRlckJhclJlZklkIiwiZ2V0RmlsdGVyQmFyIiwiX3NldEZpbHRlckJhciIsImRldGFjaEZpbHRlckJhciIsInNldEZpbHRlciIsImdldEZpbHRlckJhckNvbnRyb2wiLCJieUlkIiwibGFzdEluZGV4T2YiLCJoYW5kbGVDcmVhdGVBY3RpdmF0ZSIsImFjdGl2YXRlRXZlbnQiLCJfaGFuZGxlQ3JlYXRlQWN0aXZhdGUiLCJvbkRyYWdFbnRlckRvY3VtZW50IiwiX29uRHJhZ0VudGVyRG9jdW1lbnQiLCJvbkRyYWdTdGFydERvY3VtZW50IiwiX29uRHJhZ1N0YXJ0RG9jdW1lbnQiLCJvbkRyb3BEb2N1bWVudCIsIl9vbkRyb3BEb2N1bWVudCIsIm9uQ29sbGFwc2VFeHBhbmROb2RlIiwiZXhwYW5kIiwiZ2V0TWV0YWRhdGEiLCJfb25Db2xsYXBzZUV4cGFuZE5vZGUiLCJvbk1vdmVVcERvd24iLCJtb3ZlVXAiLCJfb25Nb3ZlVXBEb3duIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlSGVscGVyIiwic2V0U2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwic2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCIsIl9jcmVhdGVDb250ZW50VjJNb2RlIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsIm1ldGFNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJkZWVwQ2xvbmUiLCJ1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSIsImlnbm9yZWRGaWVsZHMiLCJjb2xsZWN0aW9uRW50aXR5IiwiY29sbGVjdGlvbiIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaGFuZGxlclByb3ZpZGVyIiwiVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciIsImZyYWdtZW50IiwiWE1MUHJlcHJvY2Vzc29yIiwicHJvY2VzcyIsInBhcnNlWE1MU3RyaW5nIiwieG1sIiwianN4IiwicmVuZGVyQXNYTUwiLCJNZGNUYWJsZVRlbXBsYXRlIiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsImdldENvbnZlcnRlZE1ldGFkYXRhIiwibW9kZWxzIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJkZXN0cm95IiwiRnJhZ21lbnQiLCJsb2FkIiwiZGVmaW5pdGlvbiIsImdldFJvb3RDb250cm9sbGVyIiwiY29udGFpbmluZ1ZpZXciLCJnZXRSb290Q29udHJvbCIsInByb3BlcnR5S2V5IiwicHJvcGVydHlWYWx1ZSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImluY2x1ZGVzIiwiZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0IiwicHJvcGVydHlOYW1lIiwiZW50aXR5UGF0aCIsInRhcmdldE1ldGFQYXRoIiwicHJvcGVydHlJbmZvIiwiYW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb252ZXJ0ZWR0YXJnZXRPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsImRhdGFNb2RlbFBhdGgiLCJGaWVsZFRlbXBsYXRpbmciLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUiLCJjcmVhdGVBbnlDb250cm9sIiwiTW9kZUFzRXhwcmVzc2lvbiIsInJvd0NvbnRleHQiLCJhbnlPYmplY3QiLCJBbnkiLCJhbnkiLCJzZXRNb2RlbCIsImdldFByb3BlcnR5RWRpdE1vZGUiLCJwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCIsImVkaXRNb2RlQXNFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJVSUZvcm1hdHRlcnMiLCJnZXRFZGl0TW9kZSIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiZWRpdE1vZGUiLCJnZXRBbnkiLCJzaG93Q29sdW1ucyIsImNvbHVtbktleXMiLCJjb2x1bW5LZXkiLCJtb2RpZnlEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbiIsImhpZGVDb2x1bW5zIiwic2V0SWdub3JlZEZpZWxkcyIsImdldElnbm9yZWRGaWVsZHMiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJnZXRTdGF0ZUtleSIsIm9Db250cm9sIiwiZ2V0TG9jYWxJZCIsImR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucyIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljIiwiZ2V0TURDVGFibGUiLCJhc3luY0NhbGwiLCJsb2NrTmFtZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsInNldEZ1bGxTY3JlZW5EaWFsb2ciLCJkaWFsb2ciLCJzZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0UHJvcGVydHlJbmZvcyIsImVuaGFuY2VkUHJvcGVydHlJbmZvIiwidmlzaWJsZSIsImV4cG9ydFNldHRpbmdzIiwiY2xpcGJvYXJkU2V0dGluZ3MiLCJ2aXN1YWxTZXR0aW5ncyIsInRvb2x0aXAiLCJpc0tleSIsImV4dGVuc2lvbiIsInRlY2huaWNhbGx5R3JvdXBhYmxlIiwidGVjaG5pY2FsbHlBZ2dyZWdhdGFibGUiLCJjdXN0b21BZ2dyZWdhdGUiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsIl9yZWYiLCJfIiwibWF4Q29uZGl0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJjb25zdHJhaW50cyIsImdyb3VwTGFiZWwiLCJjYXNlU2Vuc2l0aXZlIiwiZmlsdGVyYWJsZSIsInNvcnRhYmxlIiwiZ3JvdXBhYmxlIiwiZGF0YVR5cGUiLCJhZ2dyZWdhdGFibGUiLCJ1bml0IiwiX3JlZjIiLCJzZXRDYWNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0Q2FjaGVkUHJvcGVydHlJbmZvcyIsImNvbGxlY3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJnZXRUYWJsZVRlbXBsYXRlQmluZGluZ0luZm8iLCJyb3dCaW5kaW5nSW5mbyIsInN1c3BlbmRlZCIsIiRjb3VudCIsImVuYWJsZSRzZWxlY3QiLCJzZWxlY3QiLCJrZXlzIiwicmVxdWVzdEF0TGVhc3QiLCIkc2VsZWN0IiwiZW5hYmxlJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyIiwiJCRncm91cElkIiwiJCR1cGRhdGVHcm91cElkIiwiJCRvd25SZXF1ZXN0IiwiJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyIsInBhdGNoQ29tcGxldGVkIiwiYmluZCIsImRhdGFSZWNlaXZlZCIsImRhdGFSZXF1ZXN0ZWQiLCJjaGFuZ2UiLCJjcmVhdGVBY3RpdmF0ZSIsImNyZWF0ZVNlbnQiLCJoYW5kbGVDcmVhdGVTZW50IiwicGF0Y2hTZW50IiwiZXZlbnRzIiwiYWRkU2V0dGluZyIsImdldFNldHRpbmdzRm9yTWFuaWZlc3QiLCJ0YWJsZVNldHRpbmdzIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJleHBvcnRGaWxlTmFtZSIsImV4cG9ydFNoZWV0TmFtZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInBvcGluTGF5b3V0Iiwic2VsZWN0aW9uTW9kZSIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVNlbGVjdEFsbCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGlvbkZpZWxkcyIsImNyZWF0ZUF0RW5kIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImN1c3RvbUNvbnRlbnQiLCJ2aXNpYmxlRmllbGRzIiwib3BlcmF0aW9uR3JvdXBpbmdNb2RlIiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwicGF0aHMiLCJmaW5kU2xvdEFjdGlvbkZyb21LZXkiLCJhY3Rpb25zIiwiYSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjcmVhdGVDb250ZW50IiwiZ2V0RnVsbE1ldGFQYXRoIiwiZW5kc1dpdGgiLCJmb3JjZUNyZWF0aW9uIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsImZ1bGxNZXRhUGF0aCIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZVRhYmxlRGVmaW5pdGlvbiIsInVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uIiwiY3JlYXRlIiwibW9kZSIsImFwcGVuZCIsImNvbnZlcnRlZFR5cGVzIiwidGFyZ2V0VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImNyZWF0ZU1EQ1RhYmxlIiwic2V0dXBPcHRpbWlzdGljQmF0Y2giLCJzZXRNZXRhUGF0aCIsIk1hbmFnZWRPYmplY3RNZXRhZGF0YSIsImlzR2VuZXJhdGVkSWQiLCJjb250ZW50SWQiLCJ1c2VCYXNpY1NlYXJjaCIsImdlbmVyYXRlIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiU3RhbmRhcmRBY3Rpb25LZXlzIiwiQ3JlYXRlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJzcGxpdCIsImdldENvdW50IiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZFR5cGVzLFxuXHREYXRhUG9pbnRUeXBlVHlwZXMsXG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB7XG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiwgWE1MRXZlbnRIb2xkZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIG1peGluLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJUm93QmluZGluZ0ludGVyZmFjZSBmcm9tIFwic2FwL2ZlL2NvcmUvSVJvd0JpbmRpbmdJbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgcGFyc2VYTUxTdHJpbmcsIHhtbCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9Ob3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZ1wiO1xuaW1wb3J0IE5hdmlnYXRpb25SZWFzb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvTmF2aWdhdGlvblJlYXNvblwiO1xuaW1wb3J0IEFueSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQW55XCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvLFxuXHR0eXBlIENyZWF0ZUJlaGF2aW9yLFxuXHR0eXBlIEV4dGVybmFsTWV0aG9kQ29uZmlnLFxuXHR0eXBlIFRhYmxlVHlwZSxcblx0dHlwZSBUYWJsZVZpc3VhbGl6YXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBTdGFuZGFyZEFjdGlvbktleXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvU3RhbmRhcmRBY3Rpb25zXCI7XG5pbXBvcnQgRGVsZXRlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0RlbGV0ZUhlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhc3RlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ05hdmlnYXRpb25QYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1JvdXRpbmdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IHR5cGUgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIsIFNlcmlhbGl6ZWRDb2xsZWN0aW9uQmluZGluZ0luZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db2xsZWN0aW9uQmluZGluZ0luZm9cIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgKiBhcyBGaWVsZFRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJCQlY0IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2xTdGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2luc2lnaHRzL0NvbW1vbkluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQmFzaWNTZWFyY2ggZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQmFzaWNTZWFyY2hcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCAqIGFzIE1kY1RhYmxlVGVtcGxhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHR5cGUgT3ZlcmZsb3dHcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9PdmVyZmxvd0dyb3Vwc1wiO1xuaW1wb3J0IHR5cGUgUXVpY2tGaWx0ZXJTZWxlY3RvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9RdWlja0ZpbHRlclNlbGVjdG9yXCI7XG5pbXBvcnQgVGFibGVDcmVhdGlvbk9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVDcmVhdGlvbk9wdGlvbnNcIjtcbmltcG9ydCBUYWJsZUhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUhlbHBlclwiO1xuaW1wb3J0IFRhYmxlUnVudGltZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZVJ1bnRpbWVcIjtcbmltcG9ydCBUYWJsZVV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0UFZUb1N0YXRlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvYWRhcHRlci9UYWJsZVBWVG9TdGF0ZVwiO1xuaW1wb3J0IE1hc3NFZGl0RGlhbG9nSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL21hc3NFZGl0L01hc3NFZGl0RGlhbG9nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFB2UHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgUHJlc2VudGF0aW9uVmFyaWFudENsYXNzIGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEZsZXhJdGVtRGF0YSBmcm9tIFwic2FwL20vRmxleEl0ZW1EYXRhXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBNZW51IGZyb20gXCJzYXAvbS9NZW51XCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhU3RhdGVJbmRpY2F0b3IkRGF0YVN0YXRlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vcGx1Z2lucy9EYXRhU3RhdGVJbmRpY2F0b3JcIjtcbmltcG9ydCB0eXBlIHsgUGFzdGVQcm92aWRlciRQYXN0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL3BsdWdpbnMvUGFzdGVQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEV2ZW50LCBkZWZhdWx0IGFzIFVJNUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1ldGFkYXRhIGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0TWV0YWRhdGFcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEZyYWdtZW50IGZyb20gXCJzYXAvdWkvY29yZS9GcmFnbWVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBEcmFnRHJvcEluZm8gZnJvbSBcInNhcC91aS9jb3JlL2RuZC9EcmFnRHJvcEluZm9cIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgdHlwZSB7XG5cdGRlZmF1bHQgYXMgTURDVGFibGUsXG5cdE1EQ1RhYmxlUHJvcGVydHlJbmZvIGFzIFByb3BlcnR5SW5mbyxcblx0ZGVmYXVsdCBhcyBUYWJsZSxcblx0VGFibGUkQmVmb3JlRXhwb3J0RXZlbnQsXG5cdFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50LFxuXHRUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFxufSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgVHlwZUNvbmZpZyBmcm9tIFwic2FwL3VpL21kYy9UeXBlQ29uZmlnXCI7XG5pbXBvcnQgdHlwZSB7IEdyb3VwTGV2ZWxzLCBJdGVtcywgU29ydGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgeyB0eXBlIFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL1Jvd0FjdGlvbkl0ZW1cIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi4vbWRjL2FkYXB0ZXIvU3RhdGVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwT3ZlcnJpZGUgZnJvbSBcIi4vQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vQWN0aW9uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFuYWx5dGljYWxDb25maWd1cmF0aW9uIGZyb20gXCIuL0FuYWx5dGljYWxDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW5PdmVycmlkZSBmcm9tIFwiLi9Db2x1bW5PdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgTWFzc0VkaXQgZnJvbSBcIi4vTWFzc0VkaXRcIjtcbmltcG9ydCB0eXBlIFF1aWNrVmFyaWFudFNlbGVjdGlvbiBmcm9tIFwiLi9RdWlja1ZhcmlhbnRTZWxlY3Rpb25cIjtcbmltcG9ydCB7IGNyZWF0ZVRhYmxlRGVmaW5pdGlvbiB9IGZyb20gXCIuL1RhYmxlRGVmaW5pdGlvblwiO1xuaW1wb3J0IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIgZnJvbSBcIi4vVGFibGVFdmVudEhhbmRsZXJQcm92aWRlclwiO1xuaW1wb3J0IENvbHVtbk1hbmFnZW1lbnQgZnJvbSBcIi4vbWl4aW4vQ29sdW1uTWFuYWdlbWVudFwiO1xuaW1wb3J0IENvbnRleHRNZW51SGFuZGxlciBmcm9tIFwiLi9taXhpbi9Db250ZXh0TWVudUhhbmRsZXJcIjtcbmltcG9ydCBFbXB0eVJvd3NIYW5kbGVyIGZyb20gXCIuL21peGluL0VtcHR5Um93c0hhbmRsZXJcIjtcbmltcG9ydCBUYWJsZUFQSVN0YXRlSGFuZGxlciBmcm9tIFwiLi9taXhpbi9UYWJsZUFQSVN0YXRlSGFuZGxlclwiO1xuaW1wb3J0IFRhYmxlRXhwb3J0IGZyb20gXCIuL21peGluL1RhYmxlRXhwb3J0XCI7XG5pbXBvcnQgVGFibGVIaWVyYXJjaHkgZnJvbSBcIi4vbWl4aW4vVGFibGVIaWVyYXJjaHlcIjtcbmltcG9ydCBUYWJsZU9wdGltaXN0aWNCYXRjaCBmcm9tIFwiLi9taXhpbi9UYWJsZU9wdGltaXN0aWNCYXRjaFwiO1xuaW1wb3J0IFRhYmxlU2hhcmluZyBmcm9tIFwiLi9taXhpbi9UYWJsZVNoYXJpbmdcIjtcblxuZXhwb3J0IHR5cGUgRW5oYW5jZWRGRVByb3BlcnR5SW5mbyA9IFByb3BlcnR5SW5mbyAmIHtcblx0bmFtZTogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRyZWxhdGl2ZVBhdGg6IHN0cmluZztcblx0ZGVzY3JpcHRpb25Qcm9wZXJ0eT86IHN0cmluZztcblx0bW9kZT86IERpc3BsYXlNb2RlO1xuXHR2YWx1ZVByb3BlcnR5Pzogc3RyaW5nO1xuXHR0eXBlQ29uZmlnPzogVHlwZUNvbmZpZztcblx0ZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWU/OiBzdHJpbmc7XG5cdGFkZGl0aW9uYWxMYWJlbHM/OiBzdHJpbmdbXTtcblx0dHlwZT86IHN0cmluZztcblx0dGV4dEFycmFuZ2VtZW50Pzoge1xuXHRcdHRleHRQcm9wZXJ0eTogc3RyaW5nO1xuXHRcdG1vZGU6IERpc3BsYXlNb2RlO1xuXHR9O1xufTtcblxudHlwZSBEYXRhTW9kZWxDb252ZXJzaW9uID0ge1xuXHRkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCBQcm9wZXJ0eT47XG5cdGNvbnZlcnRlZHRhcmdldE9iamVjdDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcztcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ29sdW1uUHJvcGVydGllcyA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdHZpc2liaWxpdHk6IGJvb2xlYW47XG59W107XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uID0geyBjb2x1bW5LZXk6IHN0cmluZzsgdmlzaWJsZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlID0ge1xuXHRpbm5lclRhYmxlPzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcblx0XHR9O1xuXHRcdGZ1bGxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0ZmlsdGVyPzogb2JqZWN0O1xuXHRcdH07XG5cdH07XG5cdHF1aWNrRmlsdGVyPzoge1xuXHRcdHNlbGVjdGVkS2V5Pzogc3RyaW5nO1xuXHR9O1xuXHR2YXJpYW50TWFuYWdlbWVudD86IHtcblx0XHR2YXJpYW50SWQ/OiBzdHJpbmcgfCBudWxsO1xuXHR9O1xuXHRzdXBwbGVtZW50YXJ5Q29uZmlnPzogb2JqZWN0O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2sge1xuXHRlbmFibGVPcHRpbWlzdGljQmF0Y2hNb2RlKCk6IHZvaWQ7XG5cdG1ldGFQYXRoOiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRlbXB0eVJvd3NFbmFibGVkOiBib29sZWFuO1xuXHRnZXRDb250ZW50KCk6IFRhYmxlO1xuXHRnZXRUYWJsZURlZmluaXRpb24oKTogVGFibGVWaXN1YWxpemF0aW9uO1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXTtcblx0aXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbjtcblx0Y3JlYXRlQW55Q29udHJvbChNb2RlQXNFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgcm93Q29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCk6IHR5cGVvZiBBbnk7XG5cdGdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IERhdGFNb2RlbENvbnZlcnNpb24gfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBUYWJsZUFQSVxuXHRleHRlbmRzIFRhYmxlQVBJU3RhdGVIYW5kbGVyLFxuXHRcdFRhYmxlRXhwb3J0LFxuXHRcdFRhYmxlT3B0aW1pc3RpY0JhdGNoLFxuXHRcdFRhYmxlSGllcmFyY2h5LFxuXHRcdEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0Q29udGV4dE1lbnVIYW5kbGVyLFxuXHRcdFRhYmxlU2hhcmluZyxcblx0XHRDb2x1bW5NYW5hZ2VtZW50IHtcblx0Ly8gYWdncmVnYXRpb25cblx0Z2V0Q29udGVudCgpOiBNRENUYWJsZTtcblx0Ly8gYXNzb2NpYXRpb25cblx0Z2V0RmlsdGVyQmFyKCk6IHN0cmluZztcblx0Ly8gcHJvcGVydHlcblx0Z2V0RGF0YUluaXRpYWxpemVkKCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50IG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgYW5ub3RhdGlvbiBpcyBleHBlY3RlZCwgYnV0IHRoZSBUYWJsZSBidWlsZGluZyBibG9jayBjYW4gYWxzbyBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gRW50aXR5U2V0LlxuICogPGJyPlxuICogSWYgYSBQcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGhhdmUgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqIDxicj5cbiAqIElmIGEgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBjb250YWluIGEgdmFsaWQgUHJlc2VudGF0aW9uVmFyaWFudCB0aGF0IGFsc28gaGFzIGEgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6VGFibGUgaWQ9XCJNeVRhYmxlXCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIiwgeyByZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiXSB9KVxuQG1peGluKFRhYmxlQVBJU3RhdGVIYW5kbGVyKVxuQG1peGluKFRhYmxlRXhwb3J0KVxuQG1peGluKFRhYmxlT3B0aW1pc3RpY0JhdGNoKVxuQG1peGluKFRhYmxlSGllcmFyY2h5KVxuQG1peGluKEVtcHR5Um93c0hhbmRsZXIpXG5AbWl4aW4oQ29udGV4dE1lbnVIYW5kbGVyKVxuQG1peGluKFRhYmxlU2hhcmluZylcbkBtaXhpbihDb2x1bW5NYW5hZ2VtZW50KVxuY2xhc3MgVGFibGVBUEkgZXh0ZW5kcyBNYWNyb0FQSSBpbXBsZW1lbnRzIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IsIElSb3dCaW5kaW5nSW50ZXJmYWNlLCBJVGFibGVCbG9jayB7XG5cdGNvbnRlbnQhOiBUYWJsZTtcblxuXHRtYXNzRWRpdERpYWxvZ0hlbHBlcjogTWFzc0VkaXREaWFsb2dIZWxwZXIgfCB1bmRlZmluZWQ7XG5cblx0b3JpZ2luYWxUYWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0cHJvcGVydHlFZGl0TW9kZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCB0eXBlb2YgQW55PiA9IHt9O1xuXG5cdGluaXRpYWxDb250cm9sU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cblx0Y29uc3RydWN0b3IobVNldHRpbmdzPzogUHJvcGVydGllc09mPFRhYmxlQVBJPiAmIHsgaWQ/OiBzdHJpbmcgfSwgLi4ub3RoZXJzOiAkQ29udHJvbFNldHRpbmdzW10pIHtcblx0XHRzdXBlcihtU2V0dGluZ3MsIC4uLm90aGVycyk7XG5cdFx0dGhpcy5vcmlnaW5hbFRhYmxlRGVmaW5pdGlvbiA9IHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHRcdGlmICghdGhpcy5nZXRMYXlvdXREYXRhKCkpIHtcblx0XHRcdHRoaXMuc2V0TGF5b3V0RGF0YShuZXcgRmxleEl0ZW1EYXRhKHsgbWF4V2lkdGg6IFwiMTAwJVwiIH0pKTtcblx0XHR9XG5cdFx0dGhpcy5hdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTtcblx0XHR0aGlzLmF0dGFjaE1hbmlmZXN0RXZlbnRzKCk7XG5cdFx0dGhpcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5oYXNMaXN0ZW5lcnMoXCJyb3dQcmVzc1wiKTtcblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5JUm93QmluZGluZ0ludGVyZmFjZVwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9jb3JlX0lSb3dCaW5kaW5nSW50ZXJmYWNlID0gdHJ1ZTtcblxuXHRnZXRSb3dCaW5kaW5nKHBhcmFtZXRlcnM/OiBvYmplY3QpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCBtZGNUYWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBkYXRhTW9kZWwgPSBtZGNUYWJsZS5nZXRNb2RlbCgpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRtZGNUYWJsZS5nZXRSb3dCaW5kaW5nKCkgPz9cblx0XHRcdChkYXRhTW9kZWw/LmJpbmRMaXN0KHRoaXMuZ2V0Um93Q29sbGVjdGlvblBhdGgoKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGFyYW1ldGVycykgYXMgT0RhdGFMaXN0QmluZGluZylcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHR9XG5cblx0c3RhdGVDaGFuZ2VIYW5kbGVyKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdGlmIChjb250cm9sLmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRjb25zdCB0YWJsZUFQSSA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmICh0YWJsZUFQST8uaGFuZGxlU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0dGFibGVBUEkuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoIHRoZSBldmVudCBoYW5kbGVycyBjb21pbmcgZnJvbSB0aGUgbWFuaWZlc3QgZm9yICdyb3dQcmVzcycsICdzZWxlY3Rpb25DaGFuZ2UnIGFuZCAnYmVmb3JlUmViaW5kVGFibGUnLlxuXHQgKiBXZSBpZ25vcmUgdGhlIG1hbmlmZXN0IGhhbmRsZXJzIGlmIHRoZSB0YWJsZSBhbHJlYWR5IGhhcyBldmVudCBoYW5kbGVycyAob3ZlcnJpZGUpLlxuXHQgKi9cblx0cHJpdmF0ZSBhdHRhY2hNYW5pZmVzdEV2ZW50cygpOiB2b2lkIHtcblx0XHRjb25zdCBhdHRhY2hJZk5vTGlzdGVuZXJzID0gKGV2ZW50TmFtZTogc3RyaW5nLCBtZXRob2RDb25maWc6IEV4dGVybmFsTWV0aG9kQ29uZmlnIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzTGlzdGVuZXJzKGV2ZW50TmFtZSkgJiYgbWV0aG9kQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudChldmVudE5hbWUsICh1aTVFdmVudDogVUk1RXZlbnQpID0+IHtcblx0XHRcdFx0XHRGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QobWV0aG9kQ29uZmlnLm1vZHVsZU5hbWUsIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLCB1aTVFdmVudCwgdWk1RXZlbnQpLmNhdGNoKFxuXHRcdFx0XHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRcdFx0XHRgRmFpbGVkIHRvIGNhbGwgJHtldmVudE5hbWV9IGV2ZW50IGhhbmRsZXIgJHttZXRob2RDb25maWcubW9kdWxlTmFtZX0gJHttZXRob2RDb25maWcubWV0aG9kTmFtZX1gLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcImJlZm9yZVJlYmluZFRhYmxlXCIsXG5cdFx0XHRnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmJlZm9yZVJlYmluZFRhYmxlLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbClcblx0XHQpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXCJyb3dQcmVzc1wiLCBnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LnJvd1ByZXNzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbCkpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcInNlbGVjdGlvbkNoYW5nZVwiLFxuXHRcdFx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5zZWxlY3Rpb25DaGFuZ2UsIHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhbiBpbGx1c3RyYXRlZCBtZXNzYWdlIGR1cmluZyB0aGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIHRhYmxlIEFQSS5cblx0ICogVXNlZnVsIGlmIHdlIGhhdmUgYSBidWlsZGluZyBibG9jayBpbiBhIGxpc3QgcmVwb3J0IHdpdGhvdXQgaW5pdGlhbCBsb2FkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBzZXRVcE5vRGF0YUluZm9ybWF0aW9uKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdGlmICghdGFibGUgfHwgdGFibGUuZ2V0Tm9EYXRhKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGxldCBkZXNjcmlwdGlvbjtcblx0XHRsZXQgdGl0bGU7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gZ2V0UmVzb3VyY2VNb2RlbChvd25lcik7XG5cdFx0XHRpZiAocmVzb3VyY2VNb2RlbCkge1xuXHRcdFx0XHRsZXQgc3VmZml4O1xuXHRcdFx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMubWV0YVBhdGg7XG5cdFx0XHRcdGlmIChtZXRhUGF0aCkge1xuXHRcdFx0XHRcdHN1ZmZpeCA9IG1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gbWV0YVBhdGguc3Vic3RyaW5nKDEpIDogbWV0YVBhdGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGl0bGUgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0lMTFVTVFJBVEVEX01FU1NBR0VfVElUTEVfQkVGT1JFU0VBUkNIXCIsIHVuZGVmaW5lZCwgc3VmZml4KTtcblx0XHRcdFx0ZGVzY3JpcHRpb24gPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIiwgdW5kZWZpbmVkLCBzdWZmaXgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUudGVtcGxhdGVzXCIpITtcblx0XHRcdHRpdGxlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfSUxMVVNUUkFURURfTUVTU0FHRV9USVRMRV9CRUZPUkVTRUFSQ0hcIik7XG5cdFx0XHRkZXNjcmlwdGlvbiA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSA9PT0gXCJ0ZXh0XCIpIHtcblx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJub0RhdGFcIiwgbmV3IFRleHQoeyB0ZXh0OiBkZXNjcmlwdGlvbiB9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZSA9IG5ldyBJbGx1c3RyYXRlZE1lc3NhZ2Uoe1xuXHRcdFx0XHR0aXRsZTogdGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcblx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5CZWZvcmVTZWFyY2gsXG5cdFx0XHRcdGlsbHVzdHJhdGlvblNpemU6IHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSxcblx0XHRcdFx0ZW5hYmxlRGVmYXVsdFRpdGxlQW5kRGVzY3JpcHRpb246IGZhbHNlXG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcIm5vRGF0YVwiLCBpbGx1c3RyYXRlZE1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9tYWNyb3NfY29udHJvbHNfc2VjdGlvbl9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRnZXRTZWN0aW9uQ29udGVudFJvbGUoKTogXCJwcm92aWRlclwiIHwgXCJjb25zdW1lclwiIHtcblx0XHRyZXR1cm4gXCJjb25zdW1lclwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZW5kRGF0YVRvQ29uc3VtZXIgbWV0aG9kIHdoaWNoIGlzIGEgcGFydCBvZiB0aGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuXHQgKlxuXHQgKiBXaWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlNlY3Rpb24gY29udHJvbCB3aGVuIHRoZXJlIGlzIGEgVGFibGUgYnVpbGRpbmcgYmxvY2sgcmVuZGVyZWQgd2l0aGluIGEgc2VjdGlvblxuXHQgKiBhbG9uZyB3aXRoIHRoZSBjb25zdW1lckRhdGEgaS5lLiBzZWN0aW9uJ3MgZGF0YSBzdWNoIGFzIHRpdGxlIGFuZCB0aXRsZSBsZXZlbCB3aGljaCBpcyB0aGVuIGFwcGxpZWQgdG8gdGhlIHRhYmxlIHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyBhY2NvcmRpbmdseS5cblx0ICpcblx0ICovXG5cblx0c2VuZERhdGFUb0NvbnN1bWVyKGNvbnN1bWVyRGF0YTogQ29uc3VtZXJEYXRhKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyKGNvbnN1bWVyRGF0YS50aXRsZSk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlclN0eWxlKGNvbnN1bWVyRGF0YS5oZWFkZXJTdHlsZSBhcyBUaXRsZUxldmVsKTtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyTGV2ZWwoY29uc3VtZXJEYXRhLnRpdGxlTGV2ZWwgYXMgVGl0bGVMZXZlbCk7XG5cdFx0fVxuXHR9XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl1cblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHR0YWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZW50SWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRleHBvcnRGaWxlTmFtZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdGZyb3plbkNvbHVtbkNvdW50PzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc2FibGVDb2x1bW5GcmVlemU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiXSB9KVxuXHRyb3dDb3VudE1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRyb3dDb3VudD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0ZT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHNjcm9sbFRocmVzaG9sZD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHRocmVzaG9sZD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJCbG9ja1wiLCBcIkdyaWRMYXJnZVwiLCBcIkdyaWRTbWFsbFwiXSB9KVxuXHRwb3BpbkxheW91dD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkdyaWRUYWJsZVwiLCBcIlJlc3BvbnNpdmVUYWJsZVwiLCBcIkFuYWx5dGljYWxUYWJsZVwiXSB9KVxuXHR0eXBlPzogVGFibGVUeXBlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiTm9uZVwiLCBcIlNpbmdsZVwiLCBcIk11bHRpXCIsIFwiQXV0b1wiLCBcIkZvcmNlTXVsdGlcIiwgXCJGb3JjZVNpbmdsZVwiXSB9KVxuXHRzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGNvbmRlbnNlZFRhYmxlTGF5b3V0PzogYm9vbGVhbjtcblxuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uT3ZlcnJpZGVcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0YWN0aW9ucz86IChBY3Rpb24gfCBBY3Rpb25Hcm91cCB8IEFjdGlvbk92ZXJyaWRlIHwgQWN0aW9uR3JvdXBPdmVycmlkZSlbXTtcblxuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0YWN0aW9uT3ZlcmZsb3dHcm91cHM/OiBPdmVyZmxvd0dyb3VwW107XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0Y29sdW1ucz86IChDb2x1bW4gfCBDb2x1bW5PdmVycmlkZSlbXTtcblxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ3JlYWQtb25seScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZWFkT25seSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICovXG5cdC8vQGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGghOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHNpemUgb2YgdGhlIElsbHVzdHJhdGVkTWVzc2FnZSBpbiB0aGUgdGFibGUsIG9yIHJlbW92ZXMgaXQgY29tcGxldGVseS5cblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TcG90YCBvciBgdGV4dGAuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1NZWRpdW1cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRXh0cmFTbWFsbFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUxhcmdlXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TcG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TbWFsbFwiLFxuXHRcdFx0XCJ0ZXh0XCJcblx0XHRdXG5cdH0pXG5cdG1vZGVGb3JOb0RhdGFNZXNzYWdlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRhdGFJbml0aWFsaXplZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0YmluZGluZ1N1c3BlbmRlZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0b3V0RGF0ZWRCaW5kaW5nITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRpc0FscCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHR2YXJpYW50TWFuYWdlbWVudD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlnbm9yZWRGaWVsZHM/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSlcblx0ZmllbGRNb2RlITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBkZWZhdWx0VmFsdWU6IFRpdGxlTGV2ZWwuQXV0byB9KVxuXHRoZWFkZXJMZXZlbCE6IFRpdGxlTGV2ZWw7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIgfSlcblx0aGVhZGVyU3R5bGU/OiBUaXRsZUxldmVsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0ZXhwb3J0UmVxdWVzdFNpemU/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqICAtIFNvcnQ8YnIvPlxuXHQgKiAgLSBDb2x1bW48YnIvPlxuXHQgKiAgLSBGaWx0ZXI8YnIvPlxuXHQgKiAgLSBHcm91cDxici8+XG5cdCAqPGJyLz5cblx0ICogVGhlIEdyb3VwIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgdG8gYW5hbHl0aWNhbCB0YWJsZXMgYW5kIHJlc3BvbnNpdmUgdGFibGVzLjxici8+XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICpcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aGVhZGVyPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBlbXB0eSByb3dzIGFyZSBlbmFibGVkLiBUaGlzIGFsbG93cyB0byBoYXZlIGR5bmFtaWMgZW5hYmxlbWVudCBvZiB0aGUgZW1wdHkgcm93cyB1c2luZyB0aGUgc2V0dGVyIGZ1bmN0aW9uLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZW1wdHlSb3dzRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGlzQmluZGluZ0luZm86IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0pXG5cdHRhYlRpdGxlITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVDcmVhdGlvbk9wdGlvbnNcIiwgZGVmYXVsdENsYXNzOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB9KVxuXHRjcmVhdGlvbk1vZGU/OiBUYWJsZUNyZWF0aW9uT3B0aW9ucztcblxuXHQvKipcblx0ICogQWdncmVnYXRpb24gdG8gZm9yd2FyZCB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGNvbnRyb2wgdG8gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uSWxsdXN0cmF0ZWRNZXNzYWdlXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5tLlRleHRcIl0sXG5cdFx0Zm9yd2FyZGluZzoge1xuXHRcdFx0Z2V0dGVyOiBcImdldE1EQ1RhYmxlXCIsXG5cdFx0XHRhZ2dyZWdhdGlvbjogXCJub0RhdGFcIlxuXHRcdH1cblx0fSlcblx0bm9EYXRhPzogSWxsdXN0cmF0ZWRNZXNzYWdlO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIlxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbj86IEFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIG9mIHRoZSB0YWJsZS5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFF1aWNrVmFyaWFudFNlbGVjdGlvbjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG1hc3MgZWRpdCBvZiB0aGUgdGFibGUuXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiXG5cdH0pXG5cdG1hc3NFZGl0PzogTWFzc0VkaXQ7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0YWJsZSBpcyBhYm91dCB0byBiZSByZWJvdW5kLiBUaGlzIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICpcblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgb3IgcmVhZDogRmlsdGVycywgU29ydGVycy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byByZWFkIHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkOiBTZWxlY3RzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0YmVmb3JlUmViaW5kVGFibGU/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKi9cblx0QGV2ZW50KClcblx0cm93UHJlc3M/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZWQgYmV0d2VlbiB2aWV3IGluIGFuIEFMUC5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNhdmVkIHRoZSB2YXJpYW50LlxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGEgdmFyaWFudC5cblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgVGFibGUgbGlzdCBiaW5kaW5nIGNoYW5nZXMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRsaXN0QmluZGluZ0NoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdGludGVybmFsRGF0YVJlcXVlc3RlZCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50PjtcblxuXHRwcml2YXRlIGlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgbG9jazogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRzdG9yZWRFdmVudHM6IEV2ZW50SGFuZGxlcltdID0gW107XG5cblx0b3ZlcnJpZGVSb3dQcmVzcyA9IGZhbHNlO1xuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0cmV0dXJuIHN1cGVyLmluaXQodHJ1ZSk7XG5cdH1cblxuXHRnZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaWdub3JlQ29udGV4dENoYW5nZUV2ZW50O1xuXHR9XG5cblx0c2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSB2YWx1ZTtcblx0fVxuXG5cdHNldEJ1c3kodmFsdWU6IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRzdXBlci5zZXRCdXN5KHZhbHVlKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEJ1c3kodmFsdWUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBUYWJsZUFQSS5cblx0ICogQHBhcmFtIGV2ZW50SGFuZGxlcnNcblx0ICovXG5cdHNldEF0dGFjaEV2ZW50cyhldmVudEhhbmRsZXJzOiBFdmVudEhhbmRsZXJbXSk6IHZvaWQge1xuXHRcdHRoaXMuc3RvcmVkRXZlbnRzID0gZXZlbnRIYW5kbGVycztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSByZWxldmFudCB0YWJsZUFQSSBmb3IgYSBVSTUgZXZlbnQuXG5cdCAqIEFuIGV2ZW50IGNhbiBiZSB0cmlnZ2VyZWQgZWl0aGVyIGJ5IHRoZSBpbm5lciBjb250cm9sICh0aGUgdGFibGUpIG9yIHRoZSBPRGF0YSBsaXN0QmluZGluZ1xuXHQgKiBUaGUgZmlyc3QgaW5pdGlhdG9yIGlzIHRoZSB1c3VhbCBvbmUgc28gaXQncyBtYW5hZ2VkIGJ5IHRoZSBNYWNyb0FQSSB3aGVyZWFzXG5cdCAqIHRoZSBzZWNvbmQgb25lIGlzIHNwZWNpZmljIHRvIHRoaXMgQVBJIGFuZCBoYXMgdG8gbWFuYWdlZCBieSB0aGUgVGFibGVBUEkuXG5cdCAqIEBwYXJhbSBzb3VyY2UgVGhlIFVJNSBldmVudCBzb3VyY2Vcblx0ICogQHJldHVybnMgVGhlIFRhYmxlQVBJIG9yIGZhbHNlIGlmIG5vdCBmb3VuZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c3RhdGljIF9nZXRBUElFeHRlbnNpb24oc291cmNlOiBNYW5hZ2VkT2JqZWN0KTogVGFibGVBUEkgfCB1bmRlZmluZWQge1xuXHRcdGxldCB0YWJsZUFQSTogVGFibGVBUEkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHNvdXJjZS5pc0E8T0RhdGFMaXN0QmluZGluZz4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0dGFibGVBUEkgPSAoKHRoaXMgYXMgdW5rbm93biBhcyBYTUxFdmVudEhvbGRlcikuaW5zdGFuY2VNYXA/LmdldCh0aGlzKSBhcyBUYWJsZUFQSVtdKT8uZmluZChcblx0XHRcdFx0KGFwaSkgPT4gYXBpLmNvbnRlbnQ/LmdldFJvd0JpbmRpbmc/LigpID09PSBzb3VyY2UgfHwgYXBpLmNvbnRlbnQ/LmdldEJpbmRpbmcoXCJpdGVtc1wiKSA9PT0gc291cmNlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGFibGVBUEk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBjb250ZXh0cyBmcm9tIHRoZSB0YWJsZSB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlci5cblx0ICogQHJldHVybnMgQ29udGV4dHMgb2YgdGhlIHJvd3Mgc2VsZWN0ZWQgYnkgdGhlIHVzZXJcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0U2VsZWN0ZWRDb250ZXh0cygpOiBDb250ZXh0W10ge1xuXHRcdC8vIFdoZW4gYSBjb250ZXh0IG1lbnUgaXRlbSBoYXMgYmVlbiBwcmVzc2VkLCB0aGUgc2VsZWN0ZWRDb250ZXh0cyBjb3JyZXNwb25kIHRvIHRoZSBpdGVtcyBvbiB3aGljaFxuXHRcdC8vIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbiBzaGFsbCBiZSBhcHBsaWVkLlxuXHRcdHJldHVybiB0aGlzLmlzQ29udGV4dE1lbnVBY3RpdmUoKVxuXHRcdFx0PyB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY29udGV4dG1lbnUvc2VsZWN0ZWRDb250ZXh0c1wiKSA/PyBbXVxuXHRcdFx0OiAodGhpcy5jb250ZW50LmdldFNlbGVjdGVkQ29udGV4dHMoKSBhcyB1bmtub3duIGFzIENvbnRleHRbXSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbGwgY29udGV4dHMgdGhhdCBhcmUgbG9hZGVkIGluIHRoZSB0YWJsZS5cblx0ICpcblx0ICogU2VlIGFsc28gdGhlIHtAbGluayBzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZyNnZXRBbGxDdXJyZW50Q29udGV4dHN9IG1ldGhvZC5cblx0ICogQHJldHVybnMgQWxsIGNvbnRleHRzIG9mIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZywgb3IgdW5kZWZpbmVkIGlmIHRoZSB0YWJsZSBkYXRhIGlzIG5vdCB5ZXQgbG9hZGVkLlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjE0Mi4wXG5cdCAqL1xuXHRnZXRBbGxDdXJyZW50Q29udGV4dHMoKTogQ29udGV4dFtdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRSb3dCaW5kaW5nKCk/LmdldEFsbEN1cnJlbnRDb250ZXh0cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyB0aGUgc2VsZWN0aW9uLlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjE0Mi4wXG5cdCAqL1xuXHRjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LmNsZWFyU2VsZWN0aW9uKCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG1lc3NhZ2UgdG8gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBUaGUgbWVzc2FnZSBhcHBsaWVzIHRvIHRoZSB3aG9sZSB0YWJsZSBhbmQgbm90IHRvIGFuIGluZGl2aWR1YWwgdGFibGUgcm93LlxuXHQgKiBAcGFyYW0gW3BhcmFtZXRlcnNdIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgbWVzc2FnZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy50eXBlIE1lc3NhZ2UgdHlwZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5tZXNzYWdlIE1lc3NhZ2UgdGV4dFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5kZXNjcmlwdGlvbiBNZXNzYWdlIGRlc2NyaXB0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnBlcnNpc3RlbnQgVHJ1ZSBpZiB0aGUgbWVzc2FnZSBpcyBwZXJzaXN0ZW50XG5cdCAqIEByZXR1cm5zIFByb21pc2U8c3RyaW5nPiBUaGUgSUQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgYWRkTWVzc2FnZShwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0aWYgKCF0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpICYmICF0YWJsZS5nZXRSb3dCaW5kaW5nKCkpIHtcblx0XHRcdGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrQ29udGV4dENoYW5nZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0XHRpZiAodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0XHRcdFx0dGFibGUuZGV0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgY2hlY2tDb250ZXh0Q2hhbmdlKTtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRhYmxlLmF0dGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGNoZWNrQ29udGV4dENoYW5nZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgcm93QmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCByZXNvbHZlZFBhdGggPSByb3dCaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIGFzIHN0cmluZztcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVNZXNzYWdlKHRhYmxlLCByZXNvbHZlZFBhdGgsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVNZXNzYWdlKFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHtcblx0XHRcdHRhcmdldDogcGF0aCxcblx0XHRcdHR5cGU6IHBhcmFtZXRlcnMudHlwZSxcblx0XHRcdG1lc3NhZ2U6IHBhcmFtZXRlcnMubWVzc2FnZSxcblx0XHRcdHByb2Nlc3NvcjogdGFibGUuZ2V0TW9kZWwoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0cGVyc2lzdGVudDogcGFyYW1ldGVycy5wZXJzaXN0ZW50XG5cdFx0fSk7XG5cdFx0dGhpcy5fZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyhtZXNzYWdlKTtcblx0XHRyZXR1cm4gbWVzc2FnZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgdGFibGUgc2hvdWxkIHJlcXVlc3QgcmVjb21tZW5kYXRpb25zIGZ1bmN0aW9uLlxuXHQgKiBUaGUgdGFibGUgaW4gdmlldyBzaG91bGQgb25seSByZXF1ZXN0IHJlY29tbWVuZGF0aW9ucyBpZlxuXHQgKiAxLiBUaGUgUGFnZSBpcyBpbiBFZGl0IG1vZGVcblx0ICogMi4gVGFibGUgaXMgbm90IHJlYWQgb25seVxuXHQgKiAzLiBJdCBoYXMgYW5ub3RhdGlvbiBmb3IgQ29tbW9uLlJlY29tbWVuZGVkVmFsdWVzRnVuY3Rpb25cblx0ICogNC4gVmlldyBpcyBub3QgTGlzdFJlcG9ydCwgZm9yIE9QL1N1Yk9QIGFuZCBmb3J3YXJkIHZpZXdzIHJlY29tbWVuZGF0aW9ucyBzaG91bGQgYmUgcmVxdWVzdGVkLlxuXHQgKiBAcGFyYW0gX29FdmVudFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9ucyBuZWVkcyB0byBiZSByZXF1ZXN0ZWRcblx0ICovXG5cdGNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KF9vRXZlbnQ6IFVJNUV2ZW50KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaXNUYWJsZVJlYWRPbmx5ID0gdGhpcy5nZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIpO1xuXHRcdGNvbnN0IGlzRWRpdGFibGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRoaXMpO1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdC8vIHJlcXVlc3QgZm9yIGFjdGlvbiBvbmx5IGlmIHdlIGFyZSBpbiBPUC9TdWJPUCBhbmQgaW4gRWRpdCBtb2RlLCBhbHNvIHRhYmxlIGlzIG5vdCByZWFkT25seVxuXHRcdGlmICghaXNUYWJsZVJlYWRPbmx5ICYmIGlzRWRpdGFibGUgJiYgdmlld0RhdGEuY29udmVydGVyVHlwZSAhPT0gXCJMaXN0UmVwb3J0XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZShpZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbXNnTWFuYWdlciA9IHRoaXMuX2dldE1lc3NhZ2VNYW5hZ2VyKCk7XG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBtc2dNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtZXNzYWdlcy5maW5kKChlOiBNZXNzYWdlKSA9PiBlLmdldElkKCkgPT09IGlkKTtcblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRtc2dNYW5hZ2VyLnJlbW92ZU1lc3NhZ2VzKHJlc3VsdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3RzIGEgcmVmcmVzaCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2goKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGVSb3dCaW5kaW5nID0gdGhpcy5jb250ZW50LmdldFJvd0JpbmRpbmcoKTtcblx0XHRpZiAodGFibGVSb3dCaW5kaW5nICYmICh0YWJsZVJvd0JpbmRpbmcuaXNSZWxhdGl2ZSgpIHx8IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSkge1xuXHRcdFx0Ly8gRm9yIHRyZWUgdGFibGVzLCB0aGUgcmVmcmVzaCBpcyBhbHdheXMgZG9uZSB1c2luZyBzaWRlIGVmZmVjdHMgdG8gcHJlc2VydmUgZXhwYW5zaW9uIHN0YXRlc1xuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuY29udGVudCk7XG5cdFx0XHRjb25zdCBoZWFkZXJDb250ZXh0ID0gdGFibGVSb3dCaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblxuXHRcdFx0aWYgKGhlYWRlckNvbnRleHQpIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdFx0LnJlcXVlc3RTaWRlRWZmZWN0cyhbeyAkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIiB9XSwgaGVhZGVyQ29udGV4dCwgdGFibGVSb3dCaW5kaW5nLmdldEdyb3VwSWQoKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhYmxlUm93QmluZGluZz8ucmVmcmVzaCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldFF1aWNrRmlsdGVyKCk6IFF1aWNrRmlsdGVyU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFF1aWNrRmlsdGVyKCkgYXMgUXVpY2tGaWx0ZXJTZWxlY3RvciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgYXBwbGllZCB0byB0aGUgdGFibGVcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcz4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IHRhYmxlU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRhYmxlKTtcblxuXHRcdFx0Ly9XZSByZW1vdmUgXCJQcm9wZXJ0eTo6XCIgYXMgaXQgaXMgcHJlZml4ZWQgdG8gdGhvc2UgY29sdW1ucyB0aGF0IGhhdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eUluZm9zLlxuXHRcdFx0Ly9UaGUgUHJlc2VudGF0aW9uIFZhcmlhbnQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyAoaXQgaXMgb25seSByZXF1aXJlZCBieSB0aGUgVGFibGUgYW5kIEFwcFN0YXRlKS5cblx0XHRcdGNvbnN0IHNvcnRPcmRlciA9IHRhYmxlU3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRQcm9wZXJ0eTogc29ydGVyLm5hbWUucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIiksXG5cdFx0XHRcdFx0RGVzY2VuZGluZzogc29ydGVyLmRlc2NlbmRpbmcgPz8gZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZ3JvdXBMZXZlbHMgPSB0YWJsZVN0YXRlLmdyb3VwTGV2ZWxzPy5tYXAoKGdyb3VwOiBHcm91cExldmVscykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZ3JvdXAubmFtZS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgdGFibGVWaXogPSB7XG5cdFx0XHRcdENvbnRlbnQ6IHRhYmxlU3RhdGUuaXRlbXM/Lm1hcCgoaXRlbTogSXRlbXMpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0VmFsdWU6IGl0ZW0ubmFtZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRUeXBlOiBcIkxpbmVJdGVtXCJcblx0XHRcdH07XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHsgYWdncmVnYXRlZD86IGJvb2xlYW4gfT4gPSB7fTtcblx0XHRcdGxldCBoYXNBZ2dyZWdhdGlvbnMgPSBmYWxzZTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRhYmxlU3RhdGUuYWdncmVnYXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0tleSA9IGtleS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdFx0YWdncmVnYXRpb25zW25ld0tleV0gPSB0YWJsZVN0YXRlLmFnZ3JlZ2F0aW9uc1trZXldO1xuXHRcdFx0XHRoYXNBZ2dyZWdhdGlvbnMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gKHRhYmxlLmdldFBheWxvYWQoKSBhcyB7IGluaXRpYWxFeHBhbnNpb25MZXZlbD86IG51bWJlcjsgaGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nIH0pXG5cdFx0XHRcdD8uaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0Y29uc3QgdGFibGVQViA9IG5ldyBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MoKTtcblx0XHRcdHRhYmxlUFYuc2V0VGFibGVWaXN1YWxpemF0aW9uKHRhYmxlVml6KTtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXM6IFB2UHJvcGVydGllcyA9IHtcblx0XHRcdFx0R3JvdXBCeTogZ3JvdXBMZXZlbHMgfHwgW10sXG5cdFx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyIHx8IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGhhc0FnZ3JlZ2F0aW9ucykge1xuXHRcdFx0XHRwcm9wZXJ0aWVzLkFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9ucztcblx0XHRcdH1cblx0XHRcdGlmIChpbml0aWFsRXhwYW5zaW9uTGV2ZWwpIHtcblx0XHRcdFx0cHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSBpbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZVBWLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cdFx0XHRyZXR1cm4gdGFibGVQVjtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBhIG5ldyBwcmVzZW50YXRpb24gdmFyaWFudCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZVBWIFRoZSBuZXcgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyB0byBiZSBzZXQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRQcmVzZW50YXRpb25WYXJpYW50KHRhYmxlUFY6IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblxuXHRcdFx0Y29uc3QgY3VycmVudFN0YXRlUFYgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSB0aGlzLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb05hbWVzID0gcHJvcGVydHlJbmZvcy5tYXAoKHByb3BJbmZvKSA9PiBwcm9wSW5mby5rZXkpO1xuXHRcdFx0Y29uc3QgbmV3VGFibGVTdGF0ZSA9IGNvbnZlcnRQVlRvU3RhdGUodGFibGVQViwgY3VycmVudFN0YXRlUFYsIHByb3BlcnR5SW5mb05hbWVzKTtcblx0XHRcdGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IHRhYmxlUFYuZ2V0UHJvcGVydGllcygpO1xuXHRcdFx0aWYgKHRhYmxlUHJvcGVydGllcz8uaW5pdGlhbEV4cGFuc2lvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgdGFibGVQYXlsb2FkID0gdGFibGUuZ2V0UGF5bG9hZCgpIGFzIHsgaW5pdGlhbEV4cGFuc2lvbkxldmVsPzogbnVtYmVyOyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfTtcblx0XHRcdFx0dGFibGVQYXlsb2FkLmluaXRpYWxFeHBhbnNpb25MZXZlbCA9IHRhYmxlUHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKHRhYmxlLCBuZXdUYWJsZVN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gc2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBhcHBsaWVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgS2V5IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFyaWFudC4gSW4gY2FzZSB0aGUgbW9kZWwgaXMgbm90IHlldCBzZXQsIGBudWxsYCB3aWxsIGJlIHJldHVybmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRDdXJyZW50VmFyaWFudEtleSgpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKT8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgYSB2YXJpYW50IG1hbmFnZW1lbnQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gSWYgdGhlIHBhc3NlZCBrZXkgZG9lc24ndCBpZGVudGlmeSBhIHZhcmlhbnQsIGl0IHdpbGwgYmUgaWdub3JlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk7XG5cdFx0dmFyaWFudE1hbmFnZW1lbnQuc2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5KTtcblx0fVxuXG5cdF9nZXRNZXNzYWdlTWFuYWdlcigpOiBNZXNzYWdpbmcge1xuXHRcdHJldHVybiBNZXNzYWdpbmc7XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdF9nZXRSb3dCaW5kaW5nKCk6IE9EYXRhTGlzdEJpbmRpbmcge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBvVGFibGUuZ2V0Um93QmluZGluZygpO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q291bnRzKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIFRhYmxlVXRpbHMuZ2V0TGlzdEJpbmRpbmdGb3JDb3VudChvVGFibGUsIG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLCB7XG5cdFx0XHRiYXRjaEdyb3VwSWQ6ICF0aGlzLmdldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiKSA/IG9UYWJsZS5kYXRhKFwiYmF0Y2hHcm91cElkXCIpIDogXCIkYXV0b1wiLFxuXHRcdFx0YWRkaXRpb25hbEZpbHRlcnM6IFRhYmxlVXRpbHMuZ2V0SGlkZGVuRmlsdGVycyhvVGFibGUpXG5cdFx0fSlcblx0XHRcdC50aGVuKChpVmFsdWU6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVGFibGVVdGlscy5nZXRDb3VudEZvcm1hdHRlZChpVmFsdWUpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBcIjBcIjtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNvbnRleHQgY2hhbmdlIG9uIHRoZSB0YWJsZS5cblx0ICogQW4gZXZlbnQgaXMgZmlyZWQgdG8gcHJvcGFnYXRlIHRoZSBPZGF0YUxpc3RCaW5kaW5nIGV2ZW50IGFuZCB0aGUgZW5hYmxlbWVudFxuXHQgKiBvZiB0aGUgY3JlYXRpb24gcm93IGlzIGNhbGN1bGF0ZWQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgVUk1IGV2ZW50XG5cdCAqL1xuXHRvbkxpc3RCaW5kaW5nQ2hhbmdlKHVpNUV2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwibGlzdEJpbmRpbmdDaGFuZ2VcIiwgdWk1RXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHR0aGlzLnNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnJlZnJlc2hTZWxlY3RlZENvdW50KCk7XG5cdFx0VGFibGVSdW50aW1lLnNldENvbnRleHRzQXN5bmModGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkZpZWxkTGl2ZUNoYW5nZSh1aTVFdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRmllbGRMaXZlQ2hhbmdlKHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb24gYSBxdWlja0ZpbHRlclxuXHQgKiBUaGUgdGFibGUgaXMgcmVib3VuZCBpZiB0aGUgRmlsdGVyQmFyIGlzIG5vdCBzdXNwZW5kZWQgYW5kIHVwZGF0ZSB0aGUgQXBwU3RhdGUuXG5cdCAqXG5cdCAqL1xuXHRvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdC8vIFJlYmluZCB0aGUgdGFibGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIHF1aWNrIGZpbHRlciBrZXkuXG5cdFx0Ly8gV2UgZG9uJ3QgcmViaW5kIHRoZSB0YWJsZSBpZiB0aGUgZmlsdGVyQmFyIGZvciB0aGUgdGFibGUgaXMgc3VzcGVuZGVkXG5cdFx0Ly8gYXMgcmViaW5kIHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBmaWx0ZXJCYXIgaXMgcmVzdW1lZFxuXHRcdGNvbnN0IGZpbHRlckJhcklEID0gdGFibGUuZ2V0RmlsdGVyKCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gKGZpbHRlckJhcklEICYmIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsdGVyQmFySUQpKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFmaWx0ZXJCYXI/LmdldFN1c3BlbmRTZWxlY3Rpb24/LigpKSB7XG5cdFx0XHR0YWJsZS5yZWJpbmQoKTtcblx0XHR9XG5cdFx0KENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHRvblRhYmxlTmF2aWdhdGUob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBvQ29udGV4dDogQ29udGV4dCwgbVBhcmFtZXRlcnM6IG9iamVjdCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUob0NvbnRleHQpKSB7XG5cdFx0XHRpZiAodGhpcy5mdWxsU2NyZWVuRGlhbG9nKSB7XG5cdFx0XHRcdC8vIEV4aXQgZnVsbHNjcmVlbiBtb2RlIGJlZm9yZSBuYXZpZ2F0aW9uXG5cdFx0XHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZy5jbG9zZSgpOyAvLyBUaGUgZnVsbHNjcmVlbmRpYWxvZyB3aWxsIHNldCB0aGlzLmZ1bGxTY3JlZW5EaWFsb2cgdG8gdW5kZWZpbmVkIHdoZW4gY2xvc2luZ1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBtUGFyYW1ldGVycywgeyByZWFzb246IE5hdmlnYXRpb25SZWFzb24uUm93UHJlc3MgfSk7XG5cdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQob0NvbnRleHQsIG5hdmlnYXRpb25QYXJhbWV0ZXJzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgcm93IHByZXNzIGV2ZW50IG9mIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHByZXNzRXZlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPlxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uVGFibGVSb3dQcmVzcyhwcmVzc0V2ZW50OiBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB2b2lkPiB7XG5cdFx0Y29uc3Qgcm93TmF2aWdhdGlvbkluZm8gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uYW5ub3RhdGlvbi5yb3c/Lm5hdmlnYXRpb25JbmZvO1xuXHRcdGlmICh0aGlzLm92ZXJyaWRlUm93UHJlc3MgPT09IHRydWUpIHtcblx0XHRcdC8vIFRoZXJlJ3MgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJvd1ByZXNzIGV2ZW50IC0tPiB3ZSBqdXN0IGZpcmUgdGhlIGV2ZW50IGFuZCBkbyBub3QgbmF2aWdhdGVcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicm93UHJlc3NcIiwgcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdH0gZWxzZSBpZiAocm93TmF2aWdhdGlvbkluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0aWYgKHJvd05hdmlnYXRpb25JbmZvLnR5cGUgPT09IFwiT3V0Ym91bmRcIikge1xuXHRcdFx0XHQvLyBPdXRib3VuZCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiB0aGlzLmF2b2lkUGFyYWxsZWxDYWxscyhcblx0XHRcdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHRcdFx0Y29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZChcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlcixcblx0XHRcdFx0XHRcdFx0cm93TmF2aWdhdGlvbkluZm8ubmF2aWdhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW50ZXJuYWwgbmF2aWdhdGlvblxuXHRcdFx0XHRjb25zdCBlZGl0YWJsZSA9IHJvd05hdmlnYXRpb25JbmZvLmNoZWNrRWRpdGFibGUgPyAhYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRjYWxsRXh0ZW5zaW9uOiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldFBhdGg6IHJvd05hdmlnYXRpb25JbmZvLnRhcmdldFBhdGgsXG5cdFx0XHRcdFx0ZWRpdGFibGUsXG5cdFx0XHRcdFx0cmVjcmVhdGVDb250ZXh0OiByb3dOYXZpZ2F0aW9uSW5mby5yZWNyZWF0ZUNvbnRleHRcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRyZXR1cm4gdGhpcy5vblRhYmxlTmF2aWdhdGUoY29udHJvbGxlciwgYmluZGluZ0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaXJlcyB0aGUgY29ycmVzcG9uZGluZyBldmVudCB3aGVuIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGlzIHByZXNzZWQgKGluIEFMUCkuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VnbWVudGVkQnV0dG9uUHJlc3NcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIG5ldyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2VsZWN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQuLi5vRXZlbnQuZ2V0UGFyYW1ldGVycygpLFxuXHRcdFx0b3JpZ2luYWxTb3VyY2U6IG9FdmVudC5nZXRTb3VyY2UoKVxuXHRcdH07XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2VsZWN0ZWRcIiwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhcmlhbnRTYXZlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2F2ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHJvdyBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Sb3dQcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uTm9vcCgpOiB2b2lkIHtcblx0XHQvLyBEbyBub3RoaW5nLCB0aGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoZSB0YWJsZSBhY3Rpb24gYXJlIGZpcmVkIGluIHJlc3BvbnNpdmUgdGFibGVcblx0fVxuXG5cdGlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdC8vIHByZXZlbnQgbmF2aWdhdGlvbiB0byBhbiBlbXB0eSByb3dcblx0XHRjb25zdCBlbXB0eVJvdyA9IGNvbnRleHQuaXNJbmFjdGl2ZSgpID09IHRydWUgJiYgY29udGV4dC5pc1RyYW5zaWVudCgpID09PSB0cnVlO1xuXHRcdC8vIE9yIGluIHRoZSBjYXNlIG9mIGFuIGFuYWx5dGljYWwgdGFibGUsIGlmIHdlJ3JlIHRyeWluZyB0byBuYXZpZ2F0ZSB0byBhIGNvbnRleHQgY29ycmVzcG9uZGluZyB0byBhIHZpc3VhbCBncm91cCBvciBncmFuZCB0b3RhbFxuXHRcdC8vIC0tPiBDYW5jZWwgbmF2aWdhdGlvblxuXHRcdGNvbnN0IGFuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkID1cblx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuZW5hYmxlQW5hbHl0aWNzID09PSB0cnVlICYmXG5cdFx0XHRjb250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCIpICYmXG5cdFx0XHR0eXBlb2YgY29udGV4dC5nZXRQcm9wZXJ0eShcIkAkdWk1Lm5vZGUuaXNFeHBhbmRlZFwiKSA9PT0gXCJib29sZWFuXCI7XG5cdFx0cmV0dXJuICEoZW1wdHlSb3cgfHwgYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudCxcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRjb250ZXh0czogQ29udGV4dFtdLFxuXHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQgfCBib29sZWFuIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoY29udHJvbGxlciwgY29udGV4dHMsIG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcyk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25PcGVuSW5OZXdUYWJQcmVzcyhcblx0XHRvRXZlbnQ6IFVJNUV2ZW50LFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFsbENvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0bmF2aWdhYmxlQ29udGV4dHM6IENvbnRleHRbXSxcblx0XHRwYXJhbWV0ZXJzOiBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMsXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj4ge1xuXHRcdGlmIChuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb25zdCBwcm9taXNlVG9XYWl0ID0gbmV3IFByb21pc2VLZWVwZXI8Ym9vbGVhbj4oKTtcblx0XHRcdGlmIChuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGggPCBhbGxDb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgdGV4dEtleSA9XG5cdFx0XHRcdFx0bmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiVF9UQUJMRV9OQVZJR0FUSU9OX05PVF9BTExfSVRFTVNfTkFWSUdBQkxFX1NJTkdVTEFSXCJcblx0XHRcdFx0XHRcdDogXCJUX1RBQkxFX05BVklHQVRJT05fTk9UX0FMTF9JVEVNU19OQVZJR0FCTEVfUExVUkFMXCI7XG5cdFx0XHRcdE1lc3NhZ2VCb3guY29uZmlybShcblx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRleHRLZXksIFthbGxDb250ZXh0cy5sZW5ndGgsIG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCwgbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zXSksXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b25DbG9zZTogKHJlc3VsdDogc3RyaW5nKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQgPT09IFwiQ0FOQ0VMXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9taXNlVG9XYWl0LnJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHByb21pc2VUb1dhaXQucmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwcm9taXNlVG9XYWl0LnJlc29sdmUodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzaG91bGRQcm9jZWVkID0gYXdhaXQgcHJvbWlzZVRvV2FpdC5wcm9taXNlO1xuXHRcdFx0aWYgKHNob3VsZFByb2NlZWQpIHtcblx0XHRcdFx0bmF2aWdhYmxlQ29udGV4dHMuZm9yRWFjaChhc3luYyAoY29udGV4dDogQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dCkpIHtcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnMuZWRpdGFibGUgPSAhY29udGV4dC5nZXRQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQoY29udGV4dCwgcGFyYW1ldGVycyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxQYXRjaENvbXBsZXRlZChldnQ6IEV2ZW50PHsgZXJyb3I6IHsgc3RhdHVzPzogbnVtYmVyOyBjYXVzZT86IHsgc3RhdHVzPzogbnVtYmVyIH07IG1lc3NhZ2U/OiBzdHJpbmcgfSB9Pik6IHZvaWQge1xuXHRcdC8vIEJDUDogMjM4MDAyMzA5MFxuXHRcdC8vIFdlIGhhbmRsZSBlbmFibGVtZW50IG9mIERlbGV0ZSBmb3IgdGhlIHRhYmxlIGhlcmUuXG5cdFx0Ly8gRWRpdEZsb3cudHMjaGFuZGxlUGF0Y2hTZW50IGlzIGhhbmRsaW5nIHRoZSBhY3Rpb24gZW5hYmxlbWVudC5cblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBzZWxlY3RlZENvbnRleHRzID0gdGhpcy5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdFx0RGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKGludGVybmFsTW9kZWxDb250ZXh0LCBzZWxlY3RlZENvbnRleHRzKTtcblx0XHRpZiAoZXZ0LmdldFBhcmFtZXRlcihcImVycm9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coeyBjb250cm9sOiB0aGlzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIucmVsZWFzZUhvbGRCeUNvbnRyb2wodGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxQYXRjaFNlbnQoZXZ0OiBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRjb25zdCBlZGl0Rmxvd0V4dGVuc2lvbiA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0Y29udHJvbGxlci5tZXNzYWdlSGFuZGxlci5ob2xkTWVzc2FnZXNGb3JDb250cm9sKHRoaXMpO1xuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5oYW5kbGVQYXRjaFNlbnQpIHtcblx0XHRcdGVkaXRGbG93RXh0ZW5zaW9uLmhhbmRsZVBhdGNoU2VudC5jYWxsKHRoaXMsIGV2dCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sbGVyLmlubGluZUVkaXRGbG93LmlzSW5saW5lRWRpdFBvc3NpYmxlKCkpIHtcblx0XHRcdGNvbnRyb2xsZXIuaW5saW5lRWRpdEZsb3cuaGFuZGxlSW5saW5lRWRpdFBhdGNoU2VudC5jYWxsKHRoaXMsIGV2dCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQob0V2ZW50OiBVSTVFdmVudDx7IGVycm9yOiBzdHJpbmcgfSwgT0RhdGFMaXN0QmluZGluZz4pOiB2b2lkIHtcblx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQgPSB0aGlzLmNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KG9FdmVudCk7XG5cdFx0aWYgKGlzUmVjb21tZW5kYXRpb25SZWxldmFudCkge1xuXHRcdFx0Y29uc3QgY29udGV4dElkZW50aWZpZXIgPSB0aGlzLmdldElkZW50aWZpZXJDb2x1bW4oaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50KSBhcyBzdHJpbmdbXTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlQ29udGV4dHNBcnJheSA9IG9FdmVudC5nZXRTb3VyY2UoKS5nZXRBbGxDdXJyZW50Q29udGV4dHMoKTtcblx0XHRcdGNvbnN0IG5ld0NvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdID0gW107XG5cdFx0XHRyZXNwb25zZUNvbnRleHRzQXJyYXkuZm9yRWFjaCgoY29udGV4dCkgPT4ge1xuXHRcdFx0XHRuZXdDb250ZXh0cy5wdXNoKHtcblx0XHRcdFx0XHRjb250ZXh0LFxuXHRcdFx0XHRcdGNvbnRleHRJZGVudGlmaWVyXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkucmVjb21tZW5kYXRpb25zLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMobmV3Q29udGV4dHMsIHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImVycm9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coeyBjb250cm9sOiB0aGlzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIucmVsZWFzZUhvbGRCeUNvbnRyb2wodGhpcyk7XG5cdFx0XHR0aGlzLnNldERvd25sb2FkVXJsKCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZGF0YUluaXRpYWxpemVkXCIsIHRydWUpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdGlmICh0aGlzLmdldFF1aWNrRmlsdGVyKCkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2wuZmlsdGVycz8ucXVpY2tGaWx0ZXJzPy5zaG93Q291bnRzID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnNldENvdW50c0FzTG9hZGluZygpO1xuXHRcdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5yZWZyZXNoVW5TZWxlY3RlZENvdW50cygpO1xuXHRcdH1cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBQYXN0ZSBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIGV2ZW50XG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBwYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25QYXN0ZShldnQ6IFBhc3RlUHJvdmlkZXIkUGFzdGVFdmVudCwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IHJhd1Bhc3RlZERhdGEgPSBldnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdHNvdXJjZSA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRsZXQgdGFibGU6IFRhYmxlO1xuXHRcdGlmICghZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdC8vIHRhYmxlIHRvb2xiYXJcblx0XHRcdHRhYmxlID0gKHNvdXJjZS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpID8gc291cmNlIDogKHNvdXJjZSBhcyBDb250cm9sKS5nZXRQYXJlbnQoKSkgYXMgVGFibGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGNvbnRleHQgbWVudVxuXHRcdFx0Y29uc3QgbWVudSA9IChzb3VyY2UuaXNBKFwic2FwLm0uTWVudVwiKSA/IHNvdXJjZSA6IChzb3VyY2UgYXMgQ29udHJvbCkuZ2V0UGFyZW50KCkpIGFzIE1lbnU7XG5cdFx0XHR0YWJsZSA9IG1lbnUuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIFRhYmxlO1xuXHRcdH1cblx0XHRjb25zdCBpbnRlcm5hbENvbnRleHQgPSB0YWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXG5cdFx0Ly8gSWYgcGFzdGUgaXMgZGlzYWJsZWQgb3IgaWYgd2UncmUgbm90IGluIGVkaXQgbW9kZSBpbiBhbiBPYmplY3RQYWdlLCB3ZSBjYW4ndCBwYXN0ZSBhbnl0aGluZ1xuXHRcdGlmICghdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0ZSB8fCAodGFibGUuZ2V0Um93QmluZGluZygpLmlzUmVsYXRpdmUoKSAmJiAhQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZSh0aGlzKSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvL1RoaXMgY29kZSBpcyBleGVjdXRlZCBvbmx5IGluIGNhc2Ugb2YgVHJlZVRhYmxlXG5cdFx0Y29uc3QgYWN0aW9uID0gaW50ZXJuYWxDb250ZXh0LmdldFByb3BlcnR5KFwibm9kZVVwZGF0ZXNJbmZvL2xhc3RBY3Rpb25cIik7XG5cdFx0Y29uc3Qgc3JjQ29udGV4dHMgPSBpbnRlcm5hbENvbnRleHQuZ2V0UHJvcGVydHkoXCJub2RlVXBkYXRlc0luZm8vcGFzdGFibGVDb250ZXh0c1wiKTtcblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnR5cGUgPT09IFwiVHJlZVRhYmxlXCIpIHtcblx0XHRcdGxldCBzcmNDb250ZXh0ID0gc3JjQ29udGV4dHNbMF07XG5cdFx0XHRjb25zdCBuZXdQYXJlbnRDb250ZXh0ID0gIWZvckNvbnRleHRNZW51XG5cdFx0XHRcdD8gKHRhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKVswXSBhcyBDb250ZXh0KVxuXHRcdFx0XHQ6IChpbnRlcm5hbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udGV4dG1lbnUvc2VsZWN0ZWRDb250ZXh0c1wiKVswXSBhcyBDb250ZXh0KTtcblx0XHRcdC8vIElmIHRoZSB0YXJnZXRDb250ZXh0IGhhcyBiZWVuIGRpc2Fzc29jaWF0ZWQgZnJvbSB0aGUgdGFibGUgZHVlIHRvIGV4cGFuZCBhbmQgY29sbGFwc2UgYWN0aW9ucywgd2UgYXR0ZW1wdCB0byByZXRyaWV2ZSBpdCB1c2luZyBpdHMgcGF0aC5cblx0XHRcdHNyY0NvbnRleHQgPSB0YWJsZVxuXHRcdFx0XHQuZ2V0Um93QmluZGluZygpXG5cdFx0XHRcdC5nZXRBbGxDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0XHQuZmluZCgoY29udGV4dCkgPT4gY29udGV4dC5nZXRQYXRoKCkgPT09IHNyY0NvbnRleHQ/LmdldFBhdGgoKSk7XG5cblx0XHRcdGlmICghc3JjQ29udGV4dCkge1xuXHRcdFx0XHRMb2cuZXJyb3IoYFRoZSAke2FjdGlvbn0gb3BlcmF0aW9uIGlzIHVuc3VjY2Vzc2Z1bCBiZWNhdXNlIHRoZSByZWxldmFudCBjb250ZXh0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dGFibGUuc2V0QnVzeSh0cnVlKTtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRcdHNyY0NvbnRleHQubW92ZSh7IHBhcmVudDogbmV3UGFyZW50Q29udGV4dCA/PyBudWxsLCBjb3B5OiBhY3Rpb24gPT09IFwiQ29weVwiIH0pLFxuXHRcdFx0XHRcdGFjdGlvbiA9PT0gXCJDb3B5XCJcblx0XHRcdFx0XHRcdD8gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JDb3B5QWN0aW9uKHNyY0NvbnRleHQpXG5cdFx0XHRcdFx0XHQ6IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzRm9yQ2hhbmdlTmV4dFNpYmxpbmdBY3Rpb24oc3JjQ29udGV4dClcblx0XHRcdFx0XSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiTV9UQUJMRURST1BfRkFJTEVEXCIsIFtcIlwiXSkpO1xuXHRcdFx0XHRMb2cuZXJyb3IoYFRoZSAke2FjdGlvbn0gb3BlcmF0aW9uIGlzIHVuc3VjY2Vzc2Z1bC4gYCArICgoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gXCJcIikpO1xuXHRcdFx0fVxuXHRcdFx0dGFibGUuc2V0QnVzeShmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9wYXN0YWJsZUNvbnRleHRzYCwgW10pO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBub2RlVXBkYXRlc0luZm8vcGFzdGVFbmFibGVtZW50YCwgZmFsc2UpO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBjb250ZXh0bWVudS9ub2RlVXBkYXRlc0luZm8vcGFzdGVFbmFibGVtZW50YCwgZmFsc2UpO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBub2RlVXBkYXRlc0luZm8vbGFzdEFjdGlvbmAsIHVuZGVmaW5lZCk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvL1RoaXMgY29kZSBpcyBleGVjdXRlZCBmb3IgdGFibGVzIGV4Y2VwdGVkIFRyZWVUYWJsZVxuXHRcdGlmICh0YWJsZS5nZXRFbmFibGVQYXN0ZSgpID09PSB0cnVlICYmICFmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0Y29uc3QgY2VsbFNlbGVjdGlvbiA9IHRhYmxlLmdldENlbGxTZWxlY3RvcigpPy5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdGlmIChjZWxsU2VsZWN0aW9uPy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0UGFzdGVIZWxwZXIucGFzdGVSYW5nZURhdGEocmF3UGFzdGVkRGF0YSA/PyBbXSwgY2VsbFNlbGVjdGlvbiwgdGFibGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0UGFzdGVIZWxwZXIucGFzdGVEYXRhKHJhd1Bhc3RlZERhdGEgPz8gW10sIHRhYmxlLCBjb250cm9sbGVyKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9PUF9DT05UUk9MTEVSX1NBUEZFX1BBU1RFX0RJU0FCTEVEX01FU1NBR0VcIiksIHtcblx0XHRcdFx0dGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUlwiKVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIEN1dCBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25DdXQoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDdXRcIik7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ29weSBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Db3B5KGV2dDogVUk1RXZlbnQ8e30sIFVJNUVsZW1lbnQ+LCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5fb25Db3B5Q3V0KGV2dCwgZm9yQ29udGV4dE1lbnUsIFwiQ29weVwiKTtcblx0fVxuXG5cdC8vIFRoaXMgZXZlbnQgd2lsbCBhbGxvdyB1cyB0byBpbnRlcmNlcHQgdGhlIGV4cG9ydCBiZWZvcmUgaXMgdHJpZ2dlcmVkIHRvIGNvdmVyIHNwZWNpZmljIGNhc2VzXG5cdC8vIHRoYXQgY291bGRuJ3QgYmUgYWRkcmVzc2VkIG9uIHRoZSBwcm9wZXJ0eUluZm9zIGZvciBlYWNoIGNvbHVtbi5cblx0Ly8gZS5nLiBGaXhlZCBUYXJnZXQgVmFsdWUgZm9yIHRoZSBkYXRhcG9pbnRzXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudDogVGFibGUkQmVmb3JlRXhwb3J0RXZlbnQpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25CZWZvcmVFeHBvcnQoZXhwb3J0RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIE1EQyBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIHRvIGRpc3BsYXkgbWVzc2FnZVN0cmlwIG9uIGEgdGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlXG5cdCAqIEBwYXJhbSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdG8gcmVuZGVyIHRoZSBtZXNzYWdlU3RyaXAgdmlzaWJsZVxuXHQgKi9cblx0ZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyKG1lc3NhZ2U6IE1lc3NhZ2UsIGNvbnRyb2w6IENvbnRyb2wpOiBib29sZWFuIHtcblx0XHRjb25zdCBtZGNUYWJsZSA9IGNvbnRyb2wgYXMgTURDVGFibGU7XG5cdFx0Y29uc3Qgc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID0gbWRjVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IHNUYWJsZVJvd0JpbmRpbmcgPSAoc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID8gYCR7c1RhYmxlQ29udGV4dEJpbmRpbmdQYXRofS9gIDogXCJcIikgKyBtZGNUYWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBzVGFibGVSb3dCaW5kaW5nID09PSBtZXNzYWdlLmdldFRhcmdldHMoKVswXSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGV2ZW50IGhhbmRsZXMgdGhlIERhdGFTdGF0ZSBvZiB0aGUgRGF0YVN0YXRlSW5kaWNhdG9yIHBsdWdpbiBmcm9tIE1EQyBvbiBhIHRhYmxlLlxuXHQgKiBJdCdzIGZpcmVkIHdoZW4gbmV3IGVycm9yIG1lc3NhZ2VzIGFyZSBzZW50IGZyb20gdGhlIGJhY2tlbmQgdG8gdXBkYXRlIHJvdyBoaWdobGlnaHRpbmcuXG5cdCAqIEBwYXJhbSBldnQgRXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EYXRhU3RhdGVDaGFuZ2UoZXZ0OiBEYXRhU3RhdGVJbmRpY2F0b3IkRGF0YVN0YXRlQ2hhbmdlRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBkYXRhU3RhdGVJbmRpY2F0b3IgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgZmlsdGVyZWRNZXNzYWdlcyA9IGV2dC5nZXRQYXJhbWV0ZXIoXCJmaWx0ZXJlZE1lc3NhZ2VzXCIpIGFzIE1lc3NhZ2VbXTtcblx0XHRpZiAoZmlsdGVyZWRNZXNzYWdlcykge1xuXHRcdFx0Y29uc3QgaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcyA9IGZpbHRlcmVkTWVzc2FnZXNcblx0XHRcdFx0Lm1hcCgobXNnKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGVjaG5pY2FsRGV0YWlscyA9IChtc2cuZ2V0VGVjaG5pY2FsRGV0YWlscygpIHx8IHt9KSBhcyB7XG5cdFx0XHRcdFx0XHR0YWJsZUlkPzogc3RyaW5nO1xuXHRcdFx0XHRcdFx0ZW1wdHlSb3dNZXNzYWdlPzogYm9vbGVhbjtcblx0XHRcdFx0XHRcdG1pc3NpbmdDb2x1bW4/OiBzdHJpbmc7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRyZXR1cm4gdGVjaG5pY2FsRGV0YWlscy5lbXB0eVJvd01lc3NhZ2UgPT09IHRydWUgJiYgdGVjaG5pY2FsRGV0YWlscy5taXNzaW5nQ29sdW1uO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZmlsdGVyKChoaWRkZW5Qcm9wZXJ0eSkgPT4gISFoaWRkZW5Qcm9wZXJ0eSk7XG5cdFx0XHRpZiAoaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVN0cmlwRXJyb3IgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcblx0XHRcdFx0XHRoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHRcdFx0PyBcIk1fTUVTU0FHRVNUUklQX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5cIlxuXHRcdFx0XHRcdFx0OiBcIk1fTUVTU0FHRVNUUklQX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5fUExVUkFMXCIsXG5cdFx0XHRcdFx0W2hpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMuam9pbihcIiwgXCIpXVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRkYXRhU3RhdGVJbmRpY2F0b3Iuc2hvd01lc3NhZ2UobWVzc2FnZVN0cmlwRXJyb3IsIFwiRXJyb3JcIik7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gZGF0YVN0YXRlSW5kaWNhdG9yLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcImZpbHRlcmVkTWVzc2FnZXNcIiwgZmlsdGVyZWRNZXNzYWdlcywgZGF0YVN0YXRlSW5kaWNhdG9yLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgQ29udGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVzdW1lQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiLCBmYWxzZSk7XG5cdFx0aWYgKChiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgJiYgIXRoaXMuZ2V0RGF0YUluaXRpYWxpemVkKCkpIHx8IHRoaXMuZ2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIikpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIiwgZmFsc2UpO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnJlYmluZCgpO1xuXHRcdH1cblx0fVxuXG5cdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzKG9GaWx0ZXJDb250cm9sOiBDb250cm9sKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQ29udHJvbCBhcyBGaWx0ZXJCYXIsIG9UYWJsZSk7XG5cdH1cblxuXHRzdXNwZW5kQmluZGluZygpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiLCB0cnVlKTtcblx0fVxuXG5cdGludmFsaWRhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJkYXRhSW5pdGlhbGl6ZWRcIiwgZmFsc2UpO1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJvdXREYXRlZEJpbmRpbmdcIiwgZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGNyZWF0aW9uIHJvdy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3QgZmFzdENyZWF0aW9uUm93ID0gdGFibGUuZ2V0Q3JlYXRpb25Sb3coKTtcblxuXHRcdGlmIChmYXN0Q3JlYXRpb25Sb3cgJiYgIWZhc3RDcmVhdGlvblJvdy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRjb25zdCB0YWJsZUJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHRhYmxlQmluZGluZy5nZXRDb250ZXh0KCk7XG5cblx0XHRcdGlmIChiaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0XHRUYWJsZUhlbHBlci5lbmFibGVGYXN0Q3JlYXRpb25Sb3coXG5cdFx0XHRcdFx0ZmFzdENyZWF0aW9uUm93LFxuXHRcdFx0XHRcdHRhYmxlQmluZGluZy5nZXRQYXRoKCksXG5cdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0YmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIHRoZSBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHJldHVybiB0aGlzLl9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uTWFzc0VkaXRCdXR0b25QcmVzc2VkKHVpNUV2ZW50OiBVSTVFdmVudCwgZm9yQ29udGV4dE1lbnU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG1hc3NFZGl0SGVscGVyID0gbmV3IE1hc3NFZGl0RGlhbG9nSGVscGVyKHtcblx0XHRcdHRhYmxlOiB0aGlzLmNvbnRlbnQsXG5cdFx0XHRvbkNvbnRleHRNZW51OiBmb3JDb250ZXh0TWVudSxcblx0XHRcdG9uQ2xvc2U6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXREaWFsb2dIZWxwZXIobWFzc0VkaXRIZWxwZXIpO1xuXHRcdG1hc3NFZGl0SGVscGVyLm9wZW4oKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvblNlbGVjdGlvbkNoYW5nZWQodWk1ZXZlbnQ6IFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgVGFibGVSdW50aW1lLnNldENvbnRleHRzKHVpNWV2ZW50KTtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB7IC4uLnVpNWV2ZW50LmdldFBhcmFtZXRlcnMoKSwgc2VsZWN0ZWRDb250ZXh0OiB0aGlzLmdldFNlbGVjdGVkQ29udGV4dHMoKSB9KTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFjdGlvblByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+LFxuXHRcdHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRhY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0bW9kZWw6IE9EYXRhTW9kZWw7XG5cdFx0XHRub3RBcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0XHRjb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0YXBwbGljYWJsZUNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRlbnRpdHlTZXROYW1lOiBzdHJpbmc7XG5cdFx0XHRkaXNhYmxlU3RyaWN0SGFuZGxpbmc/OiBib29sZWFuO1xuXHRcdH1cblx0KTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cGFyYW1ldGVycy5tb2RlbCA9IG9FdmVudC5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0Y29uc3QgbGFiZWxFeHByZXNzaW9uID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmcocGFyYW1ldGVycy5sYWJlbCwgXCJzdHJpbmdcIik7XG5cdFx0aWYgKGlzUGF0aEluTW9kZWxFeHByZXNzaW9uKGxhYmVsRXhwcmVzc2lvbikgJiYgKGxhYmVsRXhwcmVzc2lvbi5tb2RlbE5hbWUgPT09IFwiaTE4blwiIHx8IGxhYmVsRXhwcmVzc2lvbi5tb2RlbE5hbWUgPT09IFwiQGkxOG5cIikpIHtcblx0XHRcdC8vcmVzb2x2ZUJpbmRpbmdTdHJpbmcocGFyYW1ldGVycy5sYWJlbCwgXCJzdHJpbmdcIilcblx0XHRcdHBhcmFtZXRlcnMubGFiZWwgPVxuXHRcdFx0XHQob0V2ZW50LmdldFNvdXJjZSgpLmdldE1vZGVsKGxhYmVsRXhwcmVzc2lvbi5tb2RlbE5hbWUpIGFzIFJlc291cmNlTW9kZWwpLmdldFByb3BlcnR5KGxhYmVsRXhwcmVzc2lvbi5wYXRoKSA/P1xuXHRcdFx0XHRwYXJhbWV0ZXJzLmxhYmVsO1xuXHRcdH1cblx0XHRsZXQgZXhlY3V0ZUFjdGlvbiA9IHRydWU7XG5cdFx0aWYgKHBhcmFtZXRlcnMubm90QXBwbGljYWJsZUNvbnRleHRzICYmIHBhcmFtZXRlcnMubm90QXBwbGljYWJsZUNvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIElmIHdlIGhhdmUgbm9uIGFwcGxpY2FibGUgY29udGV4dHMsIHdlIG5lZWQgdG8gb3BlbiBhIGRpYWxvZyB0byBhc2sgdGhlIHVzZXIgaWYgaGUgd2FudHMgdG8gY29udGludWVcblx0XHRcdGNvbnN0IGNvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKHBhcmFtZXRlcnMubW9kZWwuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoPEVudGl0eVR5cGU+KHRoaXMuZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSkudGFyZ2V0ITtcblx0XHRcdGNvbnN0IG15VW5hcHBsaWNhYmxlQ29udGV4dERpYWxvZyA9IG5ldyBOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyh7XG5cdFx0XHRcdGVudGl0eVR5cGU6IGVudGl0eVR5cGUsXG5cdFx0XHRcdG5vdEFwcGxpY2FibGVDb250ZXh0czogcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMsXG5cdFx0XHRcdHRpdGxlOiBwYXJhbWV0ZXJzLmxhYmVsLFxuXHRcdFx0XHRyZXNvdXJjZU1vZGVsOiBnZXRSZXNvdXJjZU1vZGVsKHRoaXMpLFxuXHRcdFx0XHRlbnRpdHlTZXQ6IHBhcmFtZXRlcnMuZW50aXR5U2V0TmFtZSxcblx0XHRcdFx0YWN0aW9uTmFtZTogYWN0aW9uTmFtZSxcblx0XHRcdFx0YXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0c1xuXHRcdFx0fSk7XG5cdFx0XHRwYXJhbWV0ZXJzLmNvbnRleHRzID0gcGFyYW1ldGVycy5hcHBsaWNhYmxlQ29udGV4dHM7XG5cdFx0XHRleGVjdXRlQWN0aW9uID0gYXdhaXQgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nLm9wZW4odGhpcyk7XG5cdFx0fVxuXHRcdGlmIChleGVjdXRlQWN0aW9uKSB7XG5cdFx0XHQvLyBEaXJlY3QgZXhlY3V0aW9uIG9mIHRoZSBhY3Rpb25cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBwYWdlQ29udHJvbGxlci5lZGl0Rmxvdy5pbnZva2VBY3Rpb24oYWN0aW9uTmFtZSwgcGFyYW1ldGVycyk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKGUgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Db250ZXh0TWVudVByZXNzKG9FdmVudDogVGFibGUkQmVmb3JlT3BlbkNvbnRleHRNZW51RXZlbnQpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25Db250ZXh0TWVudVByZXNzKG9FdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogRXhwb3NlIHRoZSBpbnRlcm5hbCB0YWJsZSBkZWZpbml0aW9uIGZvciBleHRlcm5hbCB1c2FnZSBpbiB0aGUgZGVsZWdhdGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0YWJsZURlZmluaXRpb25cblx0ICovXG5cdGdldFRhYmxlRGVmaW5pdGlvbigpOiBUYWJsZVZpc3VhbGl6YXRpb24ge1xuXHRcdHJldHVybiB0aGlzLnRhYmxlRGVmaW5pdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBtYXNzIGVkaXQgcmVsYXRlZCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBtYXNzRWRpdERpYWxvZ0hlbHBlclxuXHQgKi9cblx0c2V0TWFzc0VkaXREaWFsb2dIZWxwZXIobWFzc0VkaXREaWFsb2dIZWxwZXI/OiBNYXNzRWRpdERpYWxvZ0hlbHBlcik6IHZvaWQge1xuXHRcdHRoaXMubWFzc0VkaXREaWFsb2dIZWxwZXIgPSBtYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgVGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZSwgaWYgYW55XG5cdCAqL1xuXHRnZXRNYXNzRWRpdERpYWxvZ0hlbHBlcigpOiBNYXNzRWRpdERpYWxvZ0hlbHBlciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMubWFzc0VkaXREaWFsb2dIZWxwZXI7XG5cdH1cblxuXHQvKipcblx0ICogY29ubmVjdCB0aGUgZmlsdGVyIHRvIHRoZSB0YWJsZUFQSSBpZiByZXF1aXJlZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5UYWJsZUFQSVxuXHQgKi9cblxuXHR1cGRhdGVGaWx0ZXJCYXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBmaWx0ZXJCYXJSZWZJZCA9IHRoaXMuZ2V0RmlsdGVyQmFyKCk7XG5cdFx0aWYgKHRhYmxlICYmIGZpbHRlckJhclJlZklkICYmIHRhYmxlLmdldEZpbHRlcj8uKCkgIT09IGZpbHRlckJhclJlZklkKSB7XG5cdFx0XHR0aGlzLl9zZXRGaWx0ZXJCYXIoZmlsdGVyQmFyUmVmSWQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSB0YWJsZSBmcm9tIHRoZSBsaXN0ZW5lcnMgb2YgdGhlIGZpbHRlckJhci5cblx0ICovXG5cdGRldGFjaEZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHR0YWJsZT8uc2V0RmlsdGVyKFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlciBjb250cm9sLlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyUmVmSWQgSWQgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb250cm9sXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXHRnZXRGaWx0ZXJCYXJDb250cm9sKGZpbHRlckJhclJlZklkOiBzdHJpbmcpOiBVSTVFbGVtZW50IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5ieUlkKGZpbHRlckJhclJlZklkKSB8fCAvLyBMb2NhbCBpZCB3cnQgVmlldyhGUE0gZXhwbG9yZXIgZXhhbXBsZSlcblx0XHRcdFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8IC8vIEFic29sdXRlIElkKHRoaXMgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gb2xkZXIgdmVyc2lvbnMpXG5cdFx0XHRVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMuZ2V0SWQoKS5zdWJzdHJpbmcoMCwgdGhpcy5nZXRJZCgpLmxhc3RJbmRleE9mKFwiLS1cIikgKyAyKX0ke2ZpbHRlckJhclJlZklkfWApXG5cdFx0KTsgLy8gTG9jYWwgaWQgd3J0IEZyYWdtZW50SWQod2hlbiBhbiBYTUxDb21wb3NpdGUgb3IgRnJhZ21lbnQgaXMgaW5kZXBlbmRlbnRseSBwcm9jZXNzZWQpIGluc3RlYWQgb2YgVmlld0lkXG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmlsdGVyIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBmaWx0ZXJCYXIuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5UYWJsZUFQSVxuXHQgKi9cblx0X3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLmdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQpO1xuXG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0aWYgKGZpbHRlckJhci5pc0E8RmlsdGVyQmFyQVBJPihcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKSkge1xuXHRcdFx0XHR0YWJsZS5zZXRGaWx0ZXIoYCR7ZmlsdGVyQmFyLmdldElkKCl9LWNvbnRlbnRgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGZpbHRlckJhci5pc0E8RmlsdGVyQmFyQkJWND4oXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJcIikgJiZcblx0XHRcdFx0ZmlsdGVyQmFyPy5jb250ZW50Py5pc0EoXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0YWJsZS5zZXRGaWx0ZXIoYCR7ZmlsdGVyQmFyLmNvbnRlbnQuZ2V0SWQoKX0tY29udGVudGApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0ZmlsdGVyQmFyLmlzQTxGaWx0ZXJCYXI+KFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikgfHxcblx0XHRcdFx0ZmlsdGVyQmFyLmlzQTx0eXBlb2YgQmFzaWNTZWFyY2g+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5CYXNpY1NlYXJjaFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRhYmxlLnNldEZpbHRlcihmaWx0ZXJCYXIuZ2V0SWQoKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIENyZWF0ZUFjdGl2YXRlIGV2ZW50IGZyb20gdGhlIE9EYXRhTGlzdEJpbmRpbmcuXG5cdCAqIEBwYXJhbSBhY3RpdmF0ZUV2ZW50IFRoZSBldmVudCBzZW50IGJ5IHRoZSBiaW5kaW5nXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgaGFuZGxlQ3JlYXRlQWN0aXZhdGUoYWN0aXZhdGVFdmVudDogVUk1RXZlbnQ8eyBjb250ZXh0OiBDb250ZXh0IH0sIE9EYXRhTGlzdEJpbmRpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGF3YWl0IHRoaXMuX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKGFjdGl2YXRlRXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBkcmFnZ2VkIGVsZW1lbnQgZW50ZXJzIGEgdGFibGUgcm93LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRyYWdFbnRlckRvY3VtZW50KFxuXHRcdHVpNUV2ZW50OiBVSTVFdmVudDx7IGJpbmRpbmdDb250ZXh0OiBDb250ZXh0OyBkcmFnU291cmNlOiBDb250ZXh0OyBkcm9wUG9zaXRpb246IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCBcIk9uXCIgfSwgRHJhZ0Ryb3BJbmZvPlxuXHQpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25EcmFnRW50ZXJEb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU3RhcnRzIHRoZSBkcmFnIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EcmFnU3RhcnREb2N1bWVudCh1aTVFdmVudDogVUk1RXZlbnQ8eyBiaW5kaW5nQ29udGV4dDogQ29udGV4dCB9LCBDb250cm9sPik6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkRyYWdTdGFydERvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEcm9wcyB0aGUgZG9jdW1lbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKiBAcmV0dXJucyBUaGUgUHJvbWlzZVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uRHJvcERvY3VtZW50KFxuXHRcdHVpNUV2ZW50OiBVSTVFdmVudDx7XG5cdFx0XHRiaW5kaW5nQ29udGV4dDogQ29udGV4dDtcblx0XHRcdGRyYWdTb3VyY2U6IENvbnRleHQ7XG5cdFx0XHRkcm9wUG9zaXRpb246IHN0cmluZztcblx0XHR9PlxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0YXdhaXQgdGhpcy5fb25Ecm9wRG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQ29sbGFwc2VFeHBhbmROb2RlKHVpNUV2ZW50OiBVSTVFdmVudCwgZXhwYW5kOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmICh1aTVFdmVudC5nZXRTb3VyY2UoKS5nZXRNZXRhZGF0YSgpLmlzQShcInNhcC5tLk1lbnVJdGVtXCIpKSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHRhd2FpdCB0aGlzLl9vbkNvbGxhcHNlRXhwYW5kTm9kZSh1aTVFdmVudCwgZXhwYW5kKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBtZXRob2QgdG8gbW92ZSBhIHJvdyB1cCBvciBkb3duIGluIGEgVHJlZSB0YWJsZS5cblx0ICogQHBhcmFtIHVpNUV2ZW50XG5cdCAqIEBwYXJhbSBtb3ZlVXAgVHJ1ZSBmb3IgbW92ZSB1cCwgZmFsc2UgZm9yIG1vdmUgZG93blxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbk1vdmVVcERvd24odWk1RXZlbnQ6IFVJNUV2ZW50LCBtb3ZlVXA6IGJvb2xlYW4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHRhd2FpdCB0aGlzLl9vbk1vdmVVcERvd24odWk1RXZlbnQsIG1vdmVVcCwgZm9yQ29udGV4dE1lbnUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgZnJvbSB0aGUgdGFibGUuIFRoaXMgZnVuY3Rpb24gY29uc2lkZXJzIG9ubHkgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGFwcGxpZWQgYXQgdGhlIGNvbnRyb2wgbGV2ZWwuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aXRoIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRTZWxlY3Rpb25WYXJpYW50KCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5nZXRTZWxlY3Rpb25WYXJpYW50KHRoaXMuZ2V0Q29udGVudCgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byB0aGUgdGFibGUuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byBhcHBseSB0byB0aGUgdGFibGVcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgU2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5zZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKHRoaXMuZ2V0Q29udGVudCgpLCBzZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGNvbnN0IHByZXByb2Nlc3NvckNvbnRleHQgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dDtcblx0XHRpZiAob3duZXIgJiYgcHJlcHJvY2Vzc29yQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLm1ldGFQYXRoKSE7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gZGVlcENsb25lKHRoaXMub3JpZ2luYWxUYWJsZURlZmluaXRpb24pO1xuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSh0aGlzLmlnbm9yZWRGaWVsZHMsIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblx0XHRcdHRoaXMucHJvcGVydHlJbmZvcyA9IFtdOyAvLyBBcyB3ZSBoYXZlIGEgbmV3IHRhYmxlIGRlZmluaXRpb24sIHdlIGNsZWFuIHRoZSBjYWNoZWQgcHJvcGVydHlJbmZvcyB0byByZWNyZWF0ZSB0aGVtXG5cblx0XHRcdGNvbnN0IGNvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG1ldGFNb2RlbCk7XG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXNcblx0XHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdFx0fCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0Y29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0aGlzLCB7IGNvbGxlY3Rpb25FbnRpdHksIG1ldGFNb2RlbCB9KTtcblxuXHRcdFx0Y29uc3QgZnJhZ21lbnQgPSBhd2FpdCBYTUxQcmVwcm9jZXNzb3IucHJvY2Vzcyhcblx0XHRcdFx0cGFyc2VYTUxTdHJpbmcoXG5cdFx0XHRcdFx0eG1sYDxyb290XG5cdFx0XHR4bWxucz1cInNhcC5tXCJcblx0XHRcdHhtbG5zOm1kYz1cInNhcC51aS5tZGNcIlxuXHRcdFx0eG1sbnM6cGx1Z2lucz1cInNhcC5tLnBsdWdpbnNcIlxuXHRcdFx0eG1sbnM6bWRjVGFibGU9XCJzYXAudWkubWRjLnRhYmxlXCJcblx0XHRcdHhtbG5zOm1hY3JvVGFibGU9XCJzYXAuZmUubWFjcm9zLnRhYmxlXCJcblx0XHRcdHhtbG5zOm1kY2F0PVwic2FwLnVpLm1kYy5hY3Rpb250b29sYmFyXCJcblx0XHRcdHhtbG5zOmNvcmU9XCJzYXAudWkuY29yZVwiXG5cdFx0XHR4bWxuczpjb250cm9sPVwic2FwLmZlLmNvcmUuY29udHJvbHNcIlxuXHRcdFx0eG1sbnM6ZHQ9XCJzYXAudWkuZHRcIlxuXHRcdFx0eG1sbnM6Zmw9XCJzYXAudWkuZmxcIlxuXHRcdFx0eG1sbnM6dmFyaWFudD1cInNhcC51aS5mbC52YXJpYW50c1wiXG5cdFx0XHR4bWxuczpwMTNuPVwic2FwLnVpLm1kYy5wMTNuXCJcblx0XHRcdHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCI+JHtqc3gucmVuZGVyQXNYTUwoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gTWRjVGFibGVUZW1wbGF0ZS5nZXRNRENUYWJsZVRlbXBsYXRlKHRoaXMsIHtcblx0XHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogcHJlcHJvY2Vzc29yQ29udGV4dC5nZXRDb252ZXJ0ZWRNZXRhZGF0YSgpLFxuXHRcdFx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdFx0XHRtZXRhUGF0aFxuXHRcdFx0XHR9KTtcblx0XHRcdH0pfTwvcm9vdD5gLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KVswXSxcblx0XHRcdFx0eyBtb2RlbHM6IHt9IH0sXG5cdFx0XHRcdHByZXByb2Nlc3NvckNvbnRleHRcblx0XHRcdCk7XG5cdFx0XHRpZiAoZnJhZ21lbnQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcblx0XHRcdFx0Ly8gUmVtb3ZlIHRoZSBvbGQgTURDIHRhYmxlIGZyb20gdGhlIGxpc3Qgb2YgRmlsdGVyQmFyIGxpc3RlbmVyc1xuXHRcdFx0XHR0aGlzLmRldGFjaEZpbHRlckJhcigpO1xuXG5cdFx0XHRcdHRoaXMuY29udGVudD8uZGVzdHJveSgpO1xuXHRcdFx0XHRjb25zdCBjb250ZW50ID0gKGF3YWl0IEZyYWdtZW50LmxvYWQoe1xuXHRcdFx0XHRcdGRlZmluaXRpb246IGZyYWdtZW50LmZpcnN0RWxlbWVudENoaWxkLFxuXHRcdFx0XHRcdGNvbnRyb2xsZXI6IG93bmVyLmdldFJvb3RDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0Y29udGFpbmluZ1ZpZXc6IG93bmVyLmdldFJvb3RDb250cm9sKClcblx0XHRcdFx0fSkpIGFzIFRhYmxlO1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuXG5cdFx0XHRcdHRoaXMudXBkYXRlRmlsdGVyQmFyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvcGVydHkocHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogdW5rbm93biwgYlN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgcHJvcGVydHlWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIFtcImlnbm9yZWRGaWVsZHNcIiwgXCJtZXRhUGF0aFwiXS5pbmNsdWRlcyhwcm9wZXJ0eUtleSkpIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlLCB0cnVlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWUsIGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGRhdGEgbW9kZWwgYW5kIGNvbnZlcnRlZCB0YXJnZXQgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICogQHJldHVybnMgUmV0dXJucyBkYXRhIG1vZGVsIHBhdGggYW5kIGNvbnZlcnRlZCB0YXJnZXQgb2JqZWN0LlxuXHQgKi9cblxuXHRnZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBEYXRhTW9kZWxDb252ZXJzaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRhYmxlLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdGlmICghbWV0YU1vZGVsKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGVudGl0eVBhdGggPSB0YWJsZS5kYXRhKFwibWV0YVBhdGhcIik7XG5cdFx0Y29uc3QgdGFyZ2V0TWV0YVBhdGggPSB0aGlzLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKS5maW5kKChwcm9wZXJ0eUluZm8pID0+IHByb3BlcnR5SW5mby5uYW1lID09PSBwcm9wZXJ0eU5hbWUpXG5cdFx0XHQ/LmFubm90YXRpb25QYXRoO1xuXHRcdGNvbnN0IHRhcmdldE9iamVjdCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KHRhcmdldE1ldGFQYXRoISk7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gbWV0YU1vZGVsLmdldENvbnRleHQoZW50aXR5UGF0aCk7XG5cdFx0Y29uc3QgY29udmVydGVkdGFyZ2V0T2JqZWN0ID0gTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KHRhcmdldE9iamVjdCkgYXNcblx0XHRcdHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlc1xuXHRcdFx0fCBEYXRhUG9pbnRUeXBlVHlwZXM7XG5cdFx0bGV0IGRhdGFNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCBQcm9wZXJ0eT4oXG5cdFx0XHR0YXJnZXRPYmplY3QsXG5cdFx0XHRlbnRpdHlTZXRcblx0XHQpO1xuXHRcdGRhdGFNb2RlbFBhdGggPVxuXHRcdFx0RmllbGRUZW1wbGF0aW5nLmdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JWYWx1ZShcblx0XHRcdFx0ZGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXM+XG5cdFx0XHQpIHx8IGRhdGFNb2RlbFBhdGg7XG5cdFx0cmV0dXJuIHsgZGF0YU1vZGVsUGF0aDogZGF0YU1vZGVsUGF0aCwgY29udmVydGVkdGFyZ2V0T2JqZWN0OiBjb252ZXJ0ZWR0YXJnZXRPYmplY3QgfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGJpbmRpbmcgY29udGV4dCBmb3IgdGhlIGdpdmVuIE1vZGVBc0V4cHJlc3Npb24uXG5cdCAqIEBwYXJhbSBNb2RlQXNFeHByZXNzaW9uXG5cdCAqIEBwYXJhbSByb3dDb250ZXh0XG5cdCAqIEByZXR1cm5zXG5cdCAqL1xuXG5cdGNyZWF0ZUFueUNvbnRyb2woTW9kZUFzRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIHJvd0NvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQpOiB0eXBlb2YgQW55IHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGFueU9iamVjdCA9IG5ldyBBbnkoeyBhbnk6IE1vZGVBc0V4cHJlc3Npb24gfSk7XG5cdFx0YW55T2JqZWN0LnNldE1vZGVsKHJvd0NvbnRleHQ/LmdldE1vZGVsKCkpO1xuXHRcdGFueU9iamVjdC5zZXRNb2RlbCh0YWJsZS5nZXRNb2RlbChcInVpXCIpLCBcInVpXCIpO1xuXHRcdHJldHVybiBhbnlPYmplY3Q7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBlZGl0IG1vZGUgb2YgYSBQcm9wZXJ0eS5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHlcblx0ICogQHBhcmFtIHJvd0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHJvdyBjb250YWluaW5nIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcmV0dXJucyBUaGUgZWRpdCBtb2RlIG9mIHRoZSBmaWVsZFxuXHQgKi9cblxuXHRnZXRQcm9wZXJ0eUVkaXRNb2RlKHByb3BlcnR5TmFtZTogc3RyaW5nLCByb3dDb250ZXh0OiBDb250ZXh0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgYW55T2JqZWN0OiB0eXBlb2YgQW55IHwgdW5kZWZpbmVkO1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0eUVkaXRNb2RlQ2FjaGVbcHJvcGVydHlOYW1lXSkge1xuXHRcdFx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZSk/LmRhdGFNb2RlbFBhdGg7XG5cdFx0XHRjb25zdCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QgPSB0aGlzLmdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWUpPy5jb252ZXJ0ZWR0YXJnZXRPYmplY3Q7XG5cdFx0XHRpZiAoZGF0YU1vZGVsUGF0aCAmJiBjb252ZXJ0ZWR0YXJnZXRPYmplY3QpIHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlGb3JGaWVsZENvbnRyb2wgPSAoZGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0IGFzIHVua25vd24gYXMgRGF0YUZpZWxkVHlwZXMpPy5WYWx1ZVxuXHRcdFx0XHRcdD8gKGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdCBhcyB1bmtub3duIGFzIERhdGFGaWVsZFR5cGVzKS5WYWx1ZVxuXHRcdFx0XHRcdDogZGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRjb25zdCBlZGl0TW9kZUFzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFVJRm9ybWF0dGVycy5nZXRFZGl0TW9kZShwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCwgZGF0YU1vZGVsUGF0aCwgZmFsc2UsIHRydWUsIGNvbnZlcnRlZHRhcmdldE9iamVjdClcblx0XHRcdFx0KTtcblx0XHRcdFx0YW55T2JqZWN0ID0gdGhpcy5jcmVhdGVBbnlDb250cm9sKGVkaXRNb2RlQXNFeHByZXNzaW9uLCByb3dDb250ZXh0KTtcblx0XHRcdFx0dGhpcy5wcm9wZXJ0eUVkaXRNb2RlQ2FjaGVbcHJvcGVydHlOYW1lXSA9IGFueU9iamVjdDtcblx0XHRcdFx0YW55T2JqZWN0LnNldEJpbmRpbmdDb250ZXh0KG51bGwpOyAvLyB3ZSBuZWVkIHRvIHNldCB0aGUgYmluZGluZyBjb250ZXh0IHRvIG51bGwgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgYWRkRGVwZW5kZW50IHdpbGwgc2V0IGl0IHRvIHRoZSBjb250ZXh0IG9mIHRoZSB0YWJsZVxuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudChhbnlPYmplY3QpOyAvLyB0byBkZXN0cm95IGl0IHdoZW4gdGhlIHRhYmxlQVBJIGlzIGRlc3Ryb3llZFxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbnlPYmplY3QgPSB0aGlzLnByb3BlcnR5RWRpdE1vZGVDYWNoZVtwcm9wZXJ0eU5hbWVdO1xuXHRcdH1cblx0XHRhbnlPYmplY3Q/LnNldEJpbmRpbmdDb250ZXh0KHJvd0NvbnRleHQpO1xuXHRcdGNvbnN0IGVkaXRNb2RlID0gYW55T2JqZWN0Py5nZXRBbnkoKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0YW55T2JqZWN0Py5zZXRCaW5kaW5nQ29udGV4dChudWxsKTtcblx0XHRyZXR1cm4gZWRpdE1vZGU7XG5cdH1cblxuXHQvKipcblx0ICogU2hvdyB0aGUgY29sdW1ucyB3aXRoIHRoZSBnaXZlbiBjb2x1bW4ga2V5cyBieSBzZXR0aW5nIHRoZWlyIGF2YWlsYWJpbGl0eSB0byBEZWZhdWx0LlxuXHQgKiBAcGFyYW0gY29sdW1uS2V5cyBUaGUga2V5cyBmb3IgdGhlIGNvbHVtbnMgdG8gc2hvd1xuXHQgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKi9cblx0YXN5bmMgc2hvd0NvbHVtbnMoY29sdW1uS2V5czogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRmb3IgKGNvbnN0IGNvbHVtbktleSBvZiBjb2x1bW5LZXlzKSB7XG5cdFx0XHR0aGlzLm1vZGlmeUR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uKGNvbHVtbktleSwgdHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogSGlkZSB0aGUgY29sdW1ucyB3aXRoIHRoZSBnaXZlbiBjb2x1bW4ga2V5cyBieSBzZXR0aW5nIHRoZWlyIGF2YWlsYWJpbGl0eSB0byBEZWZhdWx0LlxuXHQgKiBAcGFyYW0gY29sdW1uS2V5cyBUaGUga2V5cyBmb3IgdGhlIGNvbHVtbnMgdG8gaGlkZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKi9cblx0YXN5bmMgaGlkZUNvbHVtbnMoY29sdW1uS2V5czogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRmb3IgKGNvbnN0IGNvbHVtbktleSBvZiBjb2x1bW5LZXlzKSB7XG5cdFx0XHR0aGlzLm1vZGlmeUR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uKGNvbHVtbktleSwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZ25vcmVkRmllbGRzIFRoZSBmaWVsZHMgdG8gaWdub3JlXG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGlzIGluIG9yZGVyIHRvIGFsbG93IG1ldGhvZCBjaGFpbmluZ1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldElnbm9yZWRGaWVsZHMoaWdub3JlZEZpZWxkczogc3RyaW5nKTogdGhpcyB7XG5cdFx0cmV0dXJuIHRoaXMuc2V0UHJvcGVydHkoXCJpZ25vcmVkRmllbGRzXCIsIGlnbm9yZWRGaWVsZHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBpZ25vcmVkRmllbGRzIHByb3BlcnR5XG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTI0LjBcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0SWdub3JlZEZpZWxkcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldFByb3BlcnR5KFwiaWdub3JlZEZpZWxkc1wiKSA/PyB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIHN0YXRlIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250cm9sIHN0YXRlIGtleS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHJldHVybnMgLSBUaGUgZnVsbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHN0YXRlIGlmIGF2YWlsYWJsZS5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZnVsbFN0YXRlOiBjb250cm9sU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IGluaXRpYWxDb250cm9sU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGtleSB0byBiZSB1c2VkIGZvciBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIGNvbnRyb2wgdG8gZ2V0IHN0YXRlIGtleSBmb3Jcblx0ICogQHJldHVybnMgVGhlIGtleSB0byBiZSB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250cm9scyBzdGF0ZVxuXHQgKi9cblx0Z2V0U3RhdGVLZXkob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMuY29udGVudCk/LmdldExvY2FsSWQob0NvbnRyb2wuZ2V0SWQoKSkgfHwgb0NvbnRyb2wuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBkZWZpbml0aW9uIHdpdGggaWdub3JlZEZpZWxkcyBhbmQgZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zLlxuXHQgKiBAcGFyYW0gaWdub3JlZEZpZWxkc1xuXHQgKiBAcGFyYW0gZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zXG5cdCAqIEBwYXJhbSB0YWJsZURlZmluaXRpb25cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkoXG5cdFx0aWdub3JlZEZpZWxkczogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uczogRHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5bXSxcblx0XHR0YWJsZURlZmluaXRpb246IFRhYmxlVmlzdWFsaXphdGlvblxuXHQpOiB2b2lkIHtcblx0XHRDb2x1bW5NYW5hZ2VtZW50LnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljKGlnbm9yZWRGaWVsZHMsIGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucywgdGFibGVEZWZpbml0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBNREMgdGFibGUuXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgZm9yd2FyZGluZyBhZ2dyZWdhdGlvbiB0byBnZXQgdGhlIHRhcmdldCBvZiB0aGUgYWdncmVnYXRpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIFRoZSBtZGMgdGFibGVcblx0ICovXG5cdGdldE1EQ1RhYmxlKCk6IE1EQ1RhYmxlIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxlZCBieSB0aGUgTURDIHN0YXRlIHV0aWwgd2hlbiB0aGUgc3RhdGUgZm9yIHRoaXMgY29udHJvbCdzIGNoaWxkIGhhcyBjaGFuZ2VkLlxuXHQgKi9cblx0aGFuZGxlU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxzIHRoZSBhc3luY0NhbGwgZnVuY3Rpb24gb25seSBpZiB0aGUgbG9ja05hbWUgaXMgbm90IGFscmVhZHkgbG9ja2VkLlxuXHQgKiBAcGFyYW0gYXN5bmNDYWxsXG5cdCAqIEBwYXJhbSBsb2NrTmFtZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG5cdCAqL1xuXHRhc3luYyBhdm9pZFBhcmFsbGVsQ2FsbHMoYXN5bmNDYWxsOiBGdW5jdGlvbiwgbG9ja05hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmxvY2tbbG9ja05hbWVdKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSB0cnVlO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCBhc3luY0NhbGwoKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSBmYWxzZTtcblx0XHR9XG5cdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IGZhbHNlO1xuXHR9XG5cblx0ZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0Ly8gV2UgcmVsZWFzZSBob2xkIG9uIG1lc3NhZ2VIYW5kbGVyIGJ5IHRoZSBjb250cm9sIGlmIHRoZXJlIGlzIG9uZS5cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/Lm1lc3NhZ2VIYW5kbGVyPy5yZWxlYXNlSG9sZEJ5Q29udHJvbCh0aGlzKTtcblx0XHRzdXBlci5kZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdH1cblxuXHRwcml2YXRlIGZ1bGxTY3JlZW5EaWFsb2c/OiBEaWFsb2c7IC8vIFRoZSBkaWFsb2cgdXNlZCB0byBkaXNwbGF5IHRoZSB0YWJsZSBpbiBmdWxsIHNjcmVlbiBtb2RlXG5cblx0c2V0RnVsbFNjcmVlbkRpYWxvZyhkaWFsb2c6IERpYWxvZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZyA9IGRpYWxvZztcblx0fVxuXG5cdHByaXZhdGUgZW5oYW5jZWRQcm9wZXJ0eUluZm9zOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHRwcml2YXRlIHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdID0gW107XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEBwYXJhbSBlbmhhbmNlZFByb3BlcnR5SW5mb3Ncblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoZW5oYW5jZWRQcm9wZXJ0eUluZm9zOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcyA9IGVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmZXRjaGVkIHByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGUgY29udGFpbmluZyBpbnRlcm5hbCBwcm9wZXJ0aWVzLlxuXHQgKiBAcmV0dXJucyBUaGUgUHJvcGVydHlJbmZvIGVuaGFuY2VkIHdpdGggdGhlIFByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTogRW5oYW5jZWRGRVByb3BlcnR5SW5mb1tdIHtcblx0XHRyZXR1cm4gdGhpcy5lbmhhbmNlZFByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgTURDIGV4cGVjdGVkIHByb3BlcnR5SW5mb3MgZnJvbSB0aGUgdGFibGUgZGVsZWdhdGUgY29udGFpbmluZyBpbnRlcm5hbCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm9cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldFByb3BlcnR5SW5mb3MoKTogUHJvcGVydHlJbmZvW10ge1xuXHRcdGNvbnN0IHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBlbmhhbmNlZFByb3BlcnR5SW5mbyBvZiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcyBhcyBQcm9wZXJ0eUluZm9bXSkge1xuXHRcdFx0bGV0IHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRrZXk6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmtleSxcblx0XHRcdFx0bGFiZWw6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmxhYmVsLFxuXHRcdFx0XHR2aXNpYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby52aXNpYmxlLFxuXHRcdFx0XHRleHBvcnRTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXhwb3J0U2V0dGluZ3MsXG5cdFx0XHRcdGNsaXBib2FyZFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jbGlwYm9hcmRTZXR0aW5ncyxcblx0XHRcdFx0dmlzdWFsU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc3VhbFNldHRpbmdzLFxuXHRcdFx0XHR0b29sdGlwOiBlbmhhbmNlZFByb3BlcnR5SW5mby50b29sdGlwLFxuXHRcdFx0XHRpc0tleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uaXNLZXlcblx0XHRcdH07XG5cblx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvczogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucHJvcGVydHlJbmZvc1xuXHRcdFx0XHR9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IGV4dGVuc2lvbjogUHJvcGVydHlJbmZvW1wiZXh0ZW5zaW9uXCJdO1xuXHRcdFx0XHRpZiAoZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uKSB7XG5cdFx0XHRcdFx0ZXh0ZW5zaW9uID0ge1xuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlHcm91cGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUdyb3VwYWJsZSxcblx0XHRcdFx0XHRcdHRlY2huaWNhbGx5QWdncmVnYXRhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24udGVjaG5pY2FsbHlBZ2dyZWdhdGFibGUsXG5cdFx0XHRcdFx0XHRjdXN0b21BZ2dyZWdhdGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi5jdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRcdFx0XHRhZGRpdGlvbmFsUHJvcGVydGllczogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRleHRlbnNpb24gPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZXh0ZW5zaW9uKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdFx0Li4ucHJvcGVydHlJbmZvLFxuXHRcdFx0XHRcdHBhdGg6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnBhdGgsXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9uczogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubWF4Q29uZGl0aW9ucyxcblx0XHRcdFx0XHRmb3JtYXRPcHRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5mb3JtYXRPcHRpb25zLFxuXHRcdFx0XHRcdGNvbnN0cmFpbnRzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jb25zdHJhaW50cyxcblx0XHRcdFx0XHRncm91cDogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXAsXG5cdFx0XHRcdFx0Z3JvdXBMYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXBMYWJlbCxcblx0XHRcdFx0XHRjYXNlU2Vuc2l0aXZlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5jYXNlU2Vuc2l0aXZlLFxuXHRcdFx0XHRcdGZpbHRlcmFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZpbHRlcmFibGUsXG5cdFx0XHRcdFx0c29ydGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnNvcnRhYmxlLFxuXHRcdFx0XHRcdGdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZ3JvdXBhYmxlLFxuXHRcdFx0XHRcdGRhdGFUeXBlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5kYXRhVHlwZSxcblx0XHRcdFx0XHRhZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHR1bml0OiBlbmhhbmNlZFByb3BlcnR5SW5mby51bml0LFxuXHRcdFx0XHRcdHRleHQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRleHQsXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRwcm9wZXJ0eUluZm9zLnB1c2goXG5cdFx0XHRcdE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhwcm9wZXJ0eUluZm8pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpIGFzIFByb3BlcnR5SW5mb1xuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHRzZXRDYWNoZWRQcm9wZXJ0eUluZm9zKHByb3BlcnR5SW5mb3M6IFByb3BlcnR5SW5mb1tdKTogdm9pZCB7XG5cdFx0dGhpcy5wcm9wZXJ0eUluZm9zID0gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdGdldENhY2hlZFByb3BlcnR5SW5mb3MoKTogUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLnByb3BlcnR5SW5mb3M7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGF0aCBmb3IgdGhlIHRhYmxlIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBwYXRoXG5cdCAqL1xuXHRnZXRSb3dDb2xsZWN0aW9uUGF0aCgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2xsZXIuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb2xsZWN0aW9uQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKGNvbGxlY3Rpb25Db250ZXh0ISwgY29udGV4dFBhdGgpO1xuXHRcdHJldHVybiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGRhdGFNb2RlbFBhdGgpIHx8IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYmluZGluZyBpbmZvIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbGlzdCBiaW5kaW5nIGZvciB0aGUgTURDIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgdGFibGUgYmluZGluZyBpbmZvXG5cdCAqL1xuXHRnZXRUYWJsZVRlbXBsYXRlQmluZGluZ0luZm8oKTogU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbyB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSE7XG5cdFx0Y29uc3QgcGF0aCA9IHRoaXMuZ2V0Um93Q29sbGVjdGlvblBhdGgoKTtcblx0XHRjb25zdCByb3dCaW5kaW5nSW5mbzogU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbyA9IHtcblx0XHRcdHN1c3BlbmRlZDogZmFsc2UsXG5cdFx0XHRwYXRoLFxuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHQkY291bnQ6IHRydWVcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmVuYWJsZSRzZWxlY3QpIHtcblx0XHRcdC8vIERvbid0IGFkZCAkc2VsZWN0IHBhcmFtZXRlciBpbiBjYXNlIG9mIGFuIGFuYWx5dGljYWwgcXVlcnksIHRoaXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoZSBtb2RlbFxuXHRcdFx0Y29uc3Qgc2VsZWN0ID0gT2JqZWN0LmtleXModGhpcy50YWJsZURlZmluaXRpb24ucmVxdWVzdEF0TGVhc3QpLmpvaW4oXCIsXCIpO1xuXHRcdFx0aWYgKHNlbGVjdCkge1xuXHRcdFx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kc2VsZWN0ID0gc2VsZWN0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5lbmFibGUkJGdldEtlZXBBbGl2ZUNvbnRleHQpIHtcblx0XHRcdC8vIHdlIGxhdGVyIGVuc3VyZSBpbiB0aGUgZGVsZWdhdGUgb25seSBvbmUgbGlzdCBiaW5kaW5nIGZvciBhIGdpdmVuIHRhcmdldENvbGxlY3Rpb25QYXRoIGhhcyB0aGUgZmxhZyAkJGdldEtlZXBBbGl2ZUNvbnRleHRcblx0XHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ2V0S2VlcEFsaXZlQ29udGV4dCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgYSBzZWFyY2gvZmlsdGVyXG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyID0gdHJ1ZTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ3JvdXBJZCA9IFwiJGF1dG8uV29ya2Vyc1wiO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkdXBkYXRlR3JvdXBJZCA9IFwiJGF1dG9cIjtcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJG93blJlcXVlc3QgPSB0cnVlO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMgPSB0cnVlO1xuXG5cdFx0Ly8gRXZlbnQgaGFuZGxlcnNcblx0XHRjb25zdCBlZGl0Rmxvd0V4dGVuc2lvbiA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0Y29uc3QgZXZlbnRIYW5kbGVyczogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaENvbXBsZXRlZCA9IHRoaXMub25JbnRlcm5hbFBhdGNoQ29tcGxldGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5kYXRhUmVjZWl2ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmRhdGFSZXF1ZXN0ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jaGFuZ2UgPSB0aGlzLm9uTGlzdEJpbmRpbmdDaGFuZ2UuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNyZWF0ZUFjdGl2YXRlID0gdGhpcy5oYW5kbGVDcmVhdGVBY3RpdmF0ZS5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY3JlYXRlU2VudCA9IGVkaXRGbG93RXh0ZW5zaW9uLmhhbmRsZUNyZWF0ZVNlbnQuYmluZChlZGl0Rmxvd0V4dGVuc2lvbik7XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaFNlbnQgPSB0aGlzLm9uSW50ZXJuYWxQYXRjaFNlbnQuYmluZCh0aGlzKTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLmV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7XG5cblx0XHRyZXR1cm4gcm93QmluZGluZ0luZm87XG5cdH1cblxuXHRwcm90ZWN0ZWQgc3RhdGljIGFkZFNldHRpbmcodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBtYW5pZmVzdC1mcmllbmRseSBzZXR0aW5ncyBmcm9tIHRhYmxlQVBJIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFNldHRpbmdzXG5cdCAqL1xuXHRnZXRTZXR0aW5nc0Zvck1hbmlmZXN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCB0YWJsZVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0RmlsZU5hbWVcIiwgdGhpcy5leHBvcnRGaWxlTmFtZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFNoZWV0TmFtZVwiLCB0aGlzLmV4cG9ydFNoZWV0TmFtZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29sdW1uRnJlZXplXCIsIHRoaXMuZGlzYWJsZUNvbHVtbkZyZWV6ZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIsIHRoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudFwiLCB0aGlzLnJvd0NvdW50KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRnVsbFNjcmVlblwiLCB0aGlzLmVuYWJsZUZ1bGxTY3JlZW4pO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0ZVwiLCB0aGlzLmVuYWJsZVBhc3RlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzY3JvbGxUaHJlc2hvbGRcIiwgdGhpcy5zY3JvbGxUaHJlc2hvbGQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ0aHJlc2hvbGRcIiwgdGhpcy50aHJlc2hvbGQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTW9kZVwiLCB0aGlzLnNlbGVjdGlvbk1vZGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ0eXBlXCIsIHRoaXMudHlwZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdEFsbFwiLCB0aGlzLmVuYWJsZVNlbGVjdEFsbCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTGltaXRcIiwgdGhpcy5zZWxlY3Rpb25MaW1pdCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCIsIHRoaXMuY29uZGVuc2VkVGFibGVMYXlvdXQpO1xuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJuYW1lXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRpb25GaWVsZHNcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRpb25GaWVsZHMpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5pbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm91dGJvdW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm91dGJvdW5kKTtcblx0XHRcdGlmIChPYmplY3QuZW50cmllcyhjcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImNyZWF0aW9uTW9kZVwiXSA9IGNyZWF0aW9uTW9kZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5tYXNzRWRpdCkge1xuXHRcdFx0Y29uc3QgZW5hYmxlTWFzc0VkaXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImZyb21JbmxpbmVcIiwgdHJ1ZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcInZpc2libGVGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC52aXNpYmxlRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiLCB0aGlzLm1hc3NFZGl0Lm9wZXJhdGlvbkdyb3VwaW5nTW9kZSk7XG5cdFx0XHR0YWJsZVNldHRpbmdzW1wiZW5hYmxlTWFzc0VkaXRcIl0gPSBlbmFibGVNYXNzRWRpdDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbj8uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGFuYWx5dGljYWxDb25maWd1cmF0aW9uLCBcImFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWxcIiwgdGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsKTtcblx0XHRcdGlmIChPYmplY3QuZW50cmllcyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbikubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIl0gPSBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24/LnBhdGhzPy5sZW5ndGgpIHtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucGF0aHMubWFwKChwYXRoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgYW5ub3RhdGlvblBhdGg6IHBhdGggfTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHNob3dDb3VudHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnNob3dDb3VudHNcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmQgYW4gYWN0aW9uIGZyb20gaXRzIGtleS5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aW9uIGlmIGl0IGNhbiBiZSBmb3VuZCAob3IgdW5kZWZpbmVkKVxuXHQgKi9cblx0ZmluZFNsb3RBY3Rpb25Gcm9tS2V5KGtleTogc3RyaW5nKTogQWN0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgcmVzdWx0OiBBY3Rpb24gfCB1bmRlZmluZWQ7XG5cblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMgPz8gW10pIHtcblx0XHRcdGlmIChcblx0XHRcdFx0YWN0aW9uLmlzQTxBY3Rpb25Hcm91cD4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIpIHx8XG5cdFx0XHRcdGFjdGlvbi5pc0E8QWN0aW9uR3JvdXBPdmVycmlkZT4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwT3ZlcnJpZGVcIilcblx0XHRcdCkge1xuXHRcdFx0XHRyZXN1bHQgPz89IGFjdGlvbi5hY3Rpb25zLmZpbmQoKGEpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYS5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpICYmIGEua2V5ID09PSBrZXk7XG5cdFx0XHRcdH0pIGFzIEFjdGlvbiB8IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikgJiYgYWN0aW9uLmtleSA9PT0ga2V5KSB7XG5cdFx0XHRcdHJlc3VsdCA9IGFjdGlvbjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0dGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHRnZXRGdWxsTWV0YVBhdGgoKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5tZXRhUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMubWV0YVBhdGg7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNvbnRleHRQYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuY29udGV4dFBhdGh9JHt0aGlzLm1ldGFQYXRofWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLmNvbnRleHRQYXRofS8ke3RoaXMubWV0YVBhdGh9YDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZUNvbnRlbnQoZm9yY2VDcmVhdGlvbiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmICghb3duZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmNvbnRleHRQYXRoID8/PSB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgZnVsbE1ldGFQYXRoID0gdGhpcy5nZXRGdWxsTWV0YVBhdGgoKTtcblx0XHRpZiAoIXRoaXMuY29udGVudCB8fCBmb3JjZUNyZWF0aW9uKSB7XG5cdFx0XHR0aGlzLmRldGFjaEZpbHRlckJhcigpO1xuXHRcdFx0dGhpcy5jb250ZW50Py5kZXN0cm95KCk7XG5cblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGhDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGZ1bGxNZXRhUGF0aCkhO1xuXG5cdFx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0aGlzKTtcblx0XHRcdC8vIFNldCBEZWZhdWx0IHZhbHVlcyBmb3IgcHJvcGVydGllcyBiYXNlZCBvbiB0YWJsZSBkZWZpbml0aW9uXG5cdFx0XHR0aGlzLnRocmVzaG9sZCA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQ7XG5cdFx0XHR0aGlzLnVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk7XG5cblx0XHRcdC8vIGRlZmF1bHQgY3JlYXRpb24gbW9kZVxuXHRcdFx0dGhpcy5jcmVhdGlvbk1vZGUgPz89IG5ldyBUYWJsZUNyZWF0aW9uT3B0aW9ucyh7XG5cdFx0XHRcdG5hbWU6IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlLm1vZGUgYXMgVGFibGVDcmVhdGlvbk9wdGlvbnNbXCJuYW1lXCJdLFxuXHRcdFx0XHRjcmVhdGVBdEVuZDogKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlIGFzIENyZWF0ZUJlaGF2aW9yKS5hcHBlbmRcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgdGhpcy50YWJsZURlZmluaXRpb24pO1xuXG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb250ZXh0T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcy5yZXNvbHZlUGF0aCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pXG5cdFx0XHRcdC50YXJnZXQgYXMgRW50aXR5U2V0IHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IChjb2xsZWN0aW9uRW50aXR5IGFzIEVudGl0eVNldCk/LmVudGl0eVR5cGUgPz8gKGNvbGxlY3Rpb25FbnRpdHkgYXMgTmF2aWdhdGlvblByb3BlcnR5KT8udGFyZ2V0VHlwZTtcblx0XHRcdHRoaXMuZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSA9IGVudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZTtcblxuXHRcdFx0Y29uc3QgaGFuZGxlclByb3ZpZGVyID0gbmV3IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIodGhpcywgeyBtZXRhTW9kZWwsIGNvbGxlY3Rpb25FbnRpdHkgfSwgdGhpcyk7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZU1EQ1RhYmxlKHtcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdFx0bWV0YVBhdGg6IG1ldGFQYXRoQ29udGV4dCxcblx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0VHlwZXMobWV0YU1vZGVsKSxcblx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRtZXRhTW9kZWxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZUZpbHRlckJhcigpO1xuXHRcdHRoaXMuc2V0dXBPcHRpbWlzdGljQmF0Y2goKTtcblx0XHR0aGlzLnNldFVwTm9EYXRhSW5mb3JtYXRpb24oKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnNldE1ldGFQYXRoKGZ1bGxNZXRhUGF0aCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZU1EQ1RhYmxlKHBhcmFtZXRlcnM6IE1kY1RhYmxlVGVtcGxhdGUuVGFibGVUZW1wbGF0aW5nUGFyYW1ldGVycyk6IE1EQ1RhYmxlIHtcblx0XHRyZXR1cm4gTWRjVGFibGVUZW1wbGF0ZS5nZXRNRENUYWJsZVRlbXBsYXRlKHRoaXMsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVQcm9wZXJ0aWVzRnJvbVRhYmxlRGVmaW5pdGlvbigpOiB2b2lkIHtcblx0XHQvLyBJRCBmb3IgdGhlIGludGVybmFsIE1EQyB0YWJsZVxuXHRcdGlmIChNYW5hZ2VkT2JqZWN0TWV0YWRhdGEuaXNHZW5lcmF0ZWRJZCh0aGlzLmdldElkKCkpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jb250ZW50SWQgPz89IGAke3RoaXMuZ2V0SWQoKX0tY29udGVudGA7XG5cdFx0fVxuXG5cdFx0Ly8gQmFzaWMgc2VhcmNoIGZpZWxkIGlmIG5vIGZpbHRlciBiYXIgaXMgcHJvdmlkZWRcblx0XHRpZiAodGhpcy51c2VCYXNpY1NlYXJjaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJZiBubyBmaWx0ZXJiYXIgaXMgcHJvdmlkZWQsIHVzZSB0aGUgYmFzaWMgc2VhcmNoIGZpZWxkXG5cdFx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyKSB7XG5cdFx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0XHR0aGlzLnVzZUJhc2ljU2VhcmNoID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZWFkLW9ubHkgbW9kZVxuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIEVuYWJsZSBlbXB0eSByb3dzXG5cdFx0aWYgKHRoaXMuZW1wdHlSb3dzRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBlbmFibGVkID1cblx0XHRcdFx0dGhpcy5jcmVhdGlvbk1vZGU/Lm5hbWUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3Ncblx0XHRcdFx0XHQ/IHRoaXMudGFibGVEZWZpbml0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4gYS5rZXkgPT09IFN0YW5kYXJkQWN0aW9uS2V5cy5DcmVhdGUpPy5lbmFibGVkXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoZW5hYmxlZCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWQgIT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZW1wdHlSb3dzRW5hYmxlZFwiLCBlbmFibGVkKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXROb0RhdGFNZXNzYWdlTW9kZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1vZGUgPSB0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gXCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiO1xuXHRcdHJldHVybiBtb2RlID09PSBcInRleHRcIiA/IFwidGV4dFwiIDogbW9kZS5zcGxpdChcIi1cIilbMV07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmcgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgdGhlIHJvdyBiaW5kaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldENvdW50KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um93QmluZGluZygpPy5nZXRDb3VudCgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQVBJO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWRBLElBeUJNQSxRQUFRLElBQUFDLElBQUEsR0FUYkMsY0FBYyxDQUFDLDhCQUE4QixFQUFFO0lBQUVDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QjtFQUFFLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQzNGQyxLQUFLLENBQUNDLG9CQUFvQixDQUFDLEVBQUFDLEtBQUEsR0FDM0JGLEtBQUssQ0FBQ0csV0FBVyxDQUFDLEVBQUFDLEtBQUEsR0FDbEJKLEtBQUssQ0FBQ0ssb0JBQW9CLENBQUMsRUFBQUMsS0FBQSxHQUMzQk4sS0FBSyxDQUFDTyxjQUFjLENBQUMsRUFBQUMsS0FBQSxHQUNyQlIsS0FBSyxDQUFDUyxnQkFBZ0IsQ0FBQyxFQUFBQyxLQUFBLEdBQ3ZCVixLQUFLLENBQUNXLGtCQUFrQixDQUFDLEVBQUFDLEtBQUEsR0FDekJaLEtBQUssQ0FBQ2EsWUFBWSxDQUFDLEVBQUFDLEtBQUEsR0FDbkJkLEtBQUssQ0FBQ2UsZ0JBQWdCLENBQUMsRUFBQUMsTUFBQSxHQXVCdEJDLGtCQUFrQixDQUFDLGtDQUFrQyxDQUFDLEVBQUFDLE1BQUEsR0F1R3RERCxrQkFBa0IsQ0FBQywwREFBMEQs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