@sapui5/sap.fe.macros 1.141.1 → 1.142.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 (217) 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 +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  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/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -169,15 +169,20 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
169
169
  _initializerDefineProperty(_this, "isAnalytics", _descriptor18, _this);
170
170
  return _this;
171
171
  }
172
+ _exports = MicroChart;
173
+ _inheritsLoose(MicroChart, _BuildingBlock);
174
+ var _proto = MicroChart.prototype;
175
+ _proto.applySettings = function applySettings(mSettings, oScope) {
176
+ this._doNotCreateOnNullContext = true;
177
+ this._visibilityCheck = true;
178
+ return _BuildingBlock.prototype.applySettings.call(this, mSettings, oScope);
179
+ }
172
180
 
173
181
  /**
174
182
  * Gets the sortOrder for the microChart as mentioned in the PresentationVariant.
175
183
  * @param sortingProps Sorters from PresentationVariant.
176
184
  * @returns SortOrder
177
- */
178
- _exports = MicroChart;
179
- _inheritsLoose(MicroChart, _BuildingBlock);
180
- var _proto = MicroChart.prototype;
185
+ */;
181
186
  _proto.getSortOrder = function getSortOrder(sortingProps) {
182
187
  return sortingProps.map(sortingProp => {
183
188
  return {
@@ -215,7 +220,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
215
220
  *
216
221
  * Clone is a UI5 core Control method, which is not async and is called in a sync manner throughout UI5.
217
222
  * Hence we need to create the chart in a fire and forget fashion.
218
- *
219
223
  * @param idSuffix A suffix to be appended to the cloned element id
220
224
  * @param localIds An array of local IDs within the cloned hierarchy (internally used)
221
225
  * @returns The reference to the newly create clone
@@ -595,4 +599,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
595
599
  _exports = MicroChart;
596
600
  return _exports;
597
601
  }, false);
598
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsImV2ZW50IiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwic2V0dGluZ3MiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFNvcnRPcmRlciIsInNvcnRpbmdQcm9wcyIsIm1hcCIsInNvcnRpbmdQcm9wIiwiUHJvcGVydHkiLCJ2YWx1ZSIsIkRlc2NlbmRpbmciLCJmdWxseVF1YWxpZmllZE5hbWUiLCIkVHlwZSIsInNldFByb3BlcnR5Iiwia2V5Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJjb250ZW50IiwiZGVzdHJveSIsImNyZWF0ZUNvbnRlbnQiLCJjcmVhdGVNaWNyb0NoYXJ0IiwiY2xvbmUiLCJpZFN1ZmZpeCIsImxvY2FsSWRzIiwiY2xvbmVkTWljcm9DaGFydCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsInRhcmdldE9iamVjdCIsInRlcm0iLCJTb3J0T3JkZXIiLCJsZW5ndGgiLCJfc29ydE9yZGVyIiwiVmlzdWFsaXphdGlvbnMiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsIl9jaGFydFRhcmdldCIsIl9tZWFzdXJlRGF0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIk1lYXN1cmVzIiwiTWljcm9DaGFydEhlbHBlciIsInNob3VsZFJlbmRlck1pY3JvQ2hhcnQiLCJfZGF0YVBvaW50IiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCIkdGFyZ2V0IiwiX3RhcmdldE5hdmlnYXRpb25QYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzaG93T25seUNoYXJ0IiwibG9nV2FybmluZyIsImNoYXJ0TWFwIiwidHlwZTEiLCJDaGFydFR5cGUiLCJDaGFydENvbXBvbmVudCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwibWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJpc0FuYWx5dGljcyIsImdldEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJfanN4IiwiZ2V0TWljcm9DaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImVycm9yT2JqZWN0IiwiVmFsdWUiLCJtaWNyb0NoYXJ0UHJvcGVydGllcyIsInNpemUiLCJoaWRlT25Ob0RhdGEiLCJkYXRhUG9pbnRQYXRoIiwiZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0IiwiZ2V0T2JqZWN0IiwiRGltZW5zaW9ucyIsImdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0UmFkaWFsTWljcm9DaGFydFByb3BlcnRpZXMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyIsImJhcnMiLCJjb2x1bW5zIiwibWF4VmFsdWUiLCJNYXhpbXVtVmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbnN0YW50IiwidmFsdWVPZiIsIm1pblZhbHVlIiwiTWluaW11bVZhbHVlIiwiY29sb3JQYWxldHRlIiwiZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydCIsImRhdGEiLCJzaG93VGhyZXNob2xkTGluZSIsImNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJDcml0aWNhbGl0eSIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IiwiZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldFN0YWNrTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEhhcnZleU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zIiwiY3JlYXRlTWljcm9DaGFydElkIiwiY2hhcnRUeXBlIiwiY2hhcnRJRFByZWZpeCIsImNyZWF0ZUlkIiwiZ2V0TWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcyIsImNoYXJ0VGl0bGUiLCJ0aXRsZSIsIlRpdGxlIiwiY2hhcnREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJfYmluZGluZyIsImdldEJpbmRpbmdFeHByZXNzaW9uRm9yTWljcm9jaGFydCIsInVvbVBhdGgiLCJnZXRVT01QYXRoRm9yTWljcm9jaGFydCIsImlkIiwiY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSIsInZpc2libGUiLCJub3QiLCJpZkVsc2UiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiZGF0YVBvaW50UXVhbGlmaWVycyIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0IiwibWVhc3VyZXMiLCJuYW1lIiwiZ2V0TWVhc3VyZVByb3BlcnR5UGF0aHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzIiwiZGltZW5zaW9uRGF0YVBhdGgiLCJkaW1lbnNpb24iLCJDb21tb24iLCJUZXh0IiwicGF0aCIsIm1lYXN1cmVQcmVjaXNpb24iLCJwcmVjaXNpb24iLCJtZWFzdXJlU2NhbGUiLCJnZXRNZWFzdXJlU2NhbGVGb3JNaWNyb0NoYXJ0IiwiZGltZW5zaW9uUHJlY2lzaW9uIiwiY2FsZW5kYXJQYXR0ZXJuIiwiZ2V0Q2FsZW5kYXJQYXR0ZXJuIiwiY3JlYXRlVGl0bGUiLCJ0aXRsZVRleHQiLCJsb2NhbExlZ2FjeVRpdGxlSWQiLCJJRCIsImdlbmVyYXRlIiwicXVhbGlmaWVyIiwidmlld0lkIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiZ2V0SWQiLCJsZWdhY3lUaXRsZUlkIiwidGl0bGVMaW5rUHJvcGVydGllcyIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibmF2aWdhdGlvblR5cGUiLCJhcmlhVHJhbnNsYXRlZFRleHQiLCJnZXRUZXh0Iiwic2hvd0FzTGluayIsImxpbmtBcmlhVGV4dCIsInNob3dMaW5rIiwiQ29tbW9uSGVscGVyIiwiZ2V0SGVhZGVyRGF0YVBvaW50TGlua1Zpc2liaWxpdHkiLCJUaXRsZUxpbmsiLCJsaW5rUHJlc3MiLCJwcmVzc0V2ZW50IiwiZmlyZUV2ZW50IiwiaXNWYWxpZENoYXJ0VHlwZSIsIkNvbmRpdGlvbmFsV3JhcHBlciIsImNvbmRpdGlvbiIsIm9yIiwicGF0aEluTW9kZWwiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCIsImNvbnRlbnRUcnVlIiwiY3JlYXRlQ2hhcnRDb250ZW50IiwiY29udGVudEZhbHNlIiwiYmluZGluZyIsIk1pY3JvQ2hhcnRDb250YWluZXIiLCJtaWNyb0NoYXJ0VGl0bGUiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiTm9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWljcm9DaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTWVhc3VyZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQW5hbHl0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvRWRtX1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFQb2ludCwgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IENoYXJ0VHlwZSwgVUlBbm5vdGF0aW9uVGVybXMsIHR5cGUgQ2hhcnQsIHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0ICogYXMgSUQgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db21wYXJpc29uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9MaW5lTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9TdGFja2VkQmFyTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCIuL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IENvbmRpdGlvbmFsV3JhcHBlciBmcm9tIFwiLi9jb250cm9scy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCBUaXRsZUxpbmsgZnJvbSBcIi4vaW50ZXJuYWwvVGl0bGVMaW5rXCI7XG5pbXBvcnQgTWljcm9DaGFydENvbnRhaW5lciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgTWljcm9DaGFydEFnZ3JlZ2F0aW9uLCBNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcbmltcG9ydCBNaWNyb0NoYXJ0SGVscGVyIGZyb20gXCIuL21pY3JvY2hhcnQvTWljcm9DaGFydEhlbHBlclwiO1xuXG50eXBlIEVycm9yT2JqZWN0VHlwZSA9IHtcblx0RGF0YVBvaW50X1ZhbHVlPzogdW5rbm93bjtcbn07XG5cbmVudW0gTmF2aWdhdGlvblR5cGUge1xuXHQvKipcblx0ICogRm9yIEV4dGVybmFsIE5hdmlnYXRpb25cblx0ICovXG5cdEV4dGVybmFsID0gXCJFeHRlcm5hbFwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgSW4tUGFnZSBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRJblBhZ2UgPSBcIkluUGFnZVwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgTm8gTmF2aWdhdGlvblxuXHQgKi9cblx0Tm9uZSA9IFwiTm9uZVwiXG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBNaWNyb0NoYXJ0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL21pY3JvY2hhcnQvIE92ZXJ2aWV3IG9mIE1pY3JvIENoYXJ0IEJ1aWxkaW5nIEJsb2NrfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNaWNyb0NoYXJ0IGlkPVwiTXlNaWNyb0NoYXJ0XCIgY29udGV4dFBhdGg9XCIvUm9vdEVudGl0eVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIgLyZndDtcbiAqIDwvcHJlPlxuICogIDxwcmU+XG4gKiBzYXAudWkucmVxdWlyZShbXCJzYXAvZmUvbWFjcm9zL01pY3JvQ2hhcnRcIl0sIGZ1bmN0aW9uKE1pY3JvQ2hhcnQpIHtcbiAqIFx0IC4uLlxuICogXHQgbmV3IE1pY3JvQ2hhcnQoXCJteU1pY3JvQ2hhcnRcIiwge21ldGFQYXRoOlwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJ9KVxuICogfSlcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjkzLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NaWNyb0NoYXJ0XCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MubWljcm9jaGFydC5NaWNyb0NoYXJ0Q29udGFpbmVyXCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaWNyb0NoYXJ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jazxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdC8qKlxuXHQgKiBUbyBjb250cm9sIHRoZSByZW5kZXJpbmcgb2YgVGl0bGUsIFN1YnRpdGxlIGFuZCBDdXJyZW5jeSBMYWJlbHMuIFdoZW4gdGhlIHNpemUgaXMgeHMgdGhlbiB3ZSBkb1xuXHQgKiBub3Qgc2VlIHRoZSBpbm5lciBsYWJlbHMgb2YgdGhlIE1pY3JvQ2hhcnQgYXMgd2VsbC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgc2hvd09ubHlDaGFydCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSAgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogY29udGV4dCBwYXRoIHRvIHRoZSBNaWNyb0NoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUeXBlIG9mIG5hdmlnYXRpb24sIHRoYXQgaXMsIEV4dGVybmFsIG9yIEluUGFnZVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdG5hdmlnYXRpb25UeXBlPzogTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZS5Ob25lO1xuXG5cdC8qKlxuXHQgKiBCYXRjaCBncm91cCBJRCBhbG9uZyB3aXRoIHdoaWNoIHRoaXMgY2FsbCBzaG91bGQgYmUgZ3JvdXBlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YmF0Y2hHcm91cElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaXplIG9mIHRoZSBNaWNyb0NoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0c2l6ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogU2hvdyBibGFuayBzcGFjZSBpbiBjYXNlIHRoZXJlIGlzIG5vIGRhdGEgaW4gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGhpZGVPbk5vRGF0YT86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRpdGxlID0gXCJcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRlc2NyaXB0aW9uID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHR0aXRsZVByZXNzITogRnVuY3Rpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfY2hhcnRUYXJnZXQhOiBDaGFydDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9kYXRhUG9pbnQhOiBEYXRhUG9pbnQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfdGFyZ2V0TmF2aWdhdGlvblBhdGghOiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2JpbmRpbmchOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfc29ydE9yZGVyPzogU29ydE9yZGVyVHlwZVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21lYXN1cmVEYXRhUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNBbmFseXRpY3M/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Piwgb3RoZXJzPzogUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgc29ydE9yZGVyIGZvciB0aGUgbWljcm9DaGFydCBhcyBtZW50aW9uZWQgaW4gdGhlIFByZXNlbnRhdGlvblZhcmlhbnQuXG5cdCAqIEBwYXJhbSBzb3J0aW5nUHJvcHMgU29ydGVycyBmcm9tIFByZXNlbnRhdGlvblZhcmlhbnQuXG5cdCAqIEByZXR1cm5zIFNvcnRPcmRlclxuXHQgKi9cblx0Z2V0U29ydE9yZGVyKHNvcnRpbmdQcm9wczogU29ydE9yZGVyVHlwZVtdKTogU29ydE9yZGVyVHlwZVtdIHtcblx0XHRyZXR1cm4gc29ydGluZ1Byb3BzLm1hcCgoc29ydGluZ1Byb3A6IFNvcnRPcmRlclR5cGUpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFByb3BlcnR5OiBzb3J0aW5nUHJvcC5Qcm9wZXJ0eT8udmFsdWUgYXMgdW5rbm93biBhcyBQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdERlc2NlbmRpbmc6IHNvcnRpbmdQcm9wLkRlc2NlbmRpbmcgYXMgYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBcIlwiLFxuXHRcdFx0XHQkVHlwZTogQ29tbW9uQW5ub3RhdGlvblR5cGVzLlNvcnRPcmRlclR5cGVcblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUga2V5IHdpdGggdGhlIGdpdmVuIHZhbHVlIGZvciBNaWNyb0NoYXJ0LlxuXHQgKiBAcGFyYW0ga2V5IFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXRcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvXG5cdCAqIEBwYXJhbSBzdXBwcmVzc0ludmFsaWRhdGUgIElmIHRydWUsIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBub3QgbWFya2VkIGFzIGNoYW5nZWRcblx0ICogQHJldHVybnMgTWljcm9DaGFydFxuXHQgKi9cblx0c2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdHRoaXMuY29udGVudC5kZXN0cm95KCk7XG5cdFx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdFx0XHR0aGlzLmNyZWF0ZU1pY3JvQ2hhcnQoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogT3ZlcnJpZGVzIHRoZSBjbG9uZSBtZXRob2Qgb2YgdGhlIFVJNSBjb250cm9sIHRvIGVuc3VyZSB0aGF0IHRoZSBzdWl0ZSBtaWNybyBjaGFydCBpcyBjcmVhdGVkIGFzeW5jaHJvbm91c2x5IG9uIHRoZSBjbG9uZS5cblx0ICpcblx0ICogQ2xvbmUgaXMgYSBVSTUgY29yZSBDb250cm9sIG1ldGhvZCwgd2hpY2ggaXMgbm90IGFzeW5jIGFuZCBpcyBjYWxsZWQgaW4gYSBzeW5jIG1hbm5lciB0aHJvdWdob3V0IFVJNS5cblx0ICogSGVuY2Ugd2UgbmVlZCB0byBjcmVhdGUgdGhlIGNoYXJ0IGluIGEgZmlyZSBhbmQgZm9yZ2V0IGZhc2hpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBpZFN1ZmZpeCBBIHN1ZmZpeCB0byBiZSBhcHBlbmRlZCB0byB0aGUgY2xvbmVkIGVsZW1lbnQgaWRcblx0ICogQHBhcmFtIGxvY2FsSWRzIEFuIGFycmF5IG9mIGxvY2FsIElEcyB3aXRoaW4gdGhlIGNsb25lZCBoaWVyYXJjaHkgKGludGVybmFsbHkgdXNlZClcblx0ICogQHJldHVybnMgVGhlIHJlZmVyZW5jZSB0byB0aGUgbmV3bHkgY3JlYXRlIGNsb25lXG5cdCAqL1xuXHRjbG9uZShpZFN1ZmZpeD86IHN0cmluZyB8IHVuZGVmaW5lZCwgbG9jYWxJZHM/OiBzdHJpbmdbXSk6IHRoaXMge1xuXHRcdGNvbnN0IGNsb25lZE1pY3JvQ2hhcnQgPSBzdXBlci5jbG9uZShpZFN1ZmZpeCwgbG9jYWxJZHMpO1xuXHRcdGNsb25lZE1pY3JvQ2hhcnQuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdHJldHVybiBjbG9uZWRNaWNyb0NoYXJ0O1xuXHR9XG5cdHB1YmxpYyBhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRpZiAoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5Tb3J0T3JkZXIgYXMgdW5rbm93biBhcyBTb3J0T3JkZXJUeXBlW10gfCB1bmRlZmluZWQpPy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnQ+KFxuXHRcdFx0XHRcdGAke3RoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5WaXN1YWxpemF0aW9uc1swXS52YWx1ZX1gLFxuXHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSArIFwiL1wiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoICE9XG5cdFx0XHRcdFx0XHRudWxsXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQgPSB0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgQ2hhcnQ7XG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPE1lYXN1cmU+KFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLnZhbHVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChNaWNyb0NoYXJ0SGVscGVyLnNob3VsZFJlbmRlck1pY3JvQ2hhcnQodGhpcy5fY2hhcnRUYXJnZXQpKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGF0YVBvaW50ID0gdGhpcy5fY2hhcnRUYXJnZXQ/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFxuXHRcdFx0XHRcdFx0Z2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0KSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0ID0gdHlwZW9mIHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJzdHJpbmdcIiA/IHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJ0cnVlXCIgOiB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5sb2dXYXJuaW5nKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBjcmVhdGVNaWNyb0NoYXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0XCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9CdWxsZXRNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9SYWRpYWxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSGFydmV5QmFsbE1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db2x1bW5NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvTGluZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQXJlYU1pY3JvQ2hhcnRgXG5cdFx0fTtcblxuXHRcdGNvbnN0IHR5cGUxID0gdGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlO1xuXHRcdGlmIChPYmplY3Qua2V5cyhjaGFydE1hcCkuaW5jbHVkZXModHlwZTEpKSB7XG5cdFx0XHRjb25zdCBDaGFydENvbXBvbmVudCA9IChhd2FpdCBpbXBvcnQoY2hhcnRNYXBbdHlwZTFdKSkuZGVmYXVsdDtcblx0XHRcdGNvbnN0IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgPSBhd2FpdCB0aGlzLmdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoKTtcblx0XHRcdGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRcdCh0aGlzLmNvbnRlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFRydWVcIikgYXMgTWljcm9DaGFydENvbnRhaW5lcikuc2V0QWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XCJtaWNyb0NoYXJ0XCIsXG5cdFx0XHRcdFx0PENoYXJ0Q29tcG9uZW50IHsuLi50aGlzLmdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCl9PnttaWNyb0NoYXJ0QWdncmVnYXRpb25zfTwvQ2hhcnRDb21wb25lbnQ+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQodGhpcy5jb250ZW50IGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxvZ1dhcm5pbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgZXJyb3JPYmplY3Q6IEVycm9yT2JqZWN0VHlwZSA9IHt9O1xuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CdWxsZXQpIHtcblx0XHRcdGVycm9yT2JqZWN0W1wiRGF0YVBvaW50X1ZhbHVlXCJdID0gdGhpcy5fZGF0YVBvaW50Py5WYWx1ZSB8fCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdE1pY3JvQ2hhcnRIZWxwZXIubG9nV2FybmluZyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsIGVycm9yT2JqZWN0KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCk6IFBhcnRpYWw8UHJvcGVydGllc09mPE1pY3JvQ2hhcnRTZXR0aW5ncz4+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWljcm9DaGFydFByb3BlcnRpZXM6IE1pY3JvQ2hhcnRTZXR0aW5ncyA9IHtcblx0XHRcdHNpemU6IHRoaXMuc2l6ZSxcblx0XHRcdGhpZGVPbk5vRGF0YTogdGhpcy5oaWRlT25Ob0RhdGFcblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVBvaW50UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPERhdGFQb2ludFR5cGU+KFxuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZVxuXHRcdCk7XG5cblx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLl9zb3J0T3JkZXIgYXMgU29ydE9yZGVyVHlwZVtdLFxuXHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHRzd2l0Y2ggKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9QaWVcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEhhcnZleU1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncykuYmFycyA9IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgdW5rbm93biBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbHVtbnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydChcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0XHRcdGRhdGFQb2ludFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5EaW1lbnNpb25zPy5bMF0sXG5cdFx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdCBhcyBDaGFydCk/LkRpbWVuc2lvbnM/LlswXT8udmFsdWUsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLm1heFZhbHVlID0gdGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZVxuXHRcdFx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQodGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZT8udmFsdWVPZigpKSlcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5taW5WYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykuY29sb3JQYWxldHRlID0gTWljcm9DaGFydEhlbHBlci5nZXRDb2xvclBhbGV0dGVGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludFxuXHRcdFx0XHQpO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmRhdGEgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRMaW5lTWljcm9DaGFydFNldHRpbmdzKS5zaG93VGhyZXNob2xkTGluZSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydFByb3BlcnRpZXM7XG5cdH1cblxuXHRhc3luYyBnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk6IFByb21pc2U8TWljcm9DaGFydEFnZ3JlZ2F0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCA9IHRoaXMuX2RhdGFQb2ludC5Dcml0aWNhbGl0eVxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXJTdGFja2VkKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuUGllKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXIpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbXBhcmlzb25NaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQsXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QXJlYU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoIGFzIENvbnRleHQsXG5cdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lKSB7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggJiYgdGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TGluZU1pY3JvQ2hhcnRBZ2dyYWdhdGlvbnMoXG5cdFx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGhcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlTWljcm9DaGFydElkKGNoYXJ0VHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgY2hhcnRJRFByZWZpeDtcblx0XHRzd2l0Y2ggKGNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQnVsbGV0TWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiUmFkaWFsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkhhcnZleUJhbGxNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlN0YWNrZWRCYXJNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9BcmVhXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkFyZWFNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQ29sdW1uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbXBhcmlzb25NaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkxpbmVNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJZChjaGFydElEUHJlZml4KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCk6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiA9IHtcblx0XHRcdGNoYXJ0VGl0bGU6IHRoaXMudGl0bGUgfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LlRpdGxlPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWRcblx0XHR9O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnNob3dPbmx5Q2hhcnQgPSB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnRUaXRsZSA9ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZSBhcyBzdHJpbmcpIHx8IHVuZGVmaW5lZDtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydERlc2NyaXB0aW9uID1cblx0XHRcdHRoaXMuZGVzY3JpcHRpb24gfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LkRlc2NyaXB0aW9uPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cblx0XHR0aGlzLl9iaW5kaW5nID0gTWljcm9DaGFydEhlbHBlci5nZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPixcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIilcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudW9tUGF0aCA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnQsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGgsXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGVcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuaWQgPSB0aGlzLmNyZWF0ZU1pY3JvQ2hhcnRJZCh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpO1xuXG5cdFx0Y29uc3QgY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSA9IFtcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIiwgXCJVSS5DaGFydFR5cGUvUGllXCIsIFwiVUkuQ2hhcnRUeXBlL1JhZGlhbFwiXTtcblx0XHRpZiAoY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eS5pbmNsdWRlcyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpKSB7XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy52aXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdG5vdChcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odGhpcy5fY2hhcnRUYXJnZXQuTWVhc3VyZXNbMF0uJHRhcmdldD8uYW5ub3RhdGlvbnMuVUk/LkhpZGRlbiksXG5cdFx0XHRcdFx0XHRjb25zdGFudCh0cnVlKSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KGZhbHNlKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5BcmVhIHx8IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgdW5rbm93biBhcyBzdHJpbmdbXTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gW1xuXHRcdFx0XHQodGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KT8udGFyZ2V0T2JqZWN0Py5uYW1lIGFzIHN0cmluZ1xuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kYXRhUG9pbnRRdWFsaWZpZXJzID0gTWljcm9DaGFydEhlbHBlci5nZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWVhc3VyZXMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucyxcblx0XHRcdFx0XCJMaW5lXCIsXG5cdFx0XHRcdHRydWVcblx0XHRcdCkgYXMgc3RyaW5nW107XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQ29sdW1uIHx8XG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBkaW1lbnNpb25EYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5EaW1lbnNpb25zWzBdLnZhbHVlXG5cdFx0XHQpO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kaW1lbnNpb24gPSBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0XG5cdFx0XHRcdD8gKGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGhcblx0XHRcdFx0OiBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5uYW1lO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZVByZWNpc2lvbiA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWU/LiR0YXJnZXQ/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVTY2FsZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uUHJlY2lzaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ucHJlY2lzaW9uO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2FsZW5kYXJQYXR0ZXJuID0gTWljcm9DaGFydEhlbHBlci5nZXRDYWxlbmRhclBhdHRlcm4oXG5cdFx0XHRcdGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnR5cGUgYXMgc3RyaW5nLFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucyBhcyBQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM7XG5cdH1cblxuXHRjcmVhdGVUaXRsZSh0aXRsZVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpdGxlTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRpdGxlVGV4dCkge1xuXHRcdFx0Ly8gVGhlIHRpdGxlIGhhZCB0aGlzIGlkIGluIHRlbXBsYXRlIHRpbWUgYW5kIHdlIG5lZWQgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaWQuXG5cdFx0XHRjb25zdCBsb2NhbExlZ2FjeVRpdGxlSWQgPSBJRC5nZW5lcmF0ZShbXG5cdFx0XHRcdFwiZmVcIixcblx0XHRcdFx0XCJNaWNyb0NoYXJ0TGlua1wiLFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0sXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnF1YWxpZmllclxuXHRcdFx0XSk7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbGVnYWN5VGl0bGVJZCA9IGAke3ZpZXdJZH0tLSR7bG9jYWxMZWdhY3lUaXRsZUlkfWA7XG5cblx0XHRcdGNvbnN0IHRpdGxlTGlua1Byb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxUaXRsZUxpbms+ID0ge1xuXHRcdFx0XHRpZDogbGVnYWN5VGl0bGVJZCxcblx0XHRcdFx0dGV4dDogdGl0bGVUZXh0XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdFx0aWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiSW5QYWdlXCIpIHtcblx0XHRcdFx0Y29uc3QgYXJpYVRyYW5zbGF0ZWRUZXh0ID0gcmVzb3VyY2VCdW5kbGU/LmdldFRleHQoXCJUX0NPTU1PTl9IRUFERVJEUF9USVRMRV9MSU5LX0lOUEFHRV9BUklBXCIpO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLnNob3dBc0xpbmsgPSB0cnVlO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uVHlwZSA9PT0gXCJFeHRlcm5hbFwiKSB7XG5cdFx0XHRcdGNvbnN0IHNob3dMaW5rID0gQ29tbW9uSGVscGVyLmdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5KGxvY2FsTGVnYWN5VGl0bGVJZCwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiTV9NSUNST0NIQVJUX1RJVExFX0ZSQUdNRU5UX0hFQURFUl9NSUNST0NIQVJUX0xJTktfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gc2hvd0xpbms7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMubGlua0FyaWFUZXh0ID0gYXJpYVRyYW5zbGF0ZWRUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlTGlua1xuXHRcdFx0XHRcdHsuLi50aXRsZUxpbmtQcm9wZXJ0aWVzfVxuXHRcdFx0XHRcdGxpbmtQcmVzcz17KHByZXNzRXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInRpdGxlUHJlc3NcIiwgcHJlc3NFdmVudCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgbWljcm9jaGFydCBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0Q29udGFpbmVyIHdoaWNoIHdpbGwgY29udGFpbiBUaXRsZSBhbmQgbWljcm8gY2hhcnQgY29udGVudCBmb3IgZWFjaCBvZiB0aGUgbWljcm9jaGFydC5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgaXNWYWxpZENoYXJ0VHlwZSA9IFtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvRG9udXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIlxuXHRcdF0uaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblx0XHRpZiAoIWlzVmFsaWRDaGFydFR5cGUpIHtcblx0XHRcdHJldHVybiA8VGV4dCB0ZXh0PVwiVGhpcyBjaGFydCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIE90aGVyIFR5cGVzIHlldCB0byBiZSBpbXBsZW1lbnRlZC4uXCIgLz47XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8Q29uZGl0aW9uYWxXcmFwcGVyXG5cdFx0XHRcdFx0Y29uZGl0aW9uPXtjb21waWxlRXhwcmVzc2lvbihvcihub3QocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikpLCBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUubGV2ZWxcIiksIDApKSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17Z2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0KHRoaXMuX2RhdGFQb2ludC5WYWx1ZS4kdGFyZ2V0KX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50VHJ1ZTogdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKSxcblx0XHRcdFx0XHRcdGNvbnRlbnRGYWxzZTogPFRleHQgdGV4dD1cIipcIj48L1RleHQ+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db25kaXRpb25hbFdyYXBwZXI+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVDaGFydENvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMgPSB7XG5cdFx0XHQuLi50aGlzLmdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCksXG5cdFx0XHRiaW5kaW5nOiB0aGlzLl9iaW5kaW5nXG5cdFx0fTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1pY3JvQ2hhcnRDb250YWluZXIgey4uLm1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRtaWNyb0NoYXJ0VGl0bGU6ICF0aGlzLnNob3dPbmx5Q2hhcnQgPyB0aGlzLmNyZWF0ZVRpdGxlKG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUpIDogdW5kZWZpbmVkXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01pY3JvQ2hhcnRDb250YWluZXI+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BcUNLQSxjQUFjLDBCQUFkQSxjQUFjO0lBQ2xCO0FBQ0Q7QUFDQTtJQUhLQSxjQUFjO0lBTWxCO0FBQ0Q7QUFDQTtJQVJLQSxjQUFjO0lBV2xCO0FBQ0Q7QUFDQTtJQWJLQSxjQUFjO0lBQUEsT0FBZEEsY0FBYztFQUFBLEVBQWRBLGNBQWM7RUFpQm5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBckJBLElBeUJxQkMsVUFBVSxJQUFBQyxJQUFBLEdBSDlCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLFdBQVcsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLDJDQUEyQztFQUMxRyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9BQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPREYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBT0RKLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUksS0FBQSxHQU1ETCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FNRE4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBTzVCUCxRQUFR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
602
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsImV2ZW50IiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwic2V0dGluZ3MiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJfZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0IiwiX3Zpc2liaWxpdHlDaGVjayIsImdldFNvcnRPcmRlciIsInNvcnRpbmdQcm9wcyIsIm1hcCIsInNvcnRpbmdQcm9wIiwiUHJvcGVydHkiLCJ2YWx1ZSIsIkRlc2NlbmRpbmciLCJmdWxseVF1YWxpZmllZE5hbWUiLCIkVHlwZSIsInNldFByb3BlcnR5Iiwia2V5Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJjb250ZW50IiwiZGVzdHJveSIsImNyZWF0ZUNvbnRlbnQiLCJjcmVhdGVNaWNyb0NoYXJ0IiwiY2xvbmUiLCJpZFN1ZmZpeCIsImxvY2FsSWRzIiwiY2xvbmVkTWljcm9DaGFydCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsInRhcmdldE9iamVjdCIsInRlcm0iLCJTb3J0T3JkZXIiLCJsZW5ndGgiLCJfc29ydE9yZGVyIiwiVmlzdWFsaXphdGlvbnMiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsIl9jaGFydFRhcmdldCIsIl9tZWFzdXJlRGF0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIk1lYXN1cmVzIiwiTWljcm9DaGFydEhlbHBlciIsInNob3VsZFJlbmRlck1pY3JvQ2hhcnQiLCJfZGF0YVBvaW50IiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCIkdGFyZ2V0IiwiX3RhcmdldE5hdmlnYXRpb25QYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzaG93T25seUNoYXJ0IiwibG9nV2FybmluZyIsImNoYXJ0TWFwIiwidHlwZTEiLCJDaGFydFR5cGUiLCJDaGFydENvbXBvbmVudCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwibWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJpc0FuYWx5dGljcyIsImdldEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJfanN4IiwiZ2V0TWljcm9DaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImVycm9yT2JqZWN0IiwiVmFsdWUiLCJtaWNyb0NoYXJ0UHJvcGVydGllcyIsInNpemUiLCJoaWRlT25Ob0RhdGEiLCJkYXRhUG9pbnRQYXRoIiwiZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0IiwiZ2V0T2JqZWN0IiwiRGltZW5zaW9ucyIsImdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0UmFkaWFsTWljcm9DaGFydFByb3BlcnRpZXMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyIsImJhcnMiLCJjb2x1bW5zIiwibWF4VmFsdWUiLCJNYXhpbXVtVmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbnN0YW50IiwidmFsdWVPZiIsIm1pblZhbHVlIiwiTWluaW11bVZhbHVlIiwiY29sb3JQYWxldHRlIiwiZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydCIsImRhdGEiLCJzaG93VGhyZXNob2xkTGluZSIsImNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJDcml0aWNhbGl0eSIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IiwiZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldFN0YWNrTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEhhcnZleU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zIiwiY3JlYXRlTWljcm9DaGFydElkIiwiY2hhcnRUeXBlIiwiY2hhcnRJRFByZWZpeCIsImNyZWF0ZUlkIiwiZ2V0TWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcyIsImNoYXJ0VGl0bGUiLCJ0aXRsZSIsIlRpdGxlIiwiY2hhcnREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJfYmluZGluZyIsImdldEJpbmRpbmdFeHByZXNzaW9uRm9yTWljcm9jaGFydCIsInVvbVBhdGgiLCJnZXRVT01QYXRoRm9yTWljcm9jaGFydCIsImlkIiwiY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSIsInZpc2libGUiLCJub3QiLCJpZkVsc2UiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiZGF0YVBvaW50UXVhbGlmaWVycyIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0IiwibWVhc3VyZXMiLCJuYW1lIiwiZ2V0TWVhc3VyZVByb3BlcnR5UGF0aHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzIiwiZGltZW5zaW9uRGF0YVBhdGgiLCJkaW1lbnNpb24iLCJDb21tb24iLCJUZXh0IiwicGF0aCIsIm1lYXN1cmVQcmVjaXNpb24iLCJwcmVjaXNpb24iLCJtZWFzdXJlU2NhbGUiLCJnZXRNZWFzdXJlU2NhbGVGb3JNaWNyb0NoYXJ0IiwiZGltZW5zaW9uUHJlY2lzaW9uIiwiY2FsZW5kYXJQYXR0ZXJuIiwiZ2V0Q2FsZW5kYXJQYXR0ZXJuIiwiY3JlYXRlVGl0bGUiLCJ0aXRsZVRleHQiLCJsb2NhbExlZ2FjeVRpdGxlSWQiLCJJRCIsImdlbmVyYXRlIiwicXVhbGlmaWVyIiwidmlld0lkIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiZ2V0SWQiLCJsZWdhY3lUaXRsZUlkIiwidGl0bGVMaW5rUHJvcGVydGllcyIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibmF2aWdhdGlvblR5cGUiLCJhcmlhVHJhbnNsYXRlZFRleHQiLCJnZXRUZXh0Iiwic2hvd0FzTGluayIsImxpbmtBcmlhVGV4dCIsInNob3dMaW5rIiwiQ29tbW9uSGVscGVyIiwiZ2V0SGVhZGVyRGF0YVBvaW50TGlua1Zpc2liaWxpdHkiLCJUaXRsZUxpbmsiLCJsaW5rUHJlc3MiLCJwcmVzc0V2ZW50IiwiZmlyZUV2ZW50IiwiaXNWYWxpZENoYXJ0VHlwZSIsIkNvbmRpdGlvbmFsV3JhcHBlciIsImNvbmRpdGlvbiIsIm9yIiwicGF0aEluTW9kZWwiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCIsImNvbnRlbnRUcnVlIiwiY3JlYXRlQ2hhcnRDb250ZW50IiwiY29udGVudEZhbHNlIiwiYmluZGluZyIsIk1pY3JvQ2hhcnRDb250YWluZXIiLCJtaWNyb0NoYXJ0VGl0bGUiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiTm9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWljcm9DaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTWVhc3VyZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQW5hbHl0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvRWRtX1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFQb2ludCwgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IENoYXJ0VHlwZSwgVUlBbm5vdGF0aW9uVGVybXMsIHR5cGUgQ2hhcnQsIHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0ICogYXMgSUQgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db21wYXJpc29uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9MaW5lTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9TdGFja2VkQmFyTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCIuL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IENvbmRpdGlvbmFsV3JhcHBlciBmcm9tIFwiLi9jb250cm9scy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCBUaXRsZUxpbmsgZnJvbSBcIi4vaW50ZXJuYWwvVGl0bGVMaW5rXCI7XG5pbXBvcnQgTWljcm9DaGFydENvbnRhaW5lciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgTWljcm9DaGFydEFnZ3JlZ2F0aW9uLCBNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcbmltcG9ydCBNaWNyb0NoYXJ0SGVscGVyIGZyb20gXCIuL21pY3JvY2hhcnQvTWljcm9DaGFydEhlbHBlclwiO1xuXG50eXBlIEVycm9yT2JqZWN0VHlwZSA9IHtcblx0RGF0YVBvaW50X1ZhbHVlPzogdW5rbm93bjtcbn07XG5cbmVudW0gTmF2aWdhdGlvblR5cGUge1xuXHQvKipcblx0ICogRm9yIEV4dGVybmFsIE5hdmlnYXRpb25cblx0ICovXG5cdEV4dGVybmFsID0gXCJFeHRlcm5hbFwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgSW4tUGFnZSBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRJblBhZ2UgPSBcIkluUGFnZVwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgTm8gTmF2aWdhdGlvblxuXHQgKi9cblx0Tm9uZSA9IFwiTm9uZVwiXG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBNaWNyb0NoYXJ0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL21pY3JvY2hhcnQvIE92ZXJ2aWV3IG9mIE1pY3JvIENoYXJ0IEJ1aWxkaW5nIEJsb2NrfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNaWNyb0NoYXJ0IGlkPVwiTXlNaWNyb0NoYXJ0XCIgY29udGV4dFBhdGg9XCIvUm9vdEVudGl0eVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIgLyZndDtcbiAqIDwvcHJlPlxuICogIDxwcmU+XG4gKiBzYXAudWkucmVxdWlyZShbXCJzYXAvZmUvbWFjcm9zL01pY3JvQ2hhcnRcIl0sIGZ1bmN0aW9uKE1pY3JvQ2hhcnQpIHtcbiAqIFx0IC4uLlxuICogXHQgbmV3IE1pY3JvQ2hhcnQoXCJteU1pY3JvQ2hhcnRcIiwge21ldGFQYXRoOlwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJ9KVxuICogfSlcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjkzLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NaWNyb0NoYXJ0XCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MubWljcm9jaGFydC5NaWNyb0NoYXJ0Q29udGFpbmVyXCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaWNyb0NoYXJ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jazxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdC8qKlxuXHQgKiBUbyBjb250cm9sIHRoZSByZW5kZXJpbmcgb2YgVGl0bGUsIFN1YnRpdGxlIGFuZCBDdXJyZW5jeSBMYWJlbHMuIFdoZW4gdGhlIHNpemUgaXMgeHMgdGhlbiB3ZSBkb1xuXHQgKiBub3Qgc2VlIHRoZSBpbm5lciBsYWJlbHMgb2YgdGhlIE1pY3JvQ2hhcnQgYXMgd2VsbC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgc2hvd09ubHlDaGFydCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSAgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogY29udGV4dCBwYXRoIHRvIHRoZSBNaWNyb0NoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUeXBlIG9mIG5hdmlnYXRpb24sIHRoYXQgaXMsIEV4dGVybmFsIG9yIEluUGFnZVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdG5hdmlnYXRpb25UeXBlPzogTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZS5Ob25lO1xuXG5cdC8qKlxuXHQgKiBCYXRjaCBncm91cCBJRCBhbG9uZyB3aXRoIHdoaWNoIHRoaXMgY2FsbCBzaG91bGQgYmUgZ3JvdXBlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YmF0Y2hHcm91cElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaXplIG9mIHRoZSBNaWNyb0NoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0c2l6ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogU2hvdyBibGFuayBzcGFjZSBpbiBjYXNlIHRoZXJlIGlzIG5vIGRhdGEgaW4gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGhpZGVPbk5vRGF0YT86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRpdGxlID0gXCJcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRlc2NyaXB0aW9uID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHR0aXRsZVByZXNzITogRnVuY3Rpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfY2hhcnRUYXJnZXQhOiBDaGFydDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9kYXRhUG9pbnQhOiBEYXRhUG9pbnQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfdGFyZ2V0TmF2aWdhdGlvblBhdGghOiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2JpbmRpbmchOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfc29ydE9yZGVyPzogU29ydE9yZGVyVHlwZVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21lYXN1cmVEYXRhUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNBbmFseXRpY3M/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Piwgb3RoZXJzPzogUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0ID0gdHJ1ZTtcblx0XHR0aGlzLl92aXNpYmlsaXR5Q2hlY2sgPSB0cnVlO1xuXHRcdHJldHVybiBzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBzb3J0T3JkZXIgZm9yIHRoZSBtaWNyb0NoYXJ0IGFzIG1lbnRpb25lZCBpbiB0aGUgUHJlc2VudGF0aW9uVmFyaWFudC5cblx0ICogQHBhcmFtIHNvcnRpbmdQcm9wcyBTb3J0ZXJzIGZyb20gUHJlc2VudGF0aW9uVmFyaWFudC5cblx0ICogQHJldHVybnMgU29ydE9yZGVyXG5cdCAqL1xuXHRnZXRTb3J0T3JkZXIoc29ydGluZ1Byb3BzOiBTb3J0T3JkZXJUeXBlW10pOiBTb3J0T3JkZXJUeXBlW10ge1xuXHRcdHJldHVybiBzb3J0aW5nUHJvcHMubWFwKChzb3J0aW5nUHJvcDogU29ydE9yZGVyVHlwZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0UHJvcGVydHk6IHNvcnRpbmdQcm9wLlByb3BlcnR5Py52YWx1ZSBhcyB1bmtub3duIGFzIFByb3BlcnR5UGF0aCxcblx0XHRcdFx0RGVzY2VuZGluZzogc29ydGluZ1Byb3AuRGVzY2VuZGluZyBhcyBib29sZWFuIHwgdW5kZWZpbmVkLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IFwiXCIsXG5cdFx0XHRcdCRUeXBlOiBDb21tb25Bbm5vdGF0aW9uVHlwZXMuU29ydE9yZGVyVHlwZVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBrZXkgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUgZm9yIE1pY3JvQ2hhcnQuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG9cblx0ICogQHBhcmFtIHN1cHByZXNzSW52YWxpZGF0ZSAgSWYgdHJ1ZSwgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIG5vdCBtYXJrZWQgYXMgY2hhbmdlZFxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0XG5cdCAqL1xuXHRzZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4sIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydGllcygpKS5pbmNsdWRlcyhrZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCB0cnVlKTtcblx0XHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdHRoaXMuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZXMgdGhlIGNsb25lIG1ldGhvZCBvZiB0aGUgVUk1IGNvbnRyb2wgdG8gZW5zdXJlIHRoYXQgdGhlIHN1aXRlIG1pY3JvIGNoYXJ0IGlzIGNyZWF0ZWQgYXN5bmNocm9ub3VzbHkgb24gdGhlIGNsb25lLlxuXHQgKlxuXHQgKiBDbG9uZSBpcyBhIFVJNSBjb3JlIENvbnRyb2wgbWV0aG9kLCB3aGljaCBpcyBub3QgYXN5bmMgYW5kIGlzIGNhbGxlZCBpbiBhIHN5bmMgbWFubmVyIHRocm91Z2hvdXQgVUk1LlxuXHQgKiBIZW5jZSB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgY2hhcnQgaW4gYSBmaXJlIGFuZCBmb3JnZXQgZmFzaGlvbi5cblx0ICogQHBhcmFtIGlkU3VmZml4IEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbG9uZWQgZWxlbWVudCBpZFxuXHQgKiBAcGFyYW0gbG9jYWxJZHMgQW4gYXJyYXkgb2YgbG9jYWwgSURzIHdpdGhpbiB0aGUgY2xvbmVkIGhpZXJhcmNoeSAoaW50ZXJuYWxseSB1c2VkKVxuXHQgKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlIHRvIHRoZSBuZXdseSBjcmVhdGUgY2xvbmVcblx0ICovXG5cdGNsb25lKGlkU3VmZml4Pzogc3RyaW5nIHwgdW5kZWZpbmVkLCBsb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3QgY2xvbmVkTWljcm9DaGFydCA9IHN1cGVyLmNsb25lKGlkU3VmZml4LCBsb2NhbElkcyk7XG5cdFx0Y2xvbmVkTWljcm9DaGFydC5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0cmV0dXJuIGNsb25lZE1pY3JvQ2hhcnQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgb25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRcdHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRleHRQYXRoID8/IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0aWYgKCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyID0gdGhpcy5nZXRTb3J0T3JkZXIodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0Pihcblx0XHRcdFx0XHRgJHt0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuVmlzdWFsaXphdGlvbnNbMF0udmFsdWV9YCxcblx0XHRcdFx0XHRnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCkgKyBcIi9cIlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlciBhcyB1bmtub3duIGFzIFNvcnRPcmRlclR5cGVbXSB8IHVuZGVmaW5lZCk/Lmxlbmd0aCAhPVxuXHRcdFx0XHRcdFx0bnVsbFxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyID0gdGhpcy5nZXRTb3J0T3JkZXIodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0ID0gdGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIENoYXJ0O1xuXHRcdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxNZWFzdXJlPihcblx0XHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5NZWFzdXJlc1swXS52YWx1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoTWljcm9DaGFydEhlbHBlci5zaG91bGRSZW5kZXJNaWNyb0NoYXJ0KHRoaXMuX2NoYXJ0VGFyZ2V0KSkge1xuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludCA9IHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py4kdGFyZ2V0IGFzIERhdGFQb2ludDtcblx0XHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChcblx0XHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKVxuXHRcdFx0XHRcdCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydCA9IHR5cGVvZiB0aGlzLnNob3dPbmx5Q2hhcnQgPT09IFwic3RyaW5nXCIgPyB0aGlzLnNob3dPbmx5Q2hhcnQgPT09IFwidHJ1ZVwiIDogdGhpcy5zaG93T25seUNoYXJ0O1xuXHRcdFx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMubG9nV2FybmluZygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgY3JlYXRlTWljcm9DaGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjaGFydE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQnVsbGV0TWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvUmFkaWFsTWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9QaWVcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0hhcnZleUJhbGxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclN0YWNrZWRcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L1N0YWNrZWRCYXJNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0NvbXBhcmlzb25NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0xpbmVNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0FyZWFcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0FyZWFNaWNyb0NoYXJ0YFxuXHRcdH07XG5cblx0XHRjb25zdCB0eXBlMSA9IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZTtcblx0XHRpZiAoT2JqZWN0LmtleXMoY2hhcnRNYXApLmluY2x1ZGVzKHR5cGUxKSkge1xuXHRcdFx0Y29uc3QgQ2hhcnRDb21wb25lbnQgPSAoYXdhaXQgaW1wb3J0KGNoYXJ0TWFwW3R5cGUxXSkpLmRlZmF1bHQ7XG5cdFx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gYXdhaXQgdGhpcy5nZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk7XG5cdFx0XHRpZiAodGhpcy5pc0FuYWx5dGljcykge1xuXHRcdFx0XHQodGhpcy5jb250ZW50Py5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRUcnVlXCIpIGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHRoaXMuY29udGVudCBhcyBNaWNyb0NoYXJ0Q29udGFpbmVyKS5zZXRBZ2dyZWdhdGlvbihcblx0XHRcdFx0XHRcIm1pY3JvQ2hhcnRcIixcblx0XHRcdFx0XHQ8Q2hhcnRDb21wb25lbnQgey4uLnRoaXMuZ2V0TWljcm9DaGFydFByb3BlcnRpZXMoKX0+e21pY3JvQ2hhcnRBZ2dyZWdhdGlvbnN9PC9DaGFydENvbXBvbmVudD5cblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRsb2dXYXJuaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IGVycm9yT2JqZWN0OiBFcnJvck9iamVjdFR5cGUgPSB7fTtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRlcnJvck9iamVjdFtcIkRhdGFQb2ludF9WYWx1ZVwiXSA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWUgfHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRNaWNyb0NoYXJ0SGVscGVyLmxvZ1dhcm5pbmcodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLCBlcnJvck9iamVjdCk7XG5cdH1cblxuXHRnZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpOiBQYXJ0aWFsPFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0U2V0dGluZ3M+PiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG1pY3JvQ2hhcnRQcm9wZXJ0aWVzOiBNaWNyb0NoYXJ0U2V0dGluZ3MgPSB7XG5cdFx0XHRzaXplOiB0aGlzLnNpemUsXG5cdFx0XHRoaWRlT25Ob0RhdGE6IHRoaXMuaGlkZU9uTm9EYXRhXG5cdFx0fTtcblxuXHRcdGNvbnN0IGRhdGFQb2ludFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxEYXRhUG9pbnRUeXBlPihcblx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWVcblx0XHQpO1xuXG5cdFx0Y29uc3QgbWljcm9DaGFydEFnZ3JlZ2F0aW9ucyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0ZGF0YVBvaW50UGF0aCxcblx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPE1lYXN1cmU+LFxuXHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0IGFzIENoYXJ0KT8uRGltZW5zaW9ucz8uWzBdPy52YWx1ZSxcblx0XHRcdHRydWVcblx0XHQpO1xuXG5cdFx0c3dpdGNoICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpIHtcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRSYWRpYWxNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJFN0YWNrZWRCYXJNaWNyb0NoYXJ0U2V0dGluZ3MpLmJhcnMgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29sdW1uTWljcm9DaGFydFNldHRpbmdzKS5jb2x1bW5zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoKSxcblx0XHRcdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uRGltZW5zaW9ucz8uWzBdLFxuXHRcdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPE1lYXN1cmU+LFxuXHRcdFx0XHRcdHRoaXMuX3NvcnRPcmRlciBhcyBTb3J0T3JkZXJUeXBlW10sXG5cdFx0XHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KSBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5tYXhWYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NYXhpbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NYXhpbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykubWluVmFsdWUgPSB0aGlzLl9kYXRhUG9pbnQuTWluaW11bVZhbHVlXG5cdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihjb25zdGFudCh0aGlzLl9kYXRhUG9pbnQuTWluaW11bVZhbHVlPy52YWx1ZU9mKCkpKVxuXHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbG9yUGFsZXR0ZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydChcblx0XHRcdFx0XHR0aGlzLl9kYXRhUG9pbnRcblx0XHRcdFx0KTtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5kYXRhID0gbWljcm9DaGFydEFnZ3JlZ2F0aW9ucyBhcyB1bmtub3duIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncykuc2hvd1RocmVzaG9sZExpbmUgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIG1pY3JvQ2hhcnRQcm9wZXJ0aWVzO1xuXHR9XG5cblx0YXN5bmMgZ2V0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucygpOiBQcm9taXNlPE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbiB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQgPSB0aGlzLl9kYXRhUG9pbnQuQ3JpdGljYWxpdHlcblx0XHRcdD8gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQodGhpcy5fZGF0YVBvaW50KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkJ1bGxldCkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyh0aGlzLl9kYXRhUG9pbnQsIGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0U3RhY2tNaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCxcblx0XHRcdFx0Y3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLlBpZSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0SGFydmV5TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyh0aGlzLl9kYXRhUG9pbnQsIGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkFyZWEpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aCBhcyBDb250ZXh0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5Db2x1bW4pIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbHVtbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0Y3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCxcblx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoICYmIHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zKFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdGNyZWF0ZU1pY3JvQ2hhcnRJZChjaGFydFR5cGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNoYXJ0SURQcmVmaXg7XG5cdFx0c3dpdGNoIChjaGFydFR5cGUpIHtcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkJ1bGxldE1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlJhZGlhbE1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL1BpZVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJIYXJ2ZXlCYWxsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJTdGFja2VkQmFyTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQXJlYVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJBcmVhTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbHVtbk1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJDb21wYXJpc29uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvTGluZVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJMaW5lTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlSWQoY2hhcnRJRFByZWZpeCk7XG5cdH1cblxuXHRnZXRNaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcygpOiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydENvbnRhaW5lcj4ge1xuXHRcdGNvbnN0IG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydENvbnRhaW5lcj4gPSB7XG5cdFx0XHRjaGFydFRpdGxlOiB0aGlzLnRpdGxlIHx8ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZT8udmFsdWVPZigpIGFzIHN0cmluZykgfHwgdW5kZWZpbmVkXG5cdFx0fTtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5zaG93T25seUNoYXJ0ID0gdGhpcy5zaG93T25seUNoYXJ0O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUgPSAodGhpcy5fY2hhcnRUYXJnZXQuVGl0bGUgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnREZXNjcmlwdGlvbiA9XG5cdFx0XHR0aGlzLmRlc2NyaXB0aW9uIHx8ICh0aGlzLl9jaGFydFRhcmdldC5EZXNjcmlwdGlvbj8udmFsdWVPZigpIGFzIHN0cmluZykgfHwgdW5kZWZpbmVkO1xuXG5cdFx0dGhpcy5fYmluZGluZyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QmluZGluZ0V4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpXG5cdFx0KTtcblxuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnVvbVBhdGggPSBNaWNyb0NoYXJ0SGVscGVyLmdldFVPTVBhdGhGb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5zaG93T25seUNoYXJ0LFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlXG5cdFx0KTtcblxuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmlkID0gdGhpcy5jcmVhdGVNaWNyb0NoYXJ0SWQodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblxuXHRcdGNvbnN0IGNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkgPSBbXCJVSS5DaGFydFR5cGUvQnVsbGV0XCIsIFwiVUkuQ2hhcnRUeXBlL1BpZVwiLCBcIlVJLkNoYXJ0VHlwZS9SYWRpYWxcIl07XG5cdFx0aWYgKGNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkuaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRub3QoXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLiR0YXJnZXQ/LmFubm90YXRpb25zLlVJPy5IaWRkZW4pLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQodHJ1ZSksXG5cdFx0XHRcdFx0XHRjb25zdGFudChmYWxzZSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnZpc2libGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkJhclN0YWNrZWQpIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRhdGFQb2ludFF1YWxpZmllcnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWUgYXMgc3RyaW5nXG5cdFx0XHQpIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fCB0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5Db2x1bW4pIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRhdGFQb2ludFF1YWxpZmllcnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWUgYXMgc3RyaW5nXG5cdFx0XHQpIGFzIHVua25vd24gYXMgc3RyaW5nW107XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5tZWFzdXJlcyA9IFtcblx0XHRcdFx0KHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik/LnRhcmdldE9iamVjdD8ubmFtZSBhcyBzdHJpbmdcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkxpbmUpIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gTWljcm9DaGFydEhlbHBlci5nZXRNZWFzdXJlUHJvcGVydHlQYXRocyhcblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlLmFubm90YXRpb25zLFxuXHRcdFx0XHRcIkxpbmVcIixcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KSBhcyBzdHJpbmdbXTtcblxuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkFyZWEgfHxcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbiB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgZGltZW5zaW9uRGF0YVBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8Q2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuRGltZW5zaW9uc1swXS52YWx1ZVxuXHRcdFx0KTtcblxuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dFxuXHRcdFx0XHQ/IChkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0IGFzIHVua25vd24gYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pPy5wYXRoXG5cdFx0XHRcdDogZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ubmFtZTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVQcmVjaXNpb24gPSB0aGlzLl9kYXRhUG9pbnQ/LlZhbHVlPy4kdGFyZ2V0Py5wcmVjaXNpb247XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5tZWFzdXJlU2NhbGUgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVTY2FsZUZvck1pY3JvQ2hhcnQodGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRpbWVuc2lvblByZWNpc2lvbiA9IGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNhbGVuZGFyUGF0dGVybiA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q2FsZW5kYXJQYXR0ZXJuKFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py50eXBlIGFzIHN0cmluZyxcblx0XHRcdFx0ZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnMgYXMgUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzO1xuXHR9XG5cblx0Y3JlYXRlVGl0bGUodGl0bGVUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBUaXRsZUxpbmsgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aXRsZVRleHQpIHtcblx0XHRcdC8vIFRoZSB0aXRsZSBoYWQgdGhpcyBpZCBpbiB0ZW1wbGF0ZSB0aW1lIGFuZCB3ZSBuZWVkIHRvIG1haW50YWluIHRoZSBzYW1lIGlkLlxuXHRcdFx0Y29uc3QgbG9jYWxMZWdhY3lUaXRsZUlkID0gSUQuZ2VuZXJhdGUoW1xuXHRcdFx0XHRcImZlXCIsXG5cdFx0XHRcdFwiTWljcm9DaGFydExpbmtcIixcblx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py50ZXJtLFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py5xdWFsaWZpZXJcblx0XHRcdF0pO1xuXHRcdFx0Y29uc3Qgdmlld0lkID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IGxlZ2FjeVRpdGxlSWQgPSBgJHt2aWV3SWR9LS0ke2xvY2FsTGVnYWN5VGl0bGVJZH1gO1xuXG5cdFx0XHRjb25zdCB0aXRsZUxpbmtQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzT2Y8VGl0bGVMaW5rPiA9IHtcblx0XHRcdFx0aWQ6IGxlZ2FjeVRpdGxlSWQsXG5cdFx0XHRcdHRleHQ6IHRpdGxlVGV4dFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKTtcblx0XHRcdGlmICh0aGlzLm5hdmlnYXRpb25UeXBlID09PSBcIkluUGFnZVwiKSB7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiVF9DT01NT05fSEVBREVSRFBfVElUTEVfTElOS19JTlBBR0VfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gdHJ1ZTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5saW5rQXJpYVRleHQgPSBhcmlhVHJhbnNsYXRlZFRleHQ7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiRXh0ZXJuYWxcIikge1xuXHRcdFx0XHRjb25zdCBzaG93TGluayA9IENvbW1vbkhlbHBlci5nZXRIZWFkZXJEYXRhUG9pbnRMaW5rVmlzaWJpbGl0eShsb2NhbExlZ2FjeVRpdGxlSWQsIHRydWUpO1xuXHRcdFx0XHRjb25zdCBhcmlhVHJhbnNsYXRlZFRleHQgPSByZXNvdXJjZUJ1bmRsZT8uZ2V0VGV4dChcIk1fTUlDUk9DSEFSVF9USVRMRV9GUkFHTUVOVF9IRUFERVJfTUlDUk9DSEFSVF9MSU5LX0FSSUFcIik7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMuc2hvd0FzTGluayA9IHNob3dMaW5rO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxUaXRsZUxpbmtcblx0XHRcdFx0XHR7Li4udGl0bGVMaW5rUHJvcGVydGllc31cblx0XHRcdFx0XHRsaW5rUHJlc3M9eyhwcmVzc0V2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0aXRsZVByZXNzXCIsIHByZXNzRXZlbnQpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIG1pY3JvY2hhcnQgY29udGVudC5cblx0ICogQHJldHVybnMgTWljcm9DaGFydENvbnRhaW5lciB3aGljaCB3aWxsIGNvbnRhaW4gVGl0bGUgYW5kIG1pY3JvIGNoYXJ0IGNvbnRlbnQgZm9yIGVhY2ggb2YgdGhlIG1pY3JvY2hhcnQuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE1pY3JvQ2hhcnRDb250YWluZXIge1xuXHRcdGNvbnN0IGlzVmFsaWRDaGFydFR5cGUgPSBbXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9QaWVcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclN0YWNrZWRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0FyZWFcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9MaW5lXCJcblx0XHRdLmluY2x1ZGVzKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSk7XG5cdFx0aWYgKCFpc1ZhbGlkQ2hhcnRUeXBlKSB7XG5cdFx0XHRyZXR1cm4gPFRleHQgdGV4dD1cIlRoaXMgY2hhcnQgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLiBPdGhlciBUeXBlcyB5ZXQgdG8gYmUgaW1wbGVtZW50ZWQuLlwiIC8+O1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pc0FuYWx5dGljcykge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PENvbmRpdGlvbmFsV3JhcHBlclxuXHRcdFx0XHRcdGNvbmRpdGlvbj17Y29tcGlsZUV4cHJlc3Npb24ob3Iobm90KHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpKSwgZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmxldmVsXCIpLCAwKSkpfVxuXHRcdFx0XHRcdHZpc2libGU9e2dldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCh0aGlzLl9kYXRhUG9pbnQuVmFsdWUuJHRhcmdldCl9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudFRydWU6IHRoaXMuY3JlYXRlQ2hhcnRDb250ZW50KCksXG5cdFx0XHRcdFx0XHRjb250ZW50RmFsc2U6IDxUZXh0IHRleHQ9XCIqXCI+PC9UZXh0PlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29uZGl0aW9uYWxXcmFwcGVyPlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlQ2hhcnRDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlQ2hhcnRDb250ZW50KCk6IE1pY3JvQ2hhcnRDb250YWluZXIge1xuXHRcdGNvbnN0IG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0Li4udGhpcy5nZXRNaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcygpLFxuXHRcdFx0YmluZGluZzogdGhpcy5fYmluZGluZ1xuXHRcdH07XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNaWNyb0NoYXJ0Q29udGFpbmVyIHsuLi5taWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllc30+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bWljcm9DaGFydFRpdGxlOiAhdGhpcy5zaG93T25seUNoYXJ0ID8gdGhpcy5jcmVhdGVUaXRsZShtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydFRpdGxlKSA6IHVuZGVmaW5lZFxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NaWNyb0NoYXJ0Q29udGFpbmVyPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXFDS0EsY0FBYywwQkFBZEEsY0FBYztJQUNsQjtBQUNEO0FBQ0E7SUFIS0EsY0FBYztJQU1sQjtBQUNEO0FBQ0E7SUFSS0EsY0FBYztJQVdsQjtBQUNEO0FBQ0E7SUFiS0EsY0FBYztJQUFBLE9BQWRBLGNBQWM7RUFBQSxFQUFkQSxjQUFjO0VBaUJuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQXJCQSxJQXlCcUJDLFVBQVUsSUFBQUMsSUFBQSxHQUg5QkMsY0FBYyxDQUFDLDBCQUEwQixFQUFFO0lBQzNDQyxXQUFXLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSwyQ0FBMkM7RUFDMUcsQ0FBQyxDQUFDLEVBQUFD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
@@ -20,7 +20,7 @@ import type { $ColumnMicroChartSettings } from "sap/suite/ui/microchart/ColumnMi
20
20
  import type { $ComparisonMicroChartSettings } from "sap/suite/ui/microchart/ComparisonMicroChart";
21
21
  import type { $LineMicroChartSettings } from "sap/suite/ui/microchart/LineMicroChart";
22
22
  import type { $StackedBarMicroChartSettings } from "sap/suite/ui/microchart/StackedBarMicroChart";
23
- import type { AggregationBindingInfo } from "sap/ui/base/ManagedObject";
23
+ import type { $ManagedObjectSettings, AggregationBindingInfo } from "sap/ui/base/ManagedObject";
24
24
  import type { $ControlSettings } from "sap/ui/core/Control";
25
25
  import Lib from "sap/ui/core/Lib";
26
26
  import type Context from "sap/ui/model/odata/v4/Context";
@@ -172,6 +172,12 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
172
172
  super(settings, others);
173
173
  }
174
174
 
175
+ override applySettings(mSettings: $ManagedObjectSettings, oScope?: object): this {
176
+ this._doNotCreateOnNullContext = true;
177
+ this._visibilityCheck = true;
178
+ return super.applySettings(mSettings, oScope);
179
+ }
180
+
175
181
  /**
176
182
  * Gets the sortOrder for the microChart as mentioned in the PresentationVariant.
177
183
  * @param sortingProps Sorters from PresentationVariant.
@@ -214,7 +220,6 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
214
220
  *
215
221
  * Clone is a UI5 core Control method, which is not async and is called in a sync manner throughout UI5.
216
222
  * Hence we need to create the chart in a fire and forget fashion.
217
- *
218
223
  * @param idSuffix A suffix to be appended to the cloned element id
219
224
  * @param localIds An array of local IDs within the cloned hierarchy (internally used)
220
225
  * @returns The reference to the newly create clone
@@ -224,6 +229,7 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
224
229
  clonedMicroChart.createMicroChart();
225
230
  return clonedMicroChart;
226
231
  }
232
+
227
233
  public async onMetadataAvailable(_ownerComponent: TemplateComponent): Promise<void> {
228
234
  if (!this.content) {
229
235
  const owner = this._getOwner();