@sapui5/sap.fe.core 1.132.0 → 1.134.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 (212) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +8 -1
  4. package/src/sap/fe/core/AppComponent.ts +9 -0
  5. package/src/sap/fe/core/CommonUtils.js +14 -11
  6. package/src/sap/fe/core/CommonUtils.ts +19 -13
  7. package/src/sap/fe/core/ExtensionAPI.js +22 -2
  8. package/src/sap/fe/core/ExtensionAPI.ts +23 -0
  9. package/src/sap/fe/core/PageController.js +12 -1
  10. package/src/sap/fe/core/PageController.ts +13 -0
  11. package/src/sap/fe/core/TemplateComponent.js +43 -25
  12. package/src/sap/fe/core/TemplateComponent.ts +18 -1
  13. package/src/sap/fe/core/UIProvider.js +1 -1
  14. package/src/sap/fe/core/UIProvider.ts +30 -1
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +38 -14
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +40 -17
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +24 -16
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +33 -20
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +3 -3
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +2 -1
  21. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +11 -11
  22. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +10 -15
  23. package/src/sap/fe/core/controllerextensions/EditFlow.js +153 -53
  24. package/src/sap/fe/core/controllerextensions/EditFlow.ts +178 -55
  25. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -1
  26. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -0
  27. package/src/sap/fe/core/controllerextensions/InternalRouting.js +48 -38
  28. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +53 -40
  29. package/src/sap/fe/core/controllerextensions/MessageHandler.js +25 -13
  30. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +37 -15
  31. package/src/sap/fe/core/controllerextensions/Routing.js +2 -1
  32. package/src/sap/fe/core/controllerextensions/Routing.ts +5 -1
  33. package/src/sap/fe/core/controllerextensions/ViewState.js +47 -19
  34. package/src/sap/fe/core/controllerextensions/ViewState.ts +60 -19
  35. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +16 -8
  36. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +18 -9
  37. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +7 -1
  38. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +6 -0
  39. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +188 -0
  40. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +123 -0
  41. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.js +2 -1
  42. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.tsx +2 -0
  43. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +39 -2
  44. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +61 -8
  45. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.js +41 -9
  46. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.ts +46 -9
  47. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +4 -4
  48. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +3 -3
  49. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +31 -25
  50. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +36 -25
  51. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +44 -30
  52. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +66 -34
  53. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +419 -0
  54. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +515 -0
  55. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +201 -0
  56. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +262 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +204 -0
  58. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +276 -0
  59. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +202 -0
  60. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +244 -0
  61. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +187 -0
  62. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +226 -0
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.js +38 -0
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.ts +32 -0
  65. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +15 -13
  66. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +17 -14
  67. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -5
  68. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +4 -4
  69. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +17 -6
  70. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +21 -6
  71. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  72. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +3 -1
  73. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +2 -2
  74. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.ts +1 -1
  75. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +21 -10
  76. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +35 -13
  77. package/src/sap/fe/core/controls/DataWatcher.js +74 -0
  78. package/src/sap/fe/core/controls/DataWatcher.tsx +54 -0
  79. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +121 -0
  80. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +122 -0
  81. package/src/sap/fe/core/converters/ConverterContext.js +13 -11
  82. package/src/sap/fe/core/converters/ConverterContext.ts +10 -15
  83. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  84. package/src/sap/fe/core/converters/ManifestSettings.ts +23 -1
  85. package/src/sap/fe/core/converters/ManifestWrapper.js +27 -8
  86. package/src/sap/fe/core/converters/ManifestWrapper.ts +36 -11
  87. package/src/sap/fe/core/converters/MetaModelConverter.js +3 -1
  88. package/src/sap/fe/core/converters/MetaModelConverter.ts +2 -0
  89. package/src/sap/fe/core/converters/TemplateConverter.js +6 -5
  90. package/src/sap/fe/core/converters/TemplateConverter.ts +5 -3
  91. package/src/sap/fe/core/converters/common/AnnotationConverter.js +20 -23
  92. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -1
  93. package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -0
  94. package/src/sap/fe/core/converters/controls/Common/Table.js +194 -99
  95. package/src/sap/fe/core/converters/controls/Common/Table.ts +244 -118
  96. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +7 -2
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +12 -6
  98. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +10 -2
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +9 -1
  100. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +9 -6
  101. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +18 -4
  102. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +18 -11
  103. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +33 -11
  104. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -4
  105. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -9
  106. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +16 -10
  107. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +25 -9
  108. package/src/sap/fe/core/designtime/AppComponent.designtime.js +18 -8
  109. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +20 -8
  110. package/src/sap/fe/core/designtime/TextArrangementChangeAction.js +100 -0
  111. package/src/sap/fe/core/designtime/TextArrangementChangeAction.ts +134 -0
  112. package/src/sap/fe/core/formatters/ValueFormatter.js +44 -2
  113. package/src/sap/fe/core/formatters/ValueFormatter.ts +43 -0
  114. package/src/sap/fe/core/fpm/manifest.json +1 -1
  115. package/src/sap/fe/core/helpers/BindingHelper.js +3 -2
  116. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  117. package/src/sap/fe/core/helpers/DeleteHelper.js +6 -5
  118. package/src/sap/fe/core/helpers/DeleteHelper.ts +5 -4
  119. package/src/sap/fe/core/helpers/HTTP503Handler.js +2 -1
  120. package/src/sap/fe/core/helpers/HTTP503Handler.ts +4 -3
  121. package/src/sap/fe/core/helpers/LoaderUtils.js +8 -3
  122. package/src/sap/fe/core/helpers/LoaderUtils.ts +15 -4
  123. package/src/sap/fe/core/helpers/MetaPath.js +6 -2
  124. package/src/sap/fe/core/helpers/MetaPath.ts +9 -3
  125. package/src/sap/fe/core/helpers/ModelHelper.js +17 -11
  126. package/src/sap/fe/core/helpers/ModelHelper.ts +22 -11
  127. package/src/sap/fe/core/helpers/TitleHelper.js +5 -4
  128. package/src/sap/fe/core/helpers/TitleHelper.ts +5 -5
  129. package/src/sap/fe/core/helpers/TypeGuards.js +11 -1
  130. package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
  131. package/src/sap/fe/core/library.js +4 -3
  132. package/src/sap/fe/core/library.ts +3 -0
  133. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +2 -2
  134. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +1 -1
  135. package/src/sap/fe/core/messagebundle.properties +21 -6
  136. package/src/sap/fe/core/messagebundle_ar.properties +12 -2
  137. package/src/sap/fe/core/messagebundle_bg.properties +13 -3
  138. package/src/sap/fe/core/messagebundle_ca.properties +13 -3
  139. package/src/sap/fe/core/messagebundle_cnr.properties +12 -2
  140. package/src/sap/fe/core/messagebundle_cs.properties +16 -6
  141. package/src/sap/fe/core/messagebundle_cy.properties +13 -3
  142. package/src/sap/fe/core/messagebundle_da.properties +12 -2
  143. package/src/sap/fe/core/messagebundle_de.properties +19 -9
  144. package/src/sap/fe/core/messagebundle_el.properties +12 -2
  145. package/src/sap/fe/core/messagebundle_en.properties +12 -2
  146. package/src/sap/fe/core/messagebundle_en_GB.properties +12 -2
  147. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +13 -3
  148. package/src/sap/fe/core/messagebundle_es.properties +12 -2
  149. package/src/sap/fe/core/messagebundle_es_MX.properties +12 -2
  150. package/src/sap/fe/core/messagebundle_et.properties +12 -2
  151. package/src/sap/fe/core/messagebundle_fi.properties +12 -2
  152. package/src/sap/fe/core/messagebundle_fr.properties +10 -0
  153. package/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
  154. package/src/sap/fe/core/messagebundle_hi.properties +12 -2
  155. package/src/sap/fe/core/messagebundle_hr.properties +13 -3
  156. package/src/sap/fe/core/messagebundle_hu.properties +12 -2
  157. package/src/sap/fe/core/messagebundle_id.properties +14 -4
  158. package/src/sap/fe/core/messagebundle_it.properties +12 -2
  159. package/src/sap/fe/core/messagebundle_iw.properties +13 -3
  160. package/src/sap/fe/core/messagebundle_ja.properties +13 -3
  161. package/src/sap/fe/core/messagebundle_kk.properties +12 -2
  162. package/src/sap/fe/core/messagebundle_ko.properties +12 -2
  163. package/src/sap/fe/core/messagebundle_lt.properties +12 -2
  164. package/src/sap/fe/core/messagebundle_lv.properties +12 -2
  165. package/src/sap/fe/core/messagebundle_mk.properties +12 -2
  166. package/src/sap/fe/core/messagebundle_ms.properties +12 -2
  167. package/src/sap/fe/core/messagebundle_nl.properties +12 -2
  168. package/src/sap/fe/core/messagebundle_no.properties +12 -2
  169. package/src/sap/fe/core/messagebundle_pl.properties +12 -2
  170. package/src/sap/fe/core/messagebundle_pt.properties +11 -1
  171. package/src/sap/fe/core/messagebundle_pt_PT.properties +13 -3
  172. package/src/sap/fe/core/messagebundle_ro.properties +12 -2
  173. package/src/sap/fe/core/messagebundle_ru.properties +12 -2
  174. package/src/sap/fe/core/messagebundle_sh.properties +12 -2
  175. package/src/sap/fe/core/messagebundle_sk.properties +13 -3
  176. package/src/sap/fe/core/messagebundle_sl.properties +15 -5
  177. package/src/sap/fe/core/messagebundle_sr.properties +12 -2
  178. package/src/sap/fe/core/messagebundle_sv.properties +12 -2
  179. package/src/sap/fe/core/messagebundle_th.properties +10 -0
  180. package/src/sap/fe/core/messagebundle_tr.properties +13 -3
  181. package/src/sap/fe/core/messagebundle_uk.properties +13 -3
  182. package/src/sap/fe/core/messagebundle_vi.properties +12 -2
  183. package/src/sap/fe/core/messagebundle_zh_CN.properties +13 -3
  184. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -3
  185. package/src/sap/fe/core/operationsHelper.js +2 -1
  186. package/src/sap/fe/core/operationsHelper.ts +2 -0
  187. package/src/sap/fe/core/rootView/Fcl.controller.js +31 -2
  188. package/src/sap/fe/core/rootView/Fcl.controller.ts +42 -7
  189. package/src/sap/fe/core/rootView/RootViewBaseController.js +20 -2
  190. package/src/sap/fe/core/rootView/RootViewBaseController.ts +25 -1
  191. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -1
  192. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -0
  193. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +27 -4
  194. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +31 -5
  195. package/src/sap/fe/core/services/InlineEditServiceFactory.js +237 -0
  196. package/src/sap/fe/core/services/InlineEditServiceFactory.ts +280 -0
  197. package/src/sap/fe/core/services/RoutingServiceFactory.js +65 -13
  198. package/src/sap/fe/core/services/RoutingServiceFactory.ts +82 -16
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +8 -8
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +14 -10
  201. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +2 -0
  203. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  204. package/src/sap/fe/core/templating/PropertyHelper.ts +0 -1
  205. package/src/sap/fe/core/templating/UIFormatters.js +30 -7
  206. package/src/sap/fe/core/templating/UIFormatters.ts +30 -7
  207. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.js +0 -107
  208. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.ts +0 -102
  209. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +0 -237
  210. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +0 -256
  211. package/src/sap/fe/core/controllerextensions/editFlow/InlineEditHelper.js +0 -57
  212. package/src/sap/fe/core/controllerextensions/editFlow/InlineEditHelper.ts +0 -47
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.132.0",
3
+ "version": "1.134.0",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.132.0</version>
9
+ <version>1.134.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -108,6 +108,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
108
108
  ContextSharingService: {
109
109
  factoryName: "sap.fe.core.services.ContextSharingService",
110
110
  startup: "waitFor"
111
+ },
112
+ inlineEditService: {
113
+ factoryName: "sap.fe.core.services.InlineEditService",
114
+ startup: "waitFor"
111
115
  }
112
116
  },
113
117
  rootView: {
@@ -465,6 +469,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
465
469
  _proto.getValueHelpHistoryService = function getValueHelpHistoryService() {
466
470
  return {};
467
471
  };
472
+ _proto.getInlineEditService = function getInlineEditService() {
473
+ return {};
474
+ };
468
475
  _proto.getStartupParameters = async function getStartupParameters() {
469
476
  const oComponentData = this.getComponentData();
470
477
  return Promise.resolve(oComponentData && oComponentData.startupParameters || {});
@@ -568,4 +575,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
568
575
  }), _class2)) || _class);
569
576
  return AppComponent;
570
577
  }, false);
571
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwic2V0dGluZ3MiLCJidW5kbGVzIiwibW9kZWxOYW1lIiwicm91dGluZ1NlcnZpY2UiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsInRlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwidHlwZSIsImFzeW5jIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQXBwQ29tcG9uZW50IiwiX1VJQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfc3RhcnRlZFNlcnZpY2VzIiwiaXNBZGFwdGF0aW9uRW5hYmxlZCIsImlzRXhpdGluZyIsInBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2lzRmNsRW5hYmxlZCIsIm9NYW5pZmVzdFVJNSIsImdldE1hbmlmZXN0RW50cnkiLCJzZXRBZGFwdGF0aW9uTW9kZSIsImlzQWRhcHRhdGlvbk1vZGUiLCJpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNoYW5nZVBhZ2VDb25maWd1cmF0aW9uIiwicGFnZUlkIiwicGF0aCIsInZhbHVlIiwiY2hhbmdlQ29uZmlndXJhdGlvbiIsImdldE1hbmlmZXN0IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzZXRDYXBhYmlsaXR5IiwiY2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJnZXRSb3V0ZXJQcm94eSIsIl9vUm91dGVyUHJveHkiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJfb0FwcFN0YXRlSGFuZGxlciIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImdldFJvb3RDb250YWluZXIiLCJnZXRDb250ZW50IiwiZ2V0U3RhcnR1cE1vZGUiLCJzZXRTdGFydHVwTW9kZUNyZWF0ZSIsIkNyZWF0ZSIsInNldFN0YXJ0dXBNb2RlQXV0b0NyZWF0ZSIsIkF1dG9DcmVhdGUiLCJzZXRTdGFydHVwTW9kZURlZXBsaW5rIiwiRGVlcGxpbmsiLCJpbml0IiwiX2luaXRpYWxpemVkS2VlcGVyIiwiUHJvbWlzZUtlZXBlciIsImluaXRpYWxpemVkIiwicHJvbWlzZSIsInVpTW9kZWwiLCJKU09OTW9kZWwiLCJlZGl0TW9kZSIsIkVkaXRNb2RlIiwiRGlzcGxheSIsImlzRWRpdGFibGUiLCJkcmFmdFN0YXR1cyIsIkRyYWZ0U3RhdHVzIiwiQ2xlYXIiLCJidXN5IiwiYnVzeUxvY2FsIiwicGFnZXMiLCJvSW50ZXJuYWxNb2RlbCIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIk1vZGVsSGVscGVyIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJiSW5pdGlhbGl6ZVJvdXRpbmciLCJ1bmRlZmluZWQiLCJSb3V0ZXJQcm94eSIsIkFwcFN0YXRlSGFuZGxlciIsIl9vRGlhZ25vc3RpY3MiLCJEaWFnbm9zdGljcyIsIm9Nb2RlbCIsImdldE1vZGVsIiwiaXNBIiwiZW5oYW5jZU9EYXRhTW9kZWwiLCJzZXRSZXRyeUFmdGVySGFuZGxlciIsImh0dHA1MDNSZXRyeUhhbmRsZXIiLCJiaW5kIiwiZW50aXR5Q29udGFpbmVyIiwiZ2V0TWV0YU1vZGVsIiwicmVxdWVzdE9iamVjdCIsImFwcCIsImRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQiLCJjaGVja1JvdXRpbmdDb25maWd1cmF0aW9uIiwiaW5zdGFuY2VNYXAiLCJnZXRJZCIsImVycm9yIiwiSFRUUDUwM0hhbmRsZXIiLCJoYW5kbGU1MDNEZWxheSIsImdldFJlc291cmNlTW9kZWwiLCJMb2ciLCJpbmZvIiwiaW5jbHVkZXMiLCJFcnJvciIsIm9uU2VydmljZXNTdGFydGVkIiwiYWxsU2VydmljZXMiLCJhbGxTZXR0bGVkIiwiaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMiLCJtYXAiLCJmblByb2Nlc3MiLCJmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImluaXRpYWxpemUiLCJnZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsInJlZ2lzdGVyU2hlbGxIb29rIiwiY2F0Y2giLCJvUmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsInRvU3RyaW5nIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsInVucmVnaXN0ZXJTdGlja3lTZXNzaW9uQ2FsbGJhY2tzIiwid2luZG93IiwiX3JvdXRpbmciLCJlIiwib01haW5Nb2RlbCIsIm9Nb2RlbHMiLCJvSGVhZGVycyIsIm9SZXF1ZXN0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJtSGVhZGVycyIsImJlZm9yZUV4aXQiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsImdldENvbnRleHRTaGFyaW5nU2VydmljZSIsImdldFRlbGVtZXRyeVNlcnZpY2UiLCJnZXRTdGFydHVwUGFyYW1ldGVycyIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwicmVzdG9yZSIsInN0YXJ0ZWRTZXJ2aWNlIiwib25SZXN0b3JlIiwidmlld1N0YXRlIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsInN1c3BlbmQiLCJvblN1c3BlbmQiLCJuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwiX21hbmFnZURlZXBMaW5rU3RhcnR1cCIsImV4Y2VwdGlvbiIsInVubG9jayIsImlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCIsInJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcCIsInB1c2giLCJyZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MiLCJkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayIsInNlc3Npb25UaW1lb3V0Q2FsbGJhY2siLCJkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2siLCJzdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayIsInJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIiwic3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayIsImF0dGFjaFNlc3Npb25UaW1lb3V0Iiwic3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrIiwiYXR0YWNoUm91dGVNYXRjaGVkIiwiZGVyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciIsImRldGFjaFNlc3Npb25UaW1lb3V0IiwiZGV0YWNoUm91dGVNYXRjaGVkIiwiVUlDb21wb25lbnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcENvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEZsZXhpYmxlQ29sdW1uTGF5b3V0IGZyb20gXCJzYXAvZi9GbGV4aWJsZUNvbHVtbkxheW91dFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGltcGxlbWVudEludGVyZmFjZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBBcHBTdGF0ZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0FwcFN0YXRlSGFuZGxlclwiO1xuaW1wb3J0IFJvdXRlclByb3h5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9yb3V0aW5nL1JvdXRlclByb3h5XCI7XG5pbXBvcnQgSFRUUDUwM0hhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvSFRUUDUwM0hhbmRsZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFByb21pc2VLZWVwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUHJvbWlzZUtlZXBlclwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB7IGNoYW5nZUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvbWFuaWZlc3RNZXJnZXIvQ2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIFJvb3RWaWV3QmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L1Jvb3RWaWV3QmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0U2hhcmluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVsZW1ldHJ5U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9jb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERpYWdub3N0aWNzIGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSBOYXZDb250YWluZXIgZnJvbSBcInNhcC9tL05hdkNvbnRhaW5lclwiO1xuaW1wb3J0IFJvdXRlciBmcm9tIFwic2FwL20vcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RDb250ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IElBc3luY0NvbnRlbnRDcmVhdGlvbiB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBkZWxldGVNb2RlbENhY2hlRGF0YSB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5cbmNvbnN0IFN0YXJ0dXBNb2RlID0gbGlicmFyeS5TdGFydHVwTW9kZTtcbmNvbnN0IE5BVkNPTkYgPSB7XG5cdEZDTDoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbFwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLmYucm91dGluZy5Sb3V0ZXJcIlxuXHR9LFxuXHROQVZDT05UQUlORVI6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5OYXZDb250YWluZXJcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50RGF0YSA9IHtcblx0c3RhcnR1cFBhcmFtZXRlcnM/OiBTdGFydHVwUGFyYW1ldGVycztcblx0Ly9mZUVudmlyb25tZW50IGlzIG9iamVjdCB3aGljaCBpcyByZWNlaXZlZCBhcyBhIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBkYXRhIGZvciBNeSBJbmJveCBhcHBsaWNhdGlvbnMuXG5cdGZlRW52aXJvbm1lbnQ/OiB7XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldEludGVudCgpIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNlbWFudGljT2JqZWN0IGFuZCBhY3Rpb24gYXMgc2VwYXJhdGUgcHJvcGVydHktdmFsdWUgZW50cmllcyB0aGF0IGFyZSB0aGVuIHVzZWQgdG8gdXBkYXRlIHRoZSByZWxhdGVkIGFwcHMgYnV0dG9uLlxuXHRcdGdldEludGVudDogRnVuY3Rpb247XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHkoKSB0aGF0IHJldHVybnMgYm9vbGVhbiB2YWx1ZXModHJ1ZSBvciBmYWxzZSkgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgc2hhcmUgYnV0dG9uLlxuXHRcdGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHk6IEZ1bmN0aW9uO1xuXHR9O1xufTtcbi8vIEtlZXAgYSByZWZlcmVuY2Ugc28gYXMgdG8ga2VlcCB0aGUgaW1wb3J0IGRlc3BpdGUgaXQgbm90IGJlaW5nIGRpcmVjdGx5IHVzZWRcbmNvbnN0IF9tUm91dGVyID0gUm91dGVyO1xuXG5leHBvcnQgdHlwZSBTdGFydHVwUGFyYW1ldGVycyA9IHtcblx0cHJlZmVycmVkTW9kZT86IHN0cmluZ1tdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd25bXT47XG4vKipcbiAqIE1haW4gY2xhc3MgZm9yIGNvbXBvbmVudHMgdXNlZCBmb3IgYW4gYXBwbGljYXRpb24gaW4gU0FQIEZpb3JpIGVsZW1lbnRzLlxuICpcbiAqIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdXNpbmcgdGhlIHRlbXBsYXRlcyBhbmQgYnVpbGRpbmcgYmxvY2tzIHByb3ZpZGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cyBzaG91bGQgY3JlYXRlIHRoZWlyIGFwcHMgYnkgZXh0ZW5kaW5nIHRoaXMgY29tcG9uZW50LlxuICogVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc2VydmljZXMgdGhhdCB5b3UgbmVlZCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdGVtcGxhdGVzIHRvIHdvcmsgcHJvcGVybHkgYXJlIHN0YXJ0ZWQuXG4gKlxuICogV2hlbiB5b3UgdXNlIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCBhcyB0aGUgYmFzZSBjb21wb25lbnQsIHlvdSBhbHNvIG5lZWQgdG8gdXNlIGEgcm9vdFZpZXcuIFNBUCBGaW9yaSBlbGVtZW50cyBwcm92aWRlcyB0d28gb3B0aW9uczogPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyIHdoZW4gdXNpbmcgc2FwLm0ucm91dGluZy5Sb3V0ZXIgPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiLFxuXHRcdFx0XHRcdHNldHRpbmdzOiB7XG5cdFx0XHRcdFx0XHRidW5kbGVzOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJvdXRpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGVsbFNlcnZpY2VzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFNoZWxsVUlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLnVzaGVsbC51aTVzZXJ2aWNlLlNoZWxsVUlTZXJ2aWNlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0bmF2aWdhdGlvblNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudmlyb25tZW50Q2FwYWJpbGl0aWVzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2lkZUVmZmVjdHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2lkZUVmZmVjdHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0YXN5bmNDb21wb25lbnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQXN5bmNDb21wb25lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGl2ZVRvb2xzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0ZWxlbWV0cnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVGVsZW1ldHJ5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbnRleHRTaGFyaW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbnRleHRTaGFyaW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQgaW1wbGVtZW50cyBJQXN5bmNDb250ZW50Q3JlYXRpb24ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUFzeW5jQ29udGVudENyZWF0aW9uID0gdHJ1ZTtcblxuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ZWRTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIF9pbml0aWFsaXplZEtlZXBlciE6IFByb21pc2VLZWVwZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBpc0FkYXB0YXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0cHVibGljIGlzRXhpdGluZyA9IGZhbHNlO1xuXG5cdHB1YmxpYyBwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG5cdHByaXZhdGUgc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBTaW5nbGV0b24gdG8gaG9sZCBwcm9jZXNzZXMgZnJvbSBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzOiAoKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KVtdID0gW107XG5cblx0X2lzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpO1xuXHRcdHJldHVybiBvTWFuaWZlc3RVSTU/LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTO1xuXHR9XG5cblx0c2V0QWRhcHRhdGlvbk1vZGUoaXNBZGFwdGF0aW9uRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZCA9IGlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24sIHVzZSB0aGUge0BsaW5rIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbn0gbWV0aG9kLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRob3V0IGFueSB2YWx1ZSB0byBhbGxvdyBhc3luY2hyb25vdXMgcHJvY2Vzc2VzXG5cdCAqL1xuXHRhc3luYyBpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYXBwbGljYXRpb25zXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgeW91IHRvIGNoYW5nZSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICogQHBhcmFtIHBhZ2VJZCBUaGUgSUQgb2YgdGhlIHBhZ2UgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGluIHRoZSBwYWdlIHNldHRpbmdzIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHBsYWluIHZhbHVlIGxpa2UgYSBzdHJpbmcsIG9yIGEgQm9vbGVhbiwgb3IgYSBzdHJ1Y3R1cmVkIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Y2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24ocGFnZUlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCBtYW5pZmVzdCA9IGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlLCB0aGlzKSBhcyBNYW5pZmVzdENvbnRlbnQ7XG5cdFx0aWYgKFxuXHRcdFx0cGF0aCA9PT0gXCJhcHAvZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiICYmXG5cdFx0XHQobWFuaWZlc3Q/LltcInNhcC5mZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4pPy5bXCJhcHBcIl0/LltcImRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIl0gPT09IHZhbHVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuc2V0Q2FwYWJpbGl0eShcIkRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbnMgYWxsIHJlZ2lzdGVyZWQgcGFnZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cdCAqL1xuXHRjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHkuXG5cdCAqIEByZXR1cm5zIEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCk6IEFwcFN0YXRlSGFuZGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCk6IE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRlbnQoKVswXSBhcyBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHN0YXJ0dXAgbW9kZSBvZiB0aGUgYXBwLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBtb2RlXG5cdCAqL1xuXHRnZXRTdGFydHVwTW9kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnN0YXJ0dXBNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdDcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVDcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkNyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQXV0b0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkF1dG9DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlciA9IG5ldyBQcm9taXNlS2VlcGVyPHZvaWQ+KCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnByb21pc2U7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0ZWRpdE1vZGU6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSxcblx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0ZHJhZnRTdGF0dXM6IGxpYnJhcnkuRHJhZnRTdGF0dXMuQ2xlYXIsXG5cdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Ly8gc2V0IHRoZSBiaW5kaW5nIE9uZVdheSBmb3IgdWlNb2RlbCB0byBwcmV2ZW50IGNoYW5nZXMgaWYgY29udHJvbGxlciBleHRlbnNpb25zIG1vZGlmeSBhIGJvdW5kIHByb3BlcnR5IG9mIGEgY29udHJvbFxuXHRcdHVpTW9kZWwuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdC8vIGZvciBpbnRlcm5hbCBtb2RlbCBiaW5kaW5nIG5lZWRzIHRvIGJlIHR3byB3YXlcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVWlKU09OTW9kZWwodWlNb2RlbCwgbGlicmFyeSk7XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwodWlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXG5cdFx0dGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgPSB0aGlzLmJJbml0aWFsaXplUm91dGluZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgOiB0cnVlO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eSA9IG5ldyBSb3V0ZXJQcm94eSgpO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIgPSBuZXcgQXBwU3RhdGVIYW5kbGVyKHRoaXMpO1xuXHRcdHRoaXMuX29EaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRcdGlmIChvTW9kZWw/LmlzQT8uPE9EYXRhTW9kZWw+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIikpIHtcblx0XHRcdE1vZGVsSGVscGVyLmVuaGFuY2VPRGF0YU1vZGVsKG9Nb2RlbCwgdGhpcyk7XG5cdFx0XHRvTW9kZWwuc2V0UmV0cnlBZnRlckhhbmRsZXIodGhpcy5odHRwNTAzUmV0cnlIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbm90IGFuIE9EYXRhIHY0IHNlcnZpY2Vcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8uYXBwPy5kaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0KSB7XG5cdFx0XHQvLyBkaXNhYmxlIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGdsb2JhbGx5IGluIGNhc2UgcHJpdmF0ZSBtYW5pZmVzdCBmbGFnIGlzIHNldFxuXHRcdFx0Ly8gdGhpcyBhbGxvd3MgY3VzdG9tZXJzIHRvIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaW4gY2FzZSB3ZSBydW4gaW50byBpc3N1ZXMgd2l0aCB0aGUgZmlyc3QgZGVsaXZlcnlcblx0XHRcdC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdpdGggdGhlIG5leHQgUy80IHJlbGVhc2Vcblx0XHRcdE1vZGVsSGVscGVyLmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3QoKVtcInNhcC51aTVcIl07XG5cdFx0dGhpcy5jaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNSk7XG5cblx0XHQvLyB0aGUgaW5pdCBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSByb3V0aW5nIGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgYWJvdmVcblx0XHQvLyBpdCB3aWxsIGNhbGwgdGhlIGNyZWF0ZUNvbnRlbnQgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgdGhlIFJvb3RWaWV3IGFuZCBhZGQgaXQgdG8gdGhlIFVJQ29tcG9uZW50IGFnZ3JlZ2F0aW9uc1xuXG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldID0gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgaHR0cDUwM1JldHJ5SGFuZGxlcihlcnJvcjogRXJyb3IgJiB7IHJldHJ5QWZ0ZXI/OiBEYXRlIH0pOiBQcm9taXNlPHVuZGVmaW5lZD4ge1xuXHRcdHJldHVybiBIVFRQNTAzSGFuZGxlci5oYW5kbGU1MDNEZWxheShlcnJvciwgdGhpcy5nZXRSb290Q29udHJvbCgpLCBnZXRSZXNvdXJjZU1vZGVsKHRoaXMpKTtcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTU6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0pOiB2b2lkIHtcblx0XHRpZiAob01hbmlmZXN0VUk1Py5yb290Vmlldz8udmlld05hbWUpIHtcblx0XHRcdC8vIFRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpZWQgYW4gb3duIHJvb3QgdmlldyBpbiB0aGUgbWFuaWZlc3RcblxuXHRcdFx0Ly8gUm9vdCBWaWV3IHdhcyBtb3ZlZCBmcm9tIHNhcC5mZS50ZW1wbGF0ZXMgdG8gc2FwLmZlLmNvcmUgLSBrZWVwIGl0IGNvbXBhdGlibGVcblx0XHRcdGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5GQ0wuVklFV05BTUU7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLkZDTC5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5GQ0wuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldz8udmlld05hbWU/LmluY2x1ZGVzKFwic2FwLmZlLmNvcmUucm9vdFZpZXdcIikpIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0YFxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcbmAgK1xuXHRcdFx0XHRcdFx0YEN1cnJlbnQgdmFsdWVzIGFyZSA6KCR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfS8ke1xuXHRcdFx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyB8fCBcIjxtaXNzaW5nIHJvdXRlciBjbGFzcz5cIlxuXHRcdFx0XHRcdFx0fSlcXG5gICtcblx0XHRcdFx0XHRcdGBFeHBlY3RlZCB2YWx1ZXMgYXJlIFxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfS8ke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfSlcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLkZDTC5WSUVXTkFNRX0vJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU30pYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgb25TZXJ2aWNlc1N0YXJ0ZWQoYWxsU2VydmljZXM6IFNlcnZpY2U8dW5rbm93bj5bXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcyA9IGFsbFNlcnZpY2VzO1xuXHRcdGF3YWl0IHRoaXMuaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzKCk7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLm1hcChhc3luYyAoZm5Qcm9jZXNzKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmblByb2Nlc3MuY2FsbChudWxsLCB0aGlzKTtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpLnJlZ2lzdGVyU2hlbGxIb29rKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuZGlzcGxheUVycm9yUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKClcblx0XHRcdFx0LmluaXRpYWxpemVSb3V0aW5nKClcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpKSB7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Q29udHJvbCgpLmF0dGFjaEFmdGVySW5pdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyOiBFcnJvcikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6ICR7ZXJyLnRvU3RyaW5nKCl9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBbXTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdFx0dGhpcy5jbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogRGlhZ25vc3RpY3Mge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0V4aXRpbmcgPSB0cnVlO1xuXG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMudW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoKTtcblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgdW5rbm93bikuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gdGhpcy5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsPy5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0Py4oKTtcblx0XHRzdXBlci5kZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXG5cdGdldFJvdXRpbmdTZXJ2aWNlKCk6IFJvdXRpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgUm91dGluZ1NlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk6IFNpZGVFZmZlY3RzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFNpZGVFZmZlY3RzU2VydmljZTtcblx0fVxuXG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSgpOiBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpOiBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZTtcblx0fVxuXG5cdGdldENvbnRleHRTaGFyaW5nU2VydmljZSgpOiBDb250ZXh0U2hhcmluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb250ZXh0U2hhcmluZ1NlcnZpY2U7XG5cdH1cblxuXHRnZXRUZWxlbWV0cnlTZXJ2aWNlKCk6IFRlbGVtZXRyeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBUZWxlbWV0cnlTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UoKTogVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZTtcblx0fVxuXG5cdGFzeW5jIGdldFN0YXJ0dXBQYXJhbWV0ZXJzKCk6IFByb21pc2U8U3RhcnR1cFBhcmFtZXRlcnM+IHtcblx0XHRjb25zdCBvQ29tcG9uZW50RGF0YSA9IHRoaXMuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fSk7XG5cdH1cblxuXHRyZXN0b3JlKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHJlc3RvcmVkXG5cdFx0Zm9yIChjb25zdCBzdGFydGVkU2VydmljZSBvZiB0aGlzLl9zdGFydGVkU2VydmljZXMpIHtcblx0XHRcdHN0YXJ0ZWRTZXJ2aWNlLm9uUmVzdG9yZT8uKCk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkudmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXG5cdFx0Ly8gUmVzZXQgYWxsIHZhbHVlcyBpbiB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1cyB0byBmYWxzZVxuXHRcdEFwcFN0YXRlSGFuZGxlci5yZXNldFZlcnNpb25BY3RpdmF0aW9uU3RhdHVzKCk7XG5cdH1cblxuXHRzdXNwZW5kKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHN1c3BlbmRlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblN1c3BlbmQ/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIGZ1bmN0aW9uIGlzIGEgcHVibGljIGFwaSB0aGF0IGFjdHMgYXMgYSB3cmFwcGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uIEl0IHBhc3NlcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGZ1cnRoZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvblxuXHQgKiBAcGFyYW0gc3RhcnR1cFBhcmFtZXRlcnMgRGVmaW5lcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIHdoaWNoIGlzIGZ1cnRoZXIgcGFzc2VkIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uXG5cdCAqL1xuXG5cdGFzeW5jIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIoc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIUJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcy5nZXRNb2RlbChcInVpXCIpKSkge1xuXHRcdFx0XHRpZiAoIXN0YXJ0dXBQYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0c3RhcnR1cFBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJvdXRpbmdTZXJ2aWNlID0gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpO1xuXHRcdFx0XHRhd2FpdCByb3V0aW5nU2VydmljZS5fbWFuYWdlRGVlcExpbmtTdGFydHVwKHN0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChleGNlcHRpb246IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihleGNlcHRpb24gYXMgc3RyaW5nKTtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gYWxsb3cgZGlzYWJsaW5nIHRoZSBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgaW50ZWdyYXRpb24gZm9yIHRoZSBPVlAgdXNlIGNhc2UuXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbGxhYm9yYXRpb24gbWFuYWdlciBzZXJ2aWNlIGlzIGFjdGl2ZS5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBwcm9jZXNzZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICogQHBhcmFtIGZuUHJvY2VzcyBGdW5jdGlvbiB0aGF0IGhvbGQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9jZXNzLlxuXHQgKlxuXHQgKiBUaGUgcmVnaXN0ZXJlZCBwcm9jZXNzIGNhbiBiZSBhbiBhc3luY2hyb25vdXMgcHJvY2Vzcy5cblx0ICogSXQgc2hhbGwgYmUgY2FsbGVkIHdpdGggdGhlIEFwcENvbXBvbmVudCBpbnN0YW5jZSBhcyBhIHBhcmFtZXRlciBiZWZvcmUgc3RhcnR1cC5cblx0ICovXG5cdHN0YXRpYyByZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAoZm5Qcm9jZXNzOiAoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcblx0XHR0aGlzLmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICogQHBhcmFtIGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrXG5cdCAqIEBwYXJhbSBzZXNzaW9uVGltZW91dENhbGxiYWNrXG5cdCAqIEBwYXJhbSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2tcblx0ICovXG5cdHJlZ2lzdGVyU3RpY2t5U2Vzc2lvbkNhbGxiYWNrcyhcblx0XHRkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjazogRnVuY3Rpb24sXG5cdFx0c2Vzc2lvblRpbWVvdXRDYWxsYmFjazogRnVuY3Rpb24sXG5cdFx0ZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrOiBGdW5jdGlvblxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spO1xuXG5cdFx0dGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrID0gc2Vzc2lvblRpbWVvdXRDYWxsYmFjaztcblx0XHR0aGlzLmdldE1vZGVsKCkuYXR0YWNoU2Vzc2lvblRpbWVvdXQoc2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cblx0XHR0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayA9IGRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaztcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYXR0YWNoUm91dGVNYXRjaGVkKHt9LCBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2spO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVucmVnaXN0ZXJzIHRoZSBjYWxsYmFja3MgcmVsYXRlZCB0byBhIHN0aWNreSBlZGl0IHNlc3Npb24uXG5cdCAqL1xuXHR1bnJlZ2lzdGVyU3RpY2t5U2Vzc2lvbkNhbGxiYWNrcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkuZGVyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcih0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgJiYgdGhpcy5nZXRNb2RlbCgpKSB7XG5cdFx0XHR0aGlzLmdldE1vZGVsKCkuZGV0YWNoU2Vzc2lvblRpbWVvdXQodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuZGV0YWNoUm91dGVNYXRjaGVkKHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxufVxuXG5pbnRlcmZhY2UgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW47XG5cdGdldE1hbmlmZXN0KCk6IE1hbmlmZXN0Q29udGVudDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuYXBwXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdF9nZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIiwgbWVyZ2VkOiBib29sZWFuKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSB8IHVuZGVmaW5lZDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmlvcmlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5maW9yaVwiXTtcblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBDb21wb25lbnREYXRhO1xuXHRnZXRSb290Q29udHJvbCgpOiB7XG5cdFx0Z2V0Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyO1xuXHR9ICYgVmlldztcblx0Z2V0TW9kZWwoKTogT0RhdGFNb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogXCJ1aVwiKTogSlNPTk1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1Q0EsTUFBTUEsV0FBVyxHQUFHQyxPQUFPLENBQUNELFdBQVc7RUFDdkMsTUFB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
578
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwic2V0dGluZ3MiLCJidW5kbGVzIiwibW9kZWxOYW1lIiwicm91dGluZ1NlcnZpY2UiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsInRlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJpbmxpbmVFZGl0U2VydmljZSIsInJvb3RWaWV3Iiwidmlld05hbWUiLCJ0eXBlIiwiYXN5bmMiLCJpZCIsInJvdXRpbmciLCJjb250cm9sSWQiLCJyb3V0ZXJDbGFzcyIsInZpZXdUeXBlIiwiY29udHJvbEFnZ3JlZ2F0aW9uIiwiY29udGFpbmVyT3B0aW9ucyIsInByb3BhZ2F0ZU1vZGVsIiwiZGVzaWdudGltZSIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9BcHBDb21wb25lbnQiLCJfVUlDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJzdGFydHVwTW9kZSIsIk5vcm1hbCIsIl9zdGFydGVkU2VydmljZXMiLCJpc0FkYXB0YXRpb25FbmFibGVkIiwiaXNFeGl0aW5nIiwicGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJfaXNGY2xFbmFibGVkIiwib01hbmlmZXN0VUk1IiwiZ2V0TWFuaWZlc3RFbnRyeSIsInNldEFkYXB0YXRpb25Nb2RlIiwiaXNBZGFwdGF0aW9uTW9kZSIsImluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24iLCJwYWdlSWQiLCJwYXRoIiwidmFsdWUiLCJjaGFuZ2VDb25maWd1cmF0aW9uIiwiZ2V0TWFuaWZlc3QiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsInNldENhcGFiaWxpdHkiLCJjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyIsImdldFJvdXRlclByb3h5IiwiX29Sb3V0ZXJQcm94eSIsImdldEFwcFN0YXRlSGFuZGxlciIsIl9vQXBwU3RhdGVIYW5kbGVyIiwiZ2V0Um9vdFZpZXdDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRhaW5lciIsImdldENvbnRlbnQiLCJnZXRTdGFydHVwTW9kZSIsInNldFN0YXJ0dXBNb2RlQ3JlYXRlIiwiQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVBdXRvQ3JlYXRlIiwiQXV0b0NyZWF0ZSIsInNldFN0YXJ0dXBNb2RlRGVlcGxpbmsiLCJEZWVwbGluayIsImluaXQiLCJfaW5pdGlhbGl6ZWRLZWVwZXIiLCJQcm9taXNlS2VlcGVyIiwiaW5pdGlhbGl6ZWQiLCJwcm9taXNlIiwidWlNb2RlbCIsIkpTT05Nb2RlbCIsImVkaXRNb2RlIiwiRWRpdE1vZGUiLCJEaXNwbGF5IiwiaXNFZGl0YWJsZSIsImRyYWZ0U3RhdHVzIiwiRHJhZnRTdGF0dXMiLCJDbGVhciIsImJ1c3kiLCJidXN5TG9jYWwiLCJwYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVWlKU09OTW9kZWwiLCJlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwiLCJzZXRNb2RlbCIsImJJbml0aWFsaXplUm91dGluZyIsInVuZGVmaW5lZCIsIlJvdXRlclByb3h5IiwiQXBwU3RhdGVIYW5kbGVyIiwiX29EaWFnbm9zdGljcyIsIkRpYWdub3N0aWNzIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJpc0EiLCJlbmhhbmNlT0RhdGFNb2RlbCIsInNldFJldHJ5QWZ0ZXJIYW5kbGVyIiwiaHR0cDUwM1JldHJ5SGFuZGxlciIsImJpbmQiLCJlbnRpdHlDb250YWluZXIiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0T2JqZWN0IiwiYXBwIiwiZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCIsImNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24iLCJpbnN0YW5jZU1hcCIsImdldElkIiwiZXJyb3IiLCJIVFRQNTAzSGFuZGxlciIsImhhbmRsZTUwM0RlbGF5IiwiZ2V0UmVzb3VyY2VNb2RlbCIsIkxvZyIsImluZm8iLCJpbmNsdWRlcyIsIkVycm9yIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJhbGxTZXJ2aWNlcyIsImFsbFNldHRsZWQiLCJpbnN0YW5jZURlcGVuZGVudFByb2Nlc3NlcyIsIm1hcCIsImZuUHJvY2VzcyIsImZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiIsInRoZW4iLCJhdHRhY2hSb3V0ZU1hdGNoZXJzIiwiZ2V0Um91dGVyIiwiaW5pdGlhbGl6ZSIsImdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIiwicmVnaXN0ZXJTaGVsbEhvb2siLCJjYXRjaCIsIm9SZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImRpc3BsYXlFcnJvclBhZ2UiLCJnZXRUZXh0IiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm1lc3NhZ2UiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwidG9TdHJpbmciLCJleGl0IiwiZGVzdHJveSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiZ2V0RGlhZ25vc3RpY3MiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwidW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MiLCJ3aW5kb3ciLCJfcm91dGluZyIsImUiLCJvTWFpbk1vZGVsIiwib01vZGVscyIsIm9IZWFkZXJzIiwib1JlcXVlc3RvciIsIk9iamVjdCIsImFzc2lnbiIsIm1IZWFkZXJzIiwiYmVmb3JlRXhpdCIsImdldFNoZWxsU2VydmljZXMiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSIsImdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiZ2V0Q29udGV4dFNoYXJpbmdTZXJ2aWNlIiwiZ2V0VGVsZW1ldHJ5U2VydmljZSIsImdldElubGluZUVkaXRTZXJ2aWNlIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJzdGFydHVwUGFyYW1ldGVycyIsInJlc3RvcmUiLCJzdGFydGVkU2VydmljZSIsIm9uUmVzdG9yZSIsInZpZXdTdGF0ZSIsInJlc2V0VmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJzdXNwZW5kIiwib25TdXNwZW5kIiwibmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlciIsIkJ1c3lMb2NrZXIiLCJpc0xvY2tlZCIsIl9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAiLCJleGNlcHRpb24iLCJ1bmxvY2siLCJpc0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUVuYWJsZWQiLCJyZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAiLCJwdXNoIiwicmVnaXN0ZXJTdGlja3lTZXNzaW9uQ2FsbGJhY2tzIiwiZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2siLCJzZXNzaW9uVGltZW91dENhbGxiYWNrIiwiZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrIiwic3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2siLCJyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciIsInN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2siLCJhdHRhY2hTZXNzaW9uVGltZW91dCIsInN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayIsImF0dGFjaFJvdXRlTWF0Y2hlZCIsImRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJkZXRhY2hTZXNzaW9uVGltZW91dCIsImRldGFjaFJvdXRlTWF0Y2hlZCIsIlVJQ29tcG9uZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBcHBDb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBGbGV4aWJsZUNvbHVtbkxheW91dCBmcm9tIFwic2FwL2YvRmxleGlibGVDb2x1bW5MYXlvdXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQXBwU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9BcHBTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEhUVFA1MDNIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0hUVFA1MDNIYW5kbGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBjaGFuZ2VDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL21hbmlmZXN0TWVyZ2VyL0NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBSb290Vmlld0Jhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dFNoYXJpbmdTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbnRleHRTaGFyaW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0Vudmlyb25tZW50U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSW5saW5lRWRpdFNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL2NvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgUm91dGVyIGZyb20gXCJzYXAvbS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwiLi9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9WYWx1ZUhlbHBIaXN0b3J5U2VydmljZUZhY3RvcnlcIjtcblxuY29uc3QgU3RhcnR1cE1vZGUgPSBsaWJyYXJ5LlN0YXJ0dXBNb2RlO1xuY29uc3QgTkFWQ09ORiA9IHtcblx0RkNMOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLm0ucm91dGluZy5Sb3V0ZXJcIlxuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnREYXRhID0ge1xuXHRzdGFydHVwUGFyYW1ldGVycz86IFN0YXJ0dXBQYXJhbWV0ZXJzO1xuXHQvL2ZlRW52aXJvbm1lbnQgaXMgb2JqZWN0IHdoaWNoIGlzIHJlY2VpdmVkIGFzIGEgcGFydCBvZiB0aGUgY29tcG9uZW50IGRhdGEgZm9yIE15IEluYm94IGFwcGxpY2F0aW9ucy5cblx0ZmVFbnZpcm9ubWVudD86IHtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0SW50ZW50KCkgd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VtYW50aWNPYmplY3QgYW5kIGFjdGlvbiBhcyBzZXBhcmF0ZSBwcm9wZXJ0eS12YWx1ZSBlbnRyaWVzIHRoYXQgYXJlIHRoZW4gdXNlZCB0byB1cGRhdGUgdGhlIHJlbGF0ZWQgYXBwcyBidXR0b24uXG5cdFx0Z2V0SW50ZW50OiBGdW5jdGlvbjtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eSgpIHRoYXQgcmV0dXJucyBib29sZWFuIHZhbHVlcyh0cnVlIG9yIGZhbHNlKSB3aGljaCBkZXRlcm1pbmVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzaGFyZSBidXR0b24uXG5cdFx0Z2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eTogRnVuY3Rpb247XG5cdH07XG59O1xuLy8gS2VlcCBhIHJlZmVyZW5jZSBzbyBhcyB0byBrZWVwIHRoZSBpbXBvcnQgZGVzcGl0ZSBpdCBub3QgYmVpbmcgZGlyZWN0bHkgdXNlZFxuY29uc3QgX21Sb3V0ZXIgPSBSb3V0ZXI7XG5cbmV4cG9ydCB0eXBlIFN0YXJ0dXBQYXJhbWV0ZXJzID0ge1xuXHRwcmVmZXJyZWRNb2RlPzogc3RyaW5nW107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bltdPjtcbi8qKlxuICogTWFpbiBjbGFzcyBmb3IgY29tcG9uZW50cyB1c2VkIGZvciBhbiBhcHBsaWNhdGlvbiBpbiBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKlxuICogQXBwbGljYXRpb24gZGV2ZWxvcGVycyB1c2luZyB0aGUgdGVtcGxhdGVzIGFuZCBidWlsZGluZyBibG9ja3MgcHJvdmlkZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzIHNob3VsZCBjcmVhdGUgdGhlaXIgYXBwcyBieSBleHRlbmRpbmcgdGhpcyBjb21wb25lbnQuXG4gKiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBzZXJ2aWNlcyB0aGF0IHlvdSBuZWVkIGZvciB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCB0ZW1wbGF0ZXMgdG8gd29yayBwcm9wZXJseSBhcmUgc3RhcnRlZC5cbiAqXG4gKiBXaGVuIHlvdSB1c2Ugc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50IGFzIHRoZSBiYXNlIGNvbXBvbmVudCwgeW91IGFsc28gbmVlZCB0byB1c2UgYSByb290Vmlldy4gU0FQIEZpb3JpIGVsZW1lbnRzIHByb3ZpZGVzIHR3byBvcHRpb25zOiA8YnIvPlxuICogLSBzYXAuZmUuY29yZS5yb290Vmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogLSBzYXAuZmUuY29yZS5yb290Vmlldy5GY2wgd2hlbiB1c2luZyBzYXAuZi5yb3V0aW5nLlJvdXRlciAoRkNMIHVzZSBjYXNlKSA8YnIvPlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcIiwge1xuXHRjb25maWc6IHtcblx0XHRmdWxsV2lkdGg6IHRydWVcblx0fSxcblx0bWFuaWZlc3Q6IHtcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCIsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRtb2RlbE5hbWU6IFwic2FwLmZlLmkxOG5cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0cm91dGluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNoZWxsU2VydmljZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaGVsbFNlcnZpY2VzXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0U2hlbGxVSVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAudXNoZWxsLnVpNXNlcnZpY2UuU2hlbGxVSVNlcnZpY2VcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYXZpZ2F0aW9uU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5FbnZpcm9ubWVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaWRlRWZmZWN0c1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhc3luY0NvbXBvbmVudFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Bc3luY0NvbXBvbmVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRlbGVtZXRyeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5UZWxlbWV0cnlTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dmFsdWVIZWxwSGlzdG9yeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5WYWx1ZUhlbHBIaXN0b3J5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Q29udGV4dFNoYXJpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29udGV4dFNoYXJpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5saW5lRWRpdFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5JbmxpbmVFZGl0U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQgaW1wbGVtZW50cyBJQXN5bmNDb250ZW50Q3JlYXRpb24ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUFzeW5jQ29udGVudENyZWF0aW9uID0gdHJ1ZTtcblxuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ZWRTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIF9pbml0aWFsaXplZEtlZXBlciE6IFByb21pc2VLZWVwZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBpc0FkYXB0YXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0cHVibGljIGlzRXhpdGluZyA9IGZhbHNlO1xuXG5cdHB1YmxpYyBwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG5cdHByaXZhdGUgc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBTaW5nbGV0b24gdG8gaG9sZCBwcm9jZXNzZXMgZnJvbSBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzOiAoKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KVtdID0gW107XG5cblx0X2lzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpO1xuXHRcdHJldHVybiBvTWFuaWZlc3RVSTU/LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTO1xuXHR9XG5cblx0c2V0QWRhcHRhdGlvbk1vZGUoaXNBZGFwdGF0aW9uRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZCA9IGlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24sIHVzZSB0aGUge0BsaW5rIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbn0gbWV0aG9kLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRob3V0IGFueSB2YWx1ZSB0byBhbGxvdyBhc3luY2hyb25vdXMgcHJvY2Vzc2VzXG5cdCAqL1xuXHRhc3luYyBpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYXBwbGljYXRpb25zXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgeW91IHRvIGNoYW5nZSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICogQHBhcmFtIHBhZ2VJZCBUaGUgSUQgb2YgdGhlIHBhZ2UgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGluIHRoZSBwYWdlIHNldHRpbmdzIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHBsYWluIHZhbHVlIGxpa2UgYSBzdHJpbmcsIG9yIGEgQm9vbGVhbiwgb3IgYSBzdHJ1Y3R1cmVkIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Y2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24ocGFnZUlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCBtYW5pZmVzdCA9IGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlLCB0aGlzKSBhcyBNYW5pZmVzdENvbnRlbnQ7XG5cdFx0aWYgKFxuXHRcdFx0cGF0aCA9PT0gXCJhcHAvZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiICYmXG5cdFx0XHQobWFuaWZlc3Q/LltcInNhcC5mZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4pPy5bXCJhcHBcIl0/LltcImRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIl0gPT09IHZhbHVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuc2V0Q2FwYWJpbGl0eShcIkRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbnMgYWxsIHJlZ2lzdGVyZWQgcGFnZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cdCAqL1xuXHRjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHkuXG5cdCAqIEByZXR1cm5zIEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCk6IEFwcFN0YXRlSGFuZGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCk6IE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRlbnQoKVswXSBhcyBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHN0YXJ0dXAgbW9kZSBvZiB0aGUgYXBwLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBtb2RlXG5cdCAqL1xuXHRnZXRTdGFydHVwTW9kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnN0YXJ0dXBNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdDcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVDcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkNyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQXV0b0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkF1dG9DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlciA9IG5ldyBQcm9taXNlS2VlcGVyPHZvaWQ+KCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnByb21pc2U7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0ZWRpdE1vZGU6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSxcblx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0ZHJhZnRTdGF0dXM6IGxpYnJhcnkuRHJhZnRTdGF0dXMuQ2xlYXIsXG5cdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Ly8gc2V0IHRoZSBiaW5kaW5nIE9uZVdheSBmb3IgdWlNb2RlbCB0byBwcmV2ZW50IGNoYW5nZXMgaWYgY29udHJvbGxlciBleHRlbnNpb25zIG1vZGlmeSBhIGJvdW5kIHByb3BlcnR5IG9mIGEgY29udHJvbFxuXHRcdHVpTW9kZWwuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdC8vIGZvciBpbnRlcm5hbCBtb2RlbCBiaW5kaW5nIG5lZWRzIHRvIGJlIHR3byB3YXlcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVWlKU09OTW9kZWwodWlNb2RlbCwgbGlicmFyeSk7XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwodWlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXG5cdFx0dGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgPSB0aGlzLmJJbml0aWFsaXplUm91dGluZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgOiB0cnVlO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eSA9IG5ldyBSb3V0ZXJQcm94eSgpO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIgPSBuZXcgQXBwU3RhdGVIYW5kbGVyKHRoaXMpO1xuXHRcdHRoaXMuX29EaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRcdGlmIChvTW9kZWw/LmlzQT8uPE9EYXRhTW9kZWw+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIikpIHtcblx0XHRcdE1vZGVsSGVscGVyLmVuaGFuY2VPRGF0YU1vZGVsKG9Nb2RlbCwgdGhpcyk7XG5cdFx0XHRvTW9kZWwuc2V0UmV0cnlBZnRlckhhbmRsZXIodGhpcy5odHRwNTAzUmV0cnlIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbm90IGFuIE9EYXRhIHY0IHNlcnZpY2Vcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8uYXBwPy5kaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0KSB7XG5cdFx0XHQvLyBkaXNhYmxlIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGdsb2JhbGx5IGluIGNhc2UgcHJpdmF0ZSBtYW5pZmVzdCBmbGFnIGlzIHNldFxuXHRcdFx0Ly8gdGhpcyBhbGxvd3MgY3VzdG9tZXJzIHRvIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaW4gY2FzZSB3ZSBydW4gaW50byBpc3N1ZXMgd2l0aCB0aGUgZmlyc3QgZGVsaXZlcnlcblx0XHRcdC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdpdGggdGhlIG5leHQgUy80IHJlbGVhc2Vcblx0XHRcdE1vZGVsSGVscGVyLmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3QoKVtcInNhcC51aTVcIl07XG5cdFx0dGhpcy5jaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNSk7XG5cblx0XHQvLyB0aGUgaW5pdCBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSByb3V0aW5nIGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgYWJvdmVcblx0XHQvLyBpdCB3aWxsIGNhbGwgdGhlIGNyZWF0ZUNvbnRlbnQgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgdGhlIFJvb3RWaWV3IGFuZCBhZGQgaXQgdG8gdGhlIFVJQ29tcG9uZW50IGFnZ3JlZ2F0aW9uc1xuXG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldID0gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgaHR0cDUwM1JldHJ5SGFuZGxlcihlcnJvcjogRXJyb3IgJiB7IHJldHJ5QWZ0ZXI/OiBEYXRlIH0pOiBQcm9taXNlPHVuZGVmaW5lZD4ge1xuXHRcdHJldHVybiBIVFRQNTAzSGFuZGxlci5oYW5kbGU1MDNEZWxheShlcnJvciwgdGhpcy5nZXRSb290Q29udHJvbCgpLCBnZXRSZXNvdXJjZU1vZGVsKHRoaXMpKTtcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTU6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0pOiB2b2lkIHtcblx0XHRpZiAob01hbmlmZXN0VUk1Py5yb290Vmlldz8udmlld05hbWUpIHtcblx0XHRcdC8vIFRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpZWQgYW4gb3duIHJvb3QgdmlldyBpbiB0aGUgbWFuaWZlc3RcblxuXHRcdFx0Ly8gUm9vdCBWaWV3IHdhcyBtb3ZlZCBmcm9tIHNhcC5mZS50ZW1wbGF0ZXMgdG8gc2FwLmZlLmNvcmUgLSBrZWVwIGl0IGNvbXBhdGlibGVcblx0XHRcdGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5GQ0wuVklFV05BTUU7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLkZDTC5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5GQ0wuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldz8udmlld05hbWU/LmluY2x1ZGVzKFwic2FwLmZlLmNvcmUucm9vdFZpZXdcIikpIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0YFxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcbmAgK1xuXHRcdFx0XHRcdFx0YEN1cnJlbnQgdmFsdWVzIGFyZSA6KCR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfS8ke1xuXHRcdFx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyB8fCBcIjxtaXNzaW5nIHJvdXRlciBjbGFzcz5cIlxuXHRcdFx0XHRcdFx0fSlcXG5gICtcblx0XHRcdFx0XHRcdGBFeHBlY3RlZCB2YWx1ZXMgYXJlIFxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfS8ke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfSlcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLkZDTC5WSUVXTkFNRX0vJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU30pYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgb25TZXJ2aWNlc1N0YXJ0ZWQoYWxsU2VydmljZXM6IFNlcnZpY2U8dW5rbm93bj5bXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcyA9IGFsbFNlcnZpY2VzO1xuXHRcdGF3YWl0IHRoaXMuaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzKCk7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLm1hcChhc3luYyAoZm5Qcm9jZXNzKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmblByb2Nlc3MuY2FsbChudWxsLCB0aGlzKTtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpLnJlZ2lzdGVyU2hlbGxIb29rKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuZGlzcGxheUVycm9yUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKClcblx0XHRcdFx0LmluaXRpYWxpemVSb3V0aW5nKClcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpKSB7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Q29udHJvbCgpLmF0dGFjaEFmdGVySW5pdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyOiBFcnJvcikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6ICR7ZXJyLnRvU3RyaW5nKCl9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBbXTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdFx0dGhpcy5jbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogRGlhZ25vc3RpY3Mge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0V4aXRpbmcgPSB0cnVlO1xuXG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMudW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoKTtcblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgdW5rbm93bikuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gdGhpcy5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsPy5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0Py4oKTtcblx0XHRzdXBlci5kZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXG5cdGdldFJvdXRpbmdTZXJ2aWNlKCk6IFJvdXRpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgUm91dGluZ1NlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk6IFNpZGVFZmZlY3RzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFNpZGVFZmZlY3RzU2VydmljZTtcblx0fVxuXG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSgpOiBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpOiBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZTtcblx0fVxuXG5cdGdldENvbnRleHRTaGFyaW5nU2VydmljZSgpOiBDb250ZXh0U2hhcmluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb250ZXh0U2hhcmluZ1NlcnZpY2U7XG5cdH1cblxuXHRnZXRUZWxlbWV0cnlTZXJ2aWNlKCk6IFRlbGVtZXRyeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBUZWxlbWV0cnlTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UoKTogVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZTtcblx0fVxuXG5cdGdldElubGluZUVkaXRTZXJ2aWNlKCk6IElubGluZUVkaXRTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgSW5saW5lRWRpdFNlcnZpY2U7XG5cdH1cblxuXHRhc3luYyBnZXRTdGFydHVwUGFyYW1ldGVycygpOiBQcm9taXNlPFN0YXJ0dXBQYXJhbWV0ZXJzPiB7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKChvQ29tcG9uZW50RGF0YSAmJiBvQ29tcG9uZW50RGF0YS5zdGFydHVwUGFyYW1ldGVycykgfHwge30pO1xuXHR9XG5cblx0cmVzdG9yZSgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblJlc3RvcmU/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblJlc3RvcmUoKTtcblxuXHRcdC8vIFJlc2V0IGFsbCB2YWx1ZXMgaW4gdmVyc2lvbkFjdGl2YXRpb25TdGF0dXMgdG8gZmFsc2Vcblx0XHRBcHBTdGF0ZUhhbmRsZXIucmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpO1xuXHR9XG5cblx0c3VzcGVuZCgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyBzdXNwZW5kZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25TdXNwZW5kPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cblxuXHQvKipcblx0ICogbmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlciBmdW5jdGlvbiBpcyBhIHB1YmxpYyBhcGkgdGhhdCBhY3RzIGFzIGEgd3JhcHBlciB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLiBJdCBwYXNzZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyBmdXJ0aGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb25cblx0ICogQHBhcmFtIHN0YXJ0dXBQYXJhbWV0ZXJzIERlZmluZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyB3aGljaCBpcyBmdXJ0aGVyIHBhc3NlZCB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLlxuXHQgKi9cblxuXHRhc3luYyBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyKHN0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSkpIHtcblx0XHRcdFx0aWYgKCFzdGFydHVwUGFyYW1ldGVycykge1xuXHRcdFx0XHRcdHN0YXJ0dXBQYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByb3V0aW5nU2VydmljZSA9IHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKTtcblx0XHRcdFx0YXdhaXQgcm91dGluZ1NlcnZpY2UuX21hbmFnZURlZXBMaW5rU3RhcnR1cChzdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXhjZXB0aW9uOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZXhjZXB0aW9uIGFzIHN0cmluZyk7XG5cdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLmdldE1vZGVsKFwidWlcIikpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIGFsbG93IGRpc2FibGluZyB0aGUgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIGludGVncmF0aW9uIGZvciB0aGUgT1ZQIHVzZSBjYXNlLlxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb2xsYWJvcmF0aW9uIG1hbmFnZXIgc2VydmljZSBpcyBhY3RpdmUuXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgcHJvY2Vzc2VzIHRoYXQgbmVlZCB0byBiZSBydW4gZm9yIGV2ZXJ5IGluc3RhbmNlIHByaW9yIHRvIHN0YXJ0dXAuXG5cdCAqIEBwYXJhbSBmblByb2Nlc3MgRnVuY3Rpb24gdGhhdCBob2xkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvY2Vzcy5cblx0ICpcblx0ICogVGhlIHJlZ2lzdGVyZWQgcHJvY2VzcyBjYW4gYmUgYW4gYXN5bmNocm9ub3VzIHByb2Nlc3MuXG5cdCAqIEl0IHNoYWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBBcHBDb21wb25lbnQgaW5zdGFuY2UgYXMgYSBwYXJhbWV0ZXIgYmVmb3JlIHN0YXJ0dXAuXG5cdCAqL1xuXHRzdGF0aWMgcmVnaXN0ZXJJbnN0YW5jZURlcGVuZGVudFByb2Nlc3NGb3JTdGFydFVwKGZuUHJvY2VzczogKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG5cdFx0dGhpcy5pbnN0YW5jZURlcGVuZGVudFByb2Nlc3Nlcy5wdXNoKGZuUHJvY2Vzcyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIHRoZSBjYWxsYmFja3MgcmVsYXRlZCB0byBhIHN0aWNreSBlZGl0IHNlc3Npb24uXG5cdCAqIEBwYXJhbSBkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFja1xuXHQgKiBAcGFyYW0gc2Vzc2lvblRpbWVvdXRDYWxsYmFja1xuXHQgKiBAcGFyYW0gZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrXG5cdCAqL1xuXHRyZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoXG5cdFx0ZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdGRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjazogRnVuY3Rpb25cblx0KTogdm9pZCB7XG5cdFx0dGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayA9IGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrO1xuXHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLnJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyKGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrKTtcblxuXHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRNb2RlbCgpLmF0dGFjaFNlc3Npb25UaW1lb3V0KHNlc3Npb25UaW1lb3V0Q2FsbGJhY2spO1xuXG5cdFx0dGhpcy5zdGlja3lEaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2sgPSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmF0dGFjaFJvdXRlTWF0Y2hlZCh7fSwgZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVbnJlZ2lzdGVycyB0aGUgY2FsbGJhY2tzIHJlbGF0ZWQgdG8gYSBzdGlja3kgZWRpdCBzZXNzaW9uLlxuXHQgKi9cblx0dW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spIHtcblx0XHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIodGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrICYmIHRoaXMuZ2V0TW9kZWwoKSkge1xuXHRcdFx0dGhpcy5nZXRNb2RlbCgpLmRldGFjaFNlc3Npb25UaW1lb3V0KHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaykge1xuXHRcdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmRldGFjaFJvdXRlTWF0Y2hlZCh0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cbn1cblxuaW50ZXJmYWNlIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IHtcblx0aXNBZGFwdGF0aW9uTW9kZSgpOiBib29sZWFuO1xuXHRnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdENvbnRlbnQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmFwcFwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdO1xuXHRfZ2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIsIG1lcmdlZDogYm9vbGVhbik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLnVpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWlcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZlXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0gfCB1bmRlZmluZWQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZpb3JpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmlvcmlcIl07XG5cdGdldENvbXBvbmVudERhdGEoKTogQ29tcG9uZW50RGF0YTtcblx0Z2V0Um9vdENvbnRyb2woKToge1xuXHRcdGdldENvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlcjtcblx0fSAmIFZpZXc7XG5cdGdldE1vZGVsKCk6IE9EYXRhTW9kZWw7XG5cdGdldE1vZGVsKG5hbWU6IFwidWlcIik6IEpTT05Nb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcENvbXBvbmVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0NBLE1BQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUFXO0VBQ3ZDLE1BQU1FLE9BQU8sR0FBRztJQUNmQyxHQUFHLEVBQUU7TUFDSkMsUUFBUSxFQUFFLDBCQUEwQjtNQUNwQ0Msc0JBQXNCLEVBQUUseUNBQXlDO01BQ2pFQyxXQUFXLEVBQUU7SUFDZCxDQUFDO0lBQ0RDLFlBQVksRUFBRTtNQUNiSCxRQUFRLEVBQUUsbUNBQW1DO01BQzdDQyxzQkFBc0IsRUFBRSxrREFBa0Q7TUFDMUVDLFdBQVcsRUFBRTtJQUNkO0VBQ0QsQ0FBQztFQVlEO0VBQ0EsTUFBTUUsUUFBUSxHQUFHQyxNQUFNO0VBS3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBMkdNQyxZQUFZLElBQUFDLElBQUEsR0EvRmpCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLE1BQU0sRUFBRTtNQUNQQyxTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0RDLFFBQVEsRUFBRTtNQUNULFNBQVMsRUFBRTtRQUNWQyxRQUFRLEVBQUU7VUFDVEMsYUFBYSxFQUFFO1lBQ2RDLFdBQVcsRUFBRSwyQ0FBMkM7WUFDeERDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCQyxRQUFRLEVBQUU7Y0FDVEMsT0FBTyxF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QyxDQUFDa0MsMEJBQTBCLENBQUNKLDBCQUEwQixDQUFDO01BRTlFLElBQUksQ0FBQ0ssNEJBQTRCLEdBQUdKLHNCQUFzQjtNQUMxRCxJQUFJLENBQUNqRyxRQUFRLENBQUMsQ0FBQyxDQUFDc0csb0JBQW9CLENBQUNMLHNCQUFzQixDQUFDO01BRTVELElBQUksQ0FBQ00sb0NBQW9DLEdBQUdMLDhCQUE4QjtNQUMxRSxJQUFJLENBQUN0RCxpQkFBaUIsQ0FBQyxDQUFDLENBQUM0RCxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRU4sOEJBQThCLENBQUM7SUFDaEY7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQW5LLE1BQUEsQ0FHQXVILGdDQUFnQyxHQUFoQyxTQUFBQSxnQ0FBZ0NBLENBQUEsRUFBUztNQUN4QyxJQUFJLElBQUksQ0FBQzZDLGdDQUFnQyxFQUFFO1FBQzFDLElBQUksQ0FBQ2pDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ3VDLDRCQUE0QixDQUFDLElBQUksQ0FBQ04sZ0NBQWdDLENBQUM7UUFDM0YsSUFBSSxDQUFDQSxnQ0FBZ0MsR0FBR3pHLFNBQVM7TUFDbEQ7TUFDQSxJQUFJLElBQUksQ0FBQzJHLDRCQUE0QixJQUFJLElBQUksQ0FBQ3JHLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFDekQsSUFBSSxDQUFDQSxRQUFRLENBQUMsQ0FBQyxDQUFDMEcsb0JBQW9CLENBQUMsSUFBSSxDQUFDTCw0QkFBNEIsQ0FBQztRQUN2RSxJQUFJLENBQUNBLDRCQUE0QixHQUFHM0csU0FBUztNQUM5QztNQUNBLElBQUksSUFBSSxDQUFDNkcsb0NBQW9DLEVBQUU7UUFDOUMsSUFBSSxDQUFDM0QsaUJBQWlCLENBQUMsQ0FBQyxDQUFDK0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDSixvQ0FBb0MsQ0FBQztRQUN0RixJQUFJLENBQUNBLG9DQUFvQyxHQUFHN0csU0FBUztNQUN0RDtJQUNELENBQUM7SUFBQSxPQUFBMUgsWUFBQTtFQUFBLEVBdmdCeUI0TyxXQUFXLEdBQUFoTSxhQUFBLENBSTlCZ0csV0FBVyxHQUFpQyxDQUFDLENBQUMsRUFBQWhHLGFBQUEsQ0FtQ3RDNkcsMEJBQTBCLEdBQXNELEVBQUUsRUFBQTdHLGFBQUEsR0FBQVcsV0FBQSxHQUFBc0wseUJBQUEsQ0FBQWxNLE9BQUEsQ0FBQXFCLFNBQUEsc0RBQUF4QixLQUFBO0lBQUFzTSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQXJDL0MsSUFBSTtJQUFBO0VBQUEsSUFBQXRNLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BMGhCeEMxQyxZQUFZO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -13,6 +13,7 @@ import type { CollaborationManagerService } from "sap/fe/core/services/Collabora
13
13
  import type { CollaborativeToolsService } from "sap/fe/core/services/CollaborativeToolsServiceFactory";
14
14
  import type { ContextSharingService } from "sap/fe/core/services/ContextSharingServiceFactory";
15
15
  import type { EnvironmentCapabilitiesService } from "sap/fe/core/services/EnvironmentServiceFactory";
16
+ import type { InlineEditService } from "sap/fe/core/services/InlineEditServiceFactory";
16
17
  import type { NavigationService } from "sap/fe/core/services/NavigationServiceFactory";
17
18
  import type { RoutingService } from "sap/fe/core/services/RoutingServiceFactory";
18
19
  import type { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
@@ -144,6 +145,10 @@ export type StartupParameters = {
144
145
  ContextSharingService: {
145
146
  factoryName: "sap.fe.core.services.ContextSharingService",
146
147
  startup: "waitFor"
148
+ },
149
+ inlineEditService: {
150
+ factoryName: "sap.fe.core.services.InlineEditService",
151
+ startup: "waitFor"
147
152
  }
148
153
  },
149
154
  rootView: {
@@ -585,6 +590,10 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
585
590
  return {} as ValueHelpHistoryService;
586
591
  }
587
592
 
593
+ getInlineEditService(): InlineEditService {
594
+ return {} as InlineEditService;
595
+ }
596
+
588
597
  async getStartupParameters(): Promise<StartupParameters> {
589
598
  const oComponentData = this.getComponentData();
590
599
  return Promise.resolve((oComponentData && oComponentData.startupParameters) || {});