@sapui5/sap.fe.macros 1.138.0 → 1.139.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 (184) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/CommonHelper.js +2 -2
  6. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  7. package/src/sap/fe/macros/Field.js +21 -4
  8. package/src/sap/fe/macros/Field.ts +21 -3
  9. package/src/sap/fe/macros/FooterContent.js +40 -10
  10. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  11. package/src/sap/fe/macros/FormElement.js +2 -2
  12. package/src/sap/fe/macros/FormElement.ts +1 -2
  13. package/src/sap/fe/macros/MultiValueField.js +17 -4
  14. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  15. package/src/sap/fe/macros/RichTextEditor.js +30 -5
  16. package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
  17. package/src/sap/fe/macros/Share.js +73 -40
  18. package/src/sap/fe/macros/Share.tsx +29 -1
  19. package/src/sap/fe/macros/ValueHelp.js +3 -4
  20. package/src/sap/fe/macros/ValueHelp.tsx +2 -3
  21. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  22. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  23. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  24. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  25. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  26. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  27. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  28. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  29. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  30. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  31. package/src/sap/fe/macros/chart/MdcChartTemplate.js +19 -3
  32. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +15 -4
  33. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  34. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  35. package/src/sap/fe/macros/controls/FilterBar.js +49 -2
  36. package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
  37. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  38. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  39. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  40. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  41. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  42. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  43. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  44. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  45. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  46. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  47. package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
  48. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  49. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
  50. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
  51. package/src/sap/fe/macros/field/FieldBaseDelegate.js +9 -3
  52. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +22 -1
  53. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  54. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  55. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  56. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  57. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  58. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  59. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  60. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  61. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  62. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  63. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  64. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  65. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  66. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  67. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  68. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  69. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  70. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  71. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  72. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  73. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  74. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  75. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  76. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  77. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  78. package/src/sap/fe/macros/internal/field/DisplayStyle.js +49 -11
  79. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +51 -4
  80. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  81. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  82. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  83. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  84. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  85. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  86. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  87. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +7 -3
  88. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +8 -7
  89. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  90. package/src/sap/fe/macros/library.js +1 -1
  91. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
  92. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
  93. package/src/sap/fe/macros/messagebundle.properties +37 -29
  94. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  95. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  96. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  97. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  98. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  99. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  100. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  101. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  102. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  103. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  104. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  105. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  106. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  107. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  108. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  109. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  110. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  111. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  112. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  113. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  114. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  116. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  117. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  118. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  119. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  120. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  121. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  122. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  123. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  124. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  125. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  126. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  128. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  129. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  131. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  132. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  133. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  135. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  137. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  138. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  139. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  140. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  141. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  142. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  143. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  144. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  145. package/src/sap/fe/macros/table/Action.js +24 -2
  146. package/src/sap/fe/macros/table/Action.ts +13 -0
  147. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  148. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  149. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  150. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  151. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  152. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  153. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  154. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  155. package/src/sap/fe/macros/table/Column.js +3 -3
  156. package/src/sap/fe/macros/table/Column.ts +2 -2
  157. package/src/sap/fe/macros/table/MdcTableTemplate.js +18 -8
  158. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +30 -5
  159. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  160. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  161. package/src/sap/fe/macros/table/Table.block.js +137 -108
  162. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  163. package/src/sap/fe/macros/table/TableAPI.js +143 -133
  164. package/src/sap/fe/macros/table/TableAPI.ts +5 -1
  165. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  166. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  167. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  168. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  169. package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -19
  170. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -23
  171. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  172. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  173. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  174. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  175. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  176. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  177. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  178. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  179. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +11 -6
  180. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +19 -14
  181. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  182. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  183. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  184. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog", "sap/fe/core/controllerextensions/routing/NavigationReason", "sap/fe/core/controls/Any", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/DeleteHelper", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/PasteHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/MacroAPI", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableCreationOptions", "sap/fe/macros/table/TableHelper", "sap/fe/macros/table/TableRuntime", "sap/fe/macros/table/Utils", "sap/fe/macros/table/adapter/TablePVToState", "sap/fe/macros/table/massEdit/MassEditDialogHelper", "sap/fe/navigation/PresentationVariant", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageType", "sap/m/MessageBox", "sap/m/MessageToast", "sap/m/Text", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Element", "sap/ui/core/Fragment", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/library", "sap/ui/core/message/Message", "sap/ui/core/util/XMLPreprocessor", "sap/ui/mdc/p13n/StateUtil", "../mdc/adapter/StateHelper", "./TableDefinition", "./TableEventHandlerProvider", "./mixin/ColumnManagement", "./mixin/ContextMenuHandler", "./mixin/EmptyRowsHandler", "./mixin/TableAPIStateHandler", "./mixin/TableExport", "./mixin/TableHierarchy", "./mixin/TableOptimisticBatch", "./mixin/TableSharing"], function (Log, deepClone, BindingToolkit, ClassSupport, jsx, CommonUtils, BuildingBlockTemplateProcessor, NotApplicableContextDialog, NavigationReason, Any, ManifestSettings, MetaModelConverter, Table, StandardActions, DeleteHelper, FPMHelper, PasteHelper, ResourceModelHelper, StableIdHelper, DataModelPathHelper, UIFormatters, MacroAPI, FieldTemplating, FilterUtils, MdcTableTemplate, TableCreationOptions, TableHelper, TableRuntime, TableUtils, TablePVToState, MassEditDialogHelper, PresentationVariantClass, IllustratedMessage, IllustratedMessageType, MessageBox, MessageToast, Text, ManagedObjectMetadata, UI5Element, Fragment, Library, Messaging, library, Message, XMLPreprocessor, StateUtil, StateHelper, TableDefinition, TableEventHandlerProvider, ColumnManagement, ContextMenuHandler, EmptyRowsHandler, TableAPIStateHandler, TableExport, TableHierarchy, TableOptimisticBatch, TableSharing) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _dec104, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66, _descriptor67;
9
9
  var createTableDefinition = TableDefinition.createTableDefinition;
10
10
  var TitleLevel = library.TitleLevel;
11
11
  var convertPVToState = TablePVToState.convertPVToState;
@@ -86,41 +86,41 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
86
86
  }), _dec26 = property({
87
87
  type: "int"
88
88
  }), _dec27 = property({
89
- type: "boolean"
89
+ type: "string",
90
+ allowedValues: ["Block", "GridLarge", "GridSmall"]
90
91
  }), _dec28 = property({
92
+ type: "boolean"
93
+ }), _dec29 = property({
91
94
  type: "string",
92
95
  allowedValues: ["GridTable", "ResponsiveTable", "AnalyticalTable"]
93
- }), _dec29 = property({
94
- type: "boolean"
95
96
  }), _dec30 = property({
97
+ type: "boolean"
98
+ }), _dec31 = property({
96
99
  type: "string",
97
100
  allowedValues: ["None", "Single", "Multi", "Auto", "ForceMulti", "ForceSingle"]
98
- }), _dec31 = property({
101
+ }), _dec32 = property({
99
102
  type: "boolean"
100
- }), _dec32 = aggregation({
103
+ }), _dec33 = aggregation({
101
104
  type: "sap.fe.macros.table.Action",
102
105
  altTypes: ["sap.fe.macros.table.ActionGroup", "sap.fe.macros.table.ActionOverride", "sap.fe.macros.table.ActionGroupOverride"],
103
106
  multiple: true
104
- }), _dec33 = aggregation({
107
+ }), _dec34 = aggregation({
105
108
  type: "sap.fe.macros.table.Column",
106
109
  altTypes: ["sap.fe.macros.table.ColumnOverride"],
107
110
  multiple: true
108
- }), _dec34 = property({
109
- type: "boolean"
110
111
  }), _dec35 = property({
111
- type: "string"
112
+ type: "boolean"
112
113
  }), _dec36 = property({
114
+ type: "string"
115
+ }), _dec37 = property({
113
116
  type: "boolean",
114
117
  defaultValue: true
115
- }), _dec37 = property({
118
+ }), _dec38 = property({
116
119
  type: "boolean",
117
120
  defaultValue: false
118
- }), _dec38 = property({
121
+ }), _dec39 = property({
119
122
  type: "string",
120
123
  allowedValues: ["illustratedMessage-Auto", "illustratedMessage-Base", "illustratedMessage-Dialog", "illustratedMessage-Medium", "illustratedMessage-Dot", "illustratedMessage-ExtraSmall", "illustratedMessage-Scene", "illustratedMessage-Large", "illustratedMessage-Spot", "illustratedMessage-Small", "text"]
121
- }), _dec39 = property({
122
- type: "boolean",
123
- defaultValue: false
124
124
  }), _dec40 = property({
125
125
  type: "boolean",
126
126
  defaultValue: false
@@ -131,7 +131,8 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
131
131
  type: "boolean",
132
132
  defaultValue: false
133
133
  }), _dec43 = property({
134
- type: "string"
134
+ type: "boolean",
135
+ defaultValue: false
135
136
  }), _dec44 = property({
136
137
  type: "string"
137
138
  }), _dec45 = property({
@@ -139,32 +140,32 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
139
140
  }), _dec46 = property({
140
141
  type: "string"
141
142
  }), _dec47 = property({
143
+ type: "string"
144
+ }), _dec48 = property({
142
145
  type: "sap.ui.core.TitleLevel",
143
146
  defaultValue: TitleLevel.Auto
144
- }), _dec48 = property({
145
- type: "sap.ui.core.TitleLevel"
146
147
  }), _dec49 = property({
147
- type: "int"
148
+ type: "sap.ui.core.TitleLevel"
148
149
  }), _dec50 = property({
149
- type: "boolean"
150
+ type: "int"
150
151
  }), _dec51 = property({
151
- type: "string"
152
+ type: "boolean"
152
153
  }), _dec52 = property({
153
154
  type: "string"
154
155
  }), _dec53 = property({
155
- type: "boolean"
156
+ type: "string"
156
157
  }), _dec54 = property({
158
+ type: "boolean"
159
+ }), _dec55 = property({
157
160
  type: "boolean",
158
161
  defaultValue: false
159
- }), _dec55 = property({
162
+ }), _dec56 = property({
160
163
  type: "boolean",
161
164
  isBindingInfo: true
162
- }), _dec56 = property({
163
- type: "string"
164
165
  }), _dec57 = property({
165
166
  type: "string"
166
167
  }), _dec58 = property({
167
- type: "boolean"
168
+ type: "string"
168
169
  }), _dec59 = property({
169
170
  type: "boolean"
170
171
  }), _dec60 = property({
@@ -172,24 +173,26 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
172
173
  }), _dec61 = property({
173
174
  type: "boolean"
174
175
  }), _dec62 = property({
176
+ type: "boolean"
177
+ }), _dec63 = property({
175
178
  type: "int"
176
- }), _dec63 = aggregation({
179
+ }), _dec64 = aggregation({
177
180
  type: "sap.fe.macros.table.TableCreationOptions",
178
181
  defaultClass: TableCreationOptions
179
- }), _dec64 = aggregation({
182
+ }), _dec65 = aggregation({
180
183
  type: "sap.m.IllustratedMessage",
181
184
  altTypes: ["sap.m.Text"],
182
185
  forwarding: {
183
186
  getter: "getMDCTable",
184
187
  aggregation: "noData"
185
188
  }
186
- }), _dec65 = aggregation({
187
- type: "sap.fe.macros.table.AnalyticalConfiguration"
188
189
  }), _dec66 = aggregation({
189
- type: "sap.fe.macros.table.QuickVariantSelection"
190
+ type: "sap.fe.macros.table.AnalyticalConfiguration"
190
191
  }), _dec67 = aggregation({
192
+ type: "sap.fe.macros.table.QuickVariantSelection"
193
+ }), _dec68 = aggregation({
191
194
  type: "sap.fe.macros.table.MassEdit"
192
- }), _dec68 = event(), _dec69 = event(), _dec70 = event(), _dec71 = event(), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = xmlEventHandler(), _dec77 = xmlEventHandler(), _dec78 = xmlEventHandler(), _dec79 = xmlEventHandler(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
195
+ }), _dec69 = event(), _dec70 = event(), _dec71 = event(), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = event(), _dec77 = xmlEventHandler(), _dec78 = xmlEventHandler(), _dec79 = xmlEventHandler(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec104 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
193
196
  function TableAPI(mSettings) {
194
197
  var _this;
195
198
  for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
@@ -215,49 +218,50 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
215
218
  _initializerDefineProperty(_this, "disableCopyToClipboard", _descriptor15, _this);
216
219
  _initializerDefineProperty(_this, "scrollThreshold", _descriptor16, _this);
217
220
  _initializerDefineProperty(_this, "threshold", _descriptor17, _this);
218
- _initializerDefineProperty(_this, "isSearchable", _descriptor18, _this);
219
- _initializerDefineProperty(_this, "type", _descriptor19, _this);
220
- _initializerDefineProperty(_this, "useCondensedLayout", _descriptor20, _this);
221
- _initializerDefineProperty(_this, "selectionMode", _descriptor21, _this);
222
- _initializerDefineProperty(_this, "condensedTableLayout", _descriptor22, _this);
223
- _initializerDefineProperty(_this, "actions", _descriptor23, _this);
224
- _initializerDefineProperty(_this, "columns", _descriptor24, _this);
221
+ _initializerDefineProperty(_this, "popinLayout", _descriptor18, _this);
222
+ _initializerDefineProperty(_this, "isSearchable", _descriptor19, _this);
223
+ _initializerDefineProperty(_this, "type", _descriptor20, _this);
224
+ _initializerDefineProperty(_this, "useCondensedLayout", _descriptor21, _this);
225
+ _initializerDefineProperty(_this, "selectionMode", _descriptor22, _this);
226
+ _initializerDefineProperty(_this, "condensedTableLayout", _descriptor23, _this);
227
+ _initializerDefineProperty(_this, "actions", _descriptor24, _this);
228
+ _initializerDefineProperty(_this, "columns", _descriptor25, _this);
225
229
  /**
226
230
  * An expression that allows you to control the 'read-only' state of the table.
227
231
  *
228
232
  * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.
229
233
  */
230
- _initializerDefineProperty(_this, "readOnly", _descriptor25, _this);
234
+ _initializerDefineProperty(_this, "readOnly", _descriptor26, _this);
231
235
  /**
232
236
  * ID of the FilterBar building block associated with the table.
233
237
  */
234
238
  //@association({ type: "sap.fe.macros.filterBar.FilterBarAPI" })
235
- _initializerDefineProperty(_this, "filterBar", _descriptor26, _this);
239
+ _initializerDefineProperty(_this, "filterBar", _descriptor27, _this);
236
240
  /**
237
241
  * Specifies if the column width is automatically calculated.
238
242
  */
239
- _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor27, _this);
243
+ _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor28, _this);
240
244
  /**
241
245
  * Indicates if the column header should be a part of the width calculation.
242
246
  */
243
- _initializerDefineProperty(_this, "widthIncludingColumnHeader", _descriptor28, _this);
247
+ _initializerDefineProperty(_this, "widthIncludingColumnHeader", _descriptor29, _this);
244
248
  /**
245
249
  * Changes the size of the IllustratedMessage in the table, or removes it completely.
246
250
  * Allowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.
247
251
  */
248
- _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor29, _this);
249
- _initializerDefineProperty(_this, "dataInitialized", _descriptor30, _this);
250
- _initializerDefineProperty(_this, "bindingSuspended", _descriptor31, _this);
251
- _initializerDefineProperty(_this, "outDatedBinding", _descriptor32, _this);
252
- _initializerDefineProperty(_this, "isAlp", _descriptor33, _this);
253
- _initializerDefineProperty(_this, "variantManagement", _descriptor34, _this);
254
- _initializerDefineProperty(_this, "ignoredFields", _descriptor35, _this);
255
- _initializerDefineProperty(_this, "id", _descriptor36, _this);
256
- _initializerDefineProperty(_this, "fieldMode", _descriptor37, _this);
257
- _initializerDefineProperty(_this, "headerLevel", _descriptor38, _this);
258
- _initializerDefineProperty(_this, "headerStyle", _descriptor39, _this);
259
- _initializerDefineProperty(_this, "exportRequestSize", _descriptor40, _this);
260
- _initializerDefineProperty(_this, "initialLoad", _descriptor41, _this);
252
+ _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor30, _this);
253
+ _initializerDefineProperty(_this, "dataInitialized", _descriptor31, _this);
254
+ _initializerDefineProperty(_this, "bindingSuspended", _descriptor32, _this);
255
+ _initializerDefineProperty(_this, "outDatedBinding", _descriptor33, _this);
256
+ _initializerDefineProperty(_this, "isAlp", _descriptor34, _this);
257
+ _initializerDefineProperty(_this, "variantManagement", _descriptor35, _this);
258
+ _initializerDefineProperty(_this, "ignoredFields", _descriptor36, _this);
259
+ _initializerDefineProperty(_this, "id", _descriptor37, _this);
260
+ _initializerDefineProperty(_this, "fieldMode", _descriptor38, _this);
261
+ _initializerDefineProperty(_this, "headerLevel", _descriptor39, _this);
262
+ _initializerDefineProperty(_this, "headerStyle", _descriptor40, _this);
263
+ _initializerDefineProperty(_this, "exportRequestSize", _descriptor41, _this);
264
+ _initializerDefineProperty(_this, "initialLoad", _descriptor42, _this);
261
265
  /**
262
266
  * Controls which options should be enabled for the table personalization dialog.
263
267
  *
@@ -273,48 +277,48 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
273
277
  *<br/>
274
278
  * The Group option is only applicable to analytical tables and responsive tables.<br/>
275
279
  */
276
- _initializerDefineProperty(_this, "personalization", _descriptor42, _this);
280
+ _initializerDefineProperty(_this, "personalization", _descriptor43, _this);
277
281
  /**
278
282
  * Specifies the header text that is shown in the table.
279
283
  *
280
284
  */
281
- _initializerDefineProperty(_this, "header", _descriptor43, _this);
282
- _initializerDefineProperty(_this, "useBasicSearch", _descriptor44, _this);
285
+ _initializerDefineProperty(_this, "header", _descriptor44, _this);
286
+ _initializerDefineProperty(_this, "useBasicSearch", _descriptor45, _this);
283
287
  /**
284
288
  * Specifies if the empty rows are enabled. This allows to have dynamic enablement of the empty rows using the setter function.
285
289
  */
286
- _initializerDefineProperty(_this, "emptyRowsEnabled", _descriptor45, _this);
290
+ _initializerDefineProperty(_this, "emptyRowsEnabled", _descriptor46, _this);
287
291
  /**
288
292
  * Controls if the header text should be shown or not.
289
293
  *
290
294
  */
291
- _initializerDefineProperty(_this, "headerVisible", _descriptor46, _this);
292
- _initializerDefineProperty(_this, "tabTitle", _descriptor47, _this);
293
- _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor48, _this);
294
- _initializerDefineProperty(_this, "inMultiView", _descriptor49, _this);
295
- _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor50, _this);
296
- _initializerDefineProperty(_this, "enablePastingOfComputedProperties", _descriptor51, _this);
297
- _initializerDefineProperty(_this, "enableSelectAll", _descriptor52, _this);
298
- _initializerDefineProperty(_this, "selectionLimit", _descriptor53, _this);
299
- _initializerDefineProperty(_this, "creationMode", _descriptor54, _this);
295
+ _initializerDefineProperty(_this, "headerVisible", _descriptor47, _this);
296
+ _initializerDefineProperty(_this, "tabTitle", _descriptor48, _this);
297
+ _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor49, _this);
298
+ _initializerDefineProperty(_this, "inMultiView", _descriptor50, _this);
299
+ _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor51, _this);
300
+ _initializerDefineProperty(_this, "enablePastingOfComputedProperties", _descriptor52, _this);
301
+ _initializerDefineProperty(_this, "enableSelectAll", _descriptor53, _this);
302
+ _initializerDefineProperty(_this, "selectionLimit", _descriptor54, _this);
303
+ _initializerDefineProperty(_this, "creationMode", _descriptor55, _this);
300
304
  /**
301
305
  * Aggregation to forward the IllustratedMessage control to the mdc control.
302
306
  * @public
303
307
  */
304
- _initializerDefineProperty(_this, "noData", _descriptor55, _this);
308
+ _initializerDefineProperty(_this, "noData", _descriptor56, _this);
305
309
  /**
306
310
  * A set of options that can be configured to control the aggregation behavior
307
311
  * @public
308
312
  */
309
- _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor56, _this);
313
+ _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor57, _this);
310
314
  /**
311
315
  * Aggregate quickVariantSelection of the table.
312
316
  */
313
- _initializerDefineProperty(_this, "quickVariantSelection", _descriptor57, _this);
317
+ _initializerDefineProperty(_this, "quickVariantSelection", _descriptor58, _this);
314
318
  /**
315
319
  * Aggregate mass edit of the table.
316
320
  */
317
- _initializerDefineProperty(_this, "massEdit", _descriptor58, _this);
321
+ _initializerDefineProperty(_this, "massEdit", _descriptor59, _this);
318
322
  /**
319
323
  * An event is triggered when the table is about to be rebound. This event contains information about the binding info.
320
324
  *
@@ -327,30 +331,30 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
327
331
  * You can use this event to read the binding info.
328
332
  * You can use this event to add: Selects.
329
333
  */
330
- _initializerDefineProperty(_this, "beforeRebindTable", _descriptor59, _this);
334
+ _initializerDefineProperty(_this, "beforeRebindTable", _descriptor60, _this);
331
335
  /**
332
336
  * An event is triggered when the user chooses a row; the event contains information about which row is chosen.
333
337
  *
334
338
  * You can set this in order to handle the navigation manually.
335
339
  */
336
- _initializerDefineProperty(_this, "rowPress", _descriptor60, _this);
340
+ _initializerDefineProperty(_this, "rowPress", _descriptor61, _this);
337
341
  /**
338
342
  * An event is triggered when the user switched between view in an ALP.
339
343
  */
340
- _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor61, _this);
344
+ _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor62, _this);
341
345
  /**
342
346
  * An event is triggered when the user saved the variant.
343
347
  */
344
- _initializerDefineProperty(_this, "variantSaved", _descriptor62, _this);
348
+ _initializerDefineProperty(_this, "variantSaved", _descriptor63, _this);
345
349
  /**
346
350
  * An event is triggered when the user selected a variant.
347
351
  */
348
- _initializerDefineProperty(_this, "variantSelected", _descriptor63, _this);
352
+ _initializerDefineProperty(_this, "variantSelected", _descriptor64, _this);
349
353
  /**
350
354
  * An event triggered when the Table list binding changes.
351
355
  */
352
- _initializerDefineProperty(_this, "listBindingChange", _descriptor64, _this);
353
- _initializerDefineProperty(_this, "internalDataRequested", _descriptor65, _this);
356
+ _initializerDefineProperty(_this, "listBindingChange", _descriptor65, _this);
357
+ _initializerDefineProperty(_this, "internalDataRequested", _descriptor66, _this);
354
358
  _this.ignoreContextChangeEvent = false;
355
359
  _this.lock = {};
356
360
  _this.storedEvents = [];
@@ -358,7 +362,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
358
362
  /**
359
363
  * An event triggered when the selection in the table changes.
360
364
  */
361
- _initializerDefineProperty(_this, "selectionChange", _descriptor66, _this);
365
+ _initializerDefineProperty(_this, "selectionChange", _descriptor67, _this);
362
366
  _this.enhancedPropertyInfos = [];
363
367
  _this.propertyInfos = [];
364
368
  _this.originalTableDefinition = _this.tableDefinition;
@@ -531,7 +535,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
531
535
  */;
532
536
  _proto.addMessage = async function addMessage(parameters) {
533
537
  const table = this.getContent();
534
- if (!table.getBindingContext()) {
538
+ if (!table.getBindingContext() && !table.getRowBinding()) {
535
539
  await new Promise(resolve => {
536
540
  const checkContextChange = function () {
537
541
  if (table.getBindingContext()) {
@@ -1793,6 +1797,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1793
1797
  TableAPI.addSetting(tableSettings, "disableCopyToClipboard", this.disableCopyToClipboard);
1794
1798
  TableAPI.addSetting(tableSettings, "scrollThreshold", this.scrollThreshold);
1795
1799
  TableAPI.addSetting(tableSettings, "threshold", this.threshold);
1800
+ TableAPI.addSetting(tableSettings, "popinLayout", this.popinLayout);
1796
1801
  TableAPI.addSetting(tableSettings, "selectionMode", this.selectionMode);
1797
1802
  TableAPI.addSetting(tableSettings, "type", this.type);
1798
1803
  TableAPI.addSetting(tableSettings, "enablePastingOfComputedProperties", this.enablePastingOfComputedProperties);
@@ -2045,252 +2050,257 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
2045
2050
  enumerable: true,
2046
2051
  writable: true,
2047
2052
  initializer: null
2048
- }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "isSearchable", [_dec27], {
2053
+ }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "popinLayout", [_dec27], {
2054
+ configurable: true,
2055
+ enumerable: true,
2056
+ writable: true,
2057
+ initializer: null
2058
+ }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "isSearchable", [_dec28], {
2049
2059
  configurable: true,
2050
2060
  enumerable: true,
2051
2061
  writable: true,
2052
2062
  initializer: null
2053
- }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec28], {
2063
+ }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec29], {
2054
2064
  configurable: true,
2055
2065
  enumerable: true,
2056
2066
  writable: true,
2057
2067
  initializer: null
2058
- }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "useCondensedLayout", [_dec29], {
2068
+ }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "useCondensedLayout", [_dec30], {
2059
2069
  configurable: true,
2060
2070
  enumerable: true,
2061
2071
  writable: true,
2062
2072
  initializer: null
2063
- }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "selectionMode", [_dec30], {
2073
+ }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "selectionMode", [_dec31], {
2064
2074
  configurable: true,
2065
2075
  enumerable: true,
2066
2076
  writable: true,
2067
2077
  initializer: null
2068
- }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "condensedTableLayout", [_dec31], {
2078
+ }), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "condensedTableLayout", [_dec32], {
2069
2079
  configurable: true,
2070
2080
  enumerable: true,
2071
2081
  writable: true,
2072
2082
  initializer: null
2073
- }), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "actions", [_dec32], {
2083
+ }), _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "actions", [_dec33], {
2074
2084
  configurable: true,
2075
2085
  enumerable: true,
2076
2086
  writable: true,
2077
2087
  initializer: null
2078
- }), _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec33], {
2088
+ }), _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec34], {
2079
2089
  configurable: true,
2080
2090
  enumerable: true,
2081
2091
  writable: true,
2082
2092
  initializer: null
2083
- }), _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec34], {
2093
+ }), _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec35], {
2084
2094
  configurable: true,
2085
2095
  enumerable: true,
2086
2096
  writable: true,
2087
2097
  initializer: null
2088
- }), _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec35], {
2098
+ }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec36], {
2089
2099
  configurable: true,
2090
2100
  enumerable: true,
2091
2101
  writable: true,
2092
2102
  initializer: null
2093
- }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec36], {
2103
+ }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec37], {
2094
2104
  configurable: true,
2095
2105
  enumerable: true,
2096
2106
  writable: true,
2097
2107
  initializer: null
2098
- }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "widthIncludingColumnHeader", [_dec37], {
2108
+ }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "widthIncludingColumnHeader", [_dec38], {
2099
2109
  configurable: true,
2100
2110
  enumerable: true,
2101
2111
  writable: true,
2102
2112
  initializer: null
2103
- }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec38], {
2113
+ }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec39], {
2104
2114
  configurable: true,
2105
2115
  enumerable: true,
2106
2116
  writable: true,
2107
2117
  initializer: null
2108
- }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "dataInitialized", [_dec39], {
2118
+ }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "dataInitialized", [_dec40], {
2109
2119
  configurable: true,
2110
2120
  enumerable: true,
2111
2121
  writable: true,
2112
2122
  initializer: null
2113
- }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "bindingSuspended", [_dec40], {
2123
+ }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "bindingSuspended", [_dec41], {
2114
2124
  configurable: true,
2115
2125
  enumerable: true,
2116
2126
  writable: true,
2117
2127
  initializer: null
2118
- }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "outDatedBinding", [_dec41], {
2128
+ }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "outDatedBinding", [_dec42], {
2119
2129
  configurable: true,
2120
2130
  enumerable: true,
2121
2131
  writable: true,
2122
2132
  initializer: null
2123
- }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec42], {
2133
+ }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec43], {
2124
2134
  configurable: true,
2125
2135
  enumerable: true,
2126
2136
  writable: true,
2127
2137
  initializer: null
2128
- }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec43], {
2138
+ }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec44], {
2129
2139
  configurable: true,
2130
2140
  enumerable: true,
2131
2141
  writable: true,
2132
2142
  initializer: null
2133
- }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec44], {
2143
+ }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec45], {
2134
2144
  configurable: true,
2135
2145
  enumerable: true,
2136
2146
  writable: true,
2137
2147
  initializer: null
2138
- }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec45], {
2148
+ }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec46], {
2139
2149
  configurable: true,
2140
2150
  enumerable: true,
2141
2151
  writable: true,
2142
2152
  initializer: null
2143
- }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec46], {
2153
+ }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec47], {
2144
2154
  configurable: true,
2145
2155
  enumerable: true,
2146
2156
  writable: true,
2147
2157
  initializer: null
2148
- }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec47], {
2158
+ }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec48], {
2149
2159
  configurable: true,
2150
2160
  enumerable: true,
2151
2161
  writable: true,
2152
2162
  initializer: null
2153
- }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec48], {
2163
+ }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec49], {
2154
2164
  configurable: true,
2155
2165
  enumerable: true,
2156
2166
  writable: true,
2157
2167
  initializer: null
2158
- }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "exportRequestSize", [_dec49], {
2168
+ }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "exportRequestSize", [_dec50], {
2159
2169
  configurable: true,
2160
2170
  enumerable: true,
2161
2171
  writable: true,
2162
2172
  initializer: null
2163
- }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec50], {
2173
+ }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec51], {
2164
2174
  configurable: true,
2165
2175
  enumerable: true,
2166
2176
  writable: true,
2167
2177
  initializer: null
2168
- }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec51], {
2178
+ }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec52], {
2169
2179
  configurable: true,
2170
2180
  enumerable: true,
2171
2181
  writable: true,
2172
2182
  initializer: null
2173
- }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec52], {
2183
+ }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec53], {
2174
2184
  configurable: true,
2175
2185
  enumerable: true,
2176
2186
  writable: true,
2177
2187
  initializer: null
2178
- }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "useBasicSearch", [_dec53], {
2188
+ }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "useBasicSearch", [_dec54], {
2179
2189
  configurable: true,
2180
2190
  enumerable: true,
2181
2191
  writable: true,
2182
2192
  initializer: null
2183
- }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "emptyRowsEnabled", [_dec54], {
2193
+ }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "emptyRowsEnabled", [_dec55], {
2184
2194
  configurable: true,
2185
2195
  enumerable: true,
2186
2196
  writable: true,
2187
2197
  initializer: null
2188
- }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec55], {
2198
+ }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec56], {
2189
2199
  configurable: true,
2190
2200
  enumerable: true,
2191
2201
  writable: true,
2192
2202
  initializer: null
2193
- }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec56], {
2203
+ }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec57], {
2194
2204
  configurable: true,
2195
2205
  enumerable: true,
2196
2206
  writable: true,
2197
2207
  initializer: null
2198
- }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec57], {
2208
+ }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec58], {
2199
2209
  configurable: true,
2200
2210
  enumerable: true,
2201
2211
  writable: true,
2202
2212
  initializer: null
2203
- }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec58], {
2213
+ }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec59], {
2204
2214
  configurable: true,
2205
2215
  enumerable: true,
2206
2216
  writable: true,
2207
2217
  initializer: null
2208
- }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec59], {
2218
+ }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec60], {
2209
2219
  configurable: true,
2210
2220
  enumerable: true,
2211
2221
  writable: true,
2212
2222
  initializer: null
2213
- }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "enablePastingOfComputedProperties", [_dec60], {
2223
+ }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "enablePastingOfComputedProperties", [_dec61], {
2214
2224
  configurable: true,
2215
2225
  enumerable: true,
2216
2226
  writable: true,
2217
2227
  initializer: null
2218
- }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "enableSelectAll", [_dec61], {
2228
+ }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "enableSelectAll", [_dec62], {
2219
2229
  configurable: true,
2220
2230
  enumerable: true,
2221
2231
  writable: true,
2222
2232
  initializer: null
2223
- }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "selectionLimit", [_dec62], {
2233
+ }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "selectionLimit", [_dec63], {
2224
2234
  configurable: true,
2225
2235
  enumerable: true,
2226
2236
  writable: true,
2227
2237
  initializer: null
2228
- }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec63], {
2238
+ }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec64], {
2229
2239
  configurable: true,
2230
2240
  enumerable: true,
2231
2241
  writable: true,
2232
2242
  initializer: null
2233
- }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "noData", [_dec64], {
2243
+ }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "noData", [_dec65], {
2234
2244
  configurable: true,
2235
2245
  enumerable: true,
2236
2246
  writable: true,
2237
2247
  initializer: null
2238
- }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec65], {
2248
+ }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec66], {
2239
2249
  configurable: true,
2240
2250
  enumerable: true,
2241
2251
  writable: true,
2242
2252
  initializer: null
2243
- }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec66], {
2253
+ }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec67], {
2244
2254
  configurable: true,
2245
2255
  enumerable: true,
2246
2256
  writable: true,
2247
2257
  initializer: null
2248
- }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec67], {
2258
+ }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec68], {
2249
2259
  configurable: true,
2250
2260
  enumerable: true,
2251
2261
  writable: true,
2252
2262
  initializer: null
2253
- }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec68], {
2263
+ }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec69], {
2254
2264
  configurable: true,
2255
2265
  enumerable: true,
2256
2266
  writable: true,
2257
2267
  initializer: null
2258
- }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec69], {
2268
+ }), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec70], {
2259
2269
  configurable: true,
2260
2270
  enumerable: true,
2261
2271
  writable: true,
2262
2272
  initializer: null
2263
- }), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec70], {
2273
+ }), _descriptor62 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec71], {
2264
2274
  configurable: true,
2265
2275
  enumerable: true,
2266
2276
  writable: true,
2267
2277
  initializer: null
2268
- }), _descriptor62 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec71], {
2278
+ }), _descriptor63 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec72], {
2269
2279
  configurable: true,
2270
2280
  enumerable: true,
2271
2281
  writable: true,
2272
2282
  initializer: null
2273
- }), _descriptor63 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec72], {
2283
+ }), _descriptor64 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec73], {
2274
2284
  configurable: true,
2275
2285
  enumerable: true,
2276
2286
  writable: true,
2277
2287
  initializer: null
2278
- }), _descriptor64 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec73], {
2288
+ }), _descriptor65 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec74], {
2279
2289
  configurable: true,
2280
2290
  enumerable: true,
2281
2291
  writable: true,
2282
2292
  initializer: null
2283
- }), _descriptor65 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec74], {
2293
+ }), _descriptor66 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec75], {
2284
2294
  configurable: true,
2285
2295
  enumerable: true,
2286
2296
  writable: true,
2287
2297
  initializer: null
2288
- }), _descriptor66 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec75], {
2298
+ }), _descriptor67 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec76], {
2289
2299
  configurable: true,
2290
2300
  enumerable: true,
2291
2301
  writable: true,
2292
2302
  initializer: null
2293
- }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec76], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec77], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec78], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec79], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2303
+ }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec77], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec78], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec79], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec104], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2294
2304
  return TableAPI;
2295
2305
  }, false);
2296
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNDgiLCJfZGVjNDkiLCJfZGVjNTAiLCJfZGVjNTEiLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzU2IiwiX2RlYzU3IiwiX2RlYzU4IiwiX2RlYzU5IiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjQiLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY1IiwiX2RlYzY2IiwiX2RlYzY3IiwiX2RlYzY4IiwiZXZlbnQiLCJfZGVjNjkiLCJfZGVjNzAiLCJfZGVjNzEiLCJfZGVjNzIiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjNzciLCJfZGVjNzgiLCJfZGVjNzkiLCJfZGVjODAiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsIm1TZXR0aW5ncyIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsIm90aGVycyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJwcm9wZXJ0eUVkaXRNb2RlQ2FjaGUiLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2Rlc2NyaXB0b3IyNCIsIl9kZXNjcmlwdG9yMjUiLCJfZGVzY3JpcHRvcjI2IiwiX2Rlc2NyaXB0b3IyNyIsIl9kZXNjcmlwdG9yMjgiLCJfZGVzY3JpcHRvcjI5IiwiX2Rlc2NyaXB0b3IzMCIsIl9kZXNjcmlwdG9yMzEiLCJfZGVzY3JpcHRvcjMyIiwiX2Rlc2NyaXB0b3IzMyIsIl9kZXNjcmlwdG9yMzQiLCJfZGVzY3JpcHRvcjM1IiwiX2Rlc2NyaXB0b3IzNiIsIl9kZXNjcmlwdG9yMzciLCJfZGVzY3JpcHRvcjM4IiwiX2Rlc2NyaXB0b3IzOSIsIl9kZXNjcmlwdG9yNDAiLCJfZGVzY3JpcHRvcjQxIiwiX2Rlc2NyaXB0b3I0MiIsIl9kZXNjcmlwdG9yNDMiLCJfZGVzY3JpcHRvcjQ0IiwiX2Rlc2NyaXB0b3I0NSIsIl9kZXNjcmlwdG9yNDYiLCJfZGVzY3JpcHRvcjQ3IiwiX2Rlc2NyaXB0b3I0OCIsIl9kZXNjcmlwdG9yNDkiLCJfZGVzY3JpcHRvcjUwIiwiX2Rlc2NyaXB0b3I1MSIsIl9kZXNjcmlwdG9yNTIiLCJfZGVzY3JpcHRvcjUzIiwiX2Rlc2NyaXB0b3I1NCIsIl9kZXNjcmlwdG9yNTUiLCJfZGVzY3JpcHRvcjU2IiwiX2Rlc2NyaXB0b3I1NyIsIl9kZXNjcmlwdG9yNTgiLCJfZGVzY3JpcHRvcjU5IiwiX2Rlc2NyaXB0b3I2MCIsIl9kZXNjcmlwdG9yNjEiLCJfZGVzY3JpcHRvcjYyIiwiX2Rlc2NyaXB0b3I2MyIsIl9kZXNjcmlwdG9yNjQiLCJfZGVzY3JpcHRvcjY1IiwiaWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwibG9jayIsInN0b3JlZEV2ZW50cyIsIm92ZXJyaWRlUm93UHJlc3MiLCJfZGVzY3JpcHRvcjY2IiwiZW5oYW5jZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvcyIsIm9yaWdpbmFsVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uIiwiYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoTWFuaWZlc3RFdmVudHMiLCJoYXNMaXN0ZW5lcnMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFJvd0JpbmRpbmciLCJwYXJhbWV0ZXJzIiwibWRjVGFibGUiLCJjb250ZW50IiwiZGF0YU1vZGVsIiwiZ2V0TW9kZWwiLCJiaW5kTGlzdCIsImdldFJvd0NvbGxlY3Rpb25QYXRoIiwidW5kZWZpbmVkIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIm9FdmVudCIsImNvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJpc0EiLCJ0YWJsZUFQSSIsImdldFBhcmVudCIsImhhbmRsZVN0YXRlQ2hhbmdlIiwiYXR0YWNoSWZOb0xpc3RlbmVycyIsImV2ZW50TmFtZSIsIm1ldGhvZENvbmZpZyIsImF0dGFjaEV2ZW50IiwidWk1RXZlbnQiLCJGUE1IZWxwZXIiLCJsb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZCIsIm1vZHVsZU5hbWUiLCJtZXRob2ROYW1lIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsImdldEN1c3RvbUZ1bmN0aW9uSW5mbyIsImJlZm9yZVJlYmluZFRhYmxlIiwicm93UHJlc3MiLCJzZWxlY3Rpb25DaGFuZ2UiLCJzZXRVcE5vRGF0YUluZm9ybWF0aW9uIiwidGFibGUiLCJnZXROb0RhdGEiLCJvd25lciIsIl9nZXRPd25lciIsImRlc2NyaXB0aW9uIiwidGl0bGUiLCJyZXNvdXJjZU1vZGVsIiwiZ2V0UmVzb3VyY2VNb2RlbCIsInN1ZmZpeCIsIm1ldGFQYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImdldFRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldE5vRGF0YU1lc3NhZ2VNb2RlIiwic2V0QWdncmVnYXRpb24iLCJUZXh0IiwidGV4dCIsImlsbHVzdHJhdGVkTWVzc2FnZSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiQmVmb3JlU2VhcmNoIiwiaWxsdXN0cmF0aW9uU2l6ZSIsImVuYWJsZURlZmF1bHRUaXRsZUFuZERlc2NyaXB0aW9uIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwic2V0SGVhZGVyIiwic2V0SGVhZGVyU3R5bGUiLCJoZWFkZXJTdHlsZSIsInNldEhlYWRlckxldmVsIiwidGl0bGVMZXZlbCIsImdldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCIsInNldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCIsInZhbHVlIiwic2V0QnVzeSIsInNldEF0dGFjaEV2ZW50cyIsImV2ZW50SGFuZGxlcnMiLCJfZ2V0QVBJRXh0ZW5zaW9uIiwic291cmNlIiwiaW5zdGFuY2VNYXAiLCJnZXQiLCJmaW5kIiwiYXBpIiwiZ2V0QmluZGluZyIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJpc0NvbnRleHRNZW51QWN0aXZlIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImFkZE1lc3NhZ2UiLCJnZXRDb250ZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0NvbnRleHRDaGFuZ2UiLCJkZXRhY2hFdmVudCIsInJvd0JpbmRpbmciLCJyZXNvbHZlZFBhdGgiLCJnZXRSZXNvbHZlZFBhdGgiLCJjcmVhdGVNZXNzYWdlIiwicGF0aCIsIm1lc3NhZ2UiLCJNZXNzYWdlIiwidGFyZ2V0IiwicHJvY2Vzc29yIiwicGVyc2lzdGVudCIsIl9nZXRNZXNzYWdlTWFuYWdlciIsImFkZE1lc3NhZ2VzIiwiZ2V0SWQiLCJjaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudCIsIl9vRXZlbnQiLCJpc1RhYmxlUmVhZE9ubHkiLCJpc0VkaXRhYmxlIiwiQ29tbW9uVXRpbHMiLCJnZXRJc0VkaXRhYmxlIiwidmlldyIsImdldFRhcmdldFZpZXciLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsInJlbW92ZU1lc3NhZ2UiLCJpZCIsIm1zZ01hbmFnZXIiLCJtZXNzYWdlcyIsImdldE1lc3NhZ2VNb2RlbCIsImdldERhdGEiLCJyZXN1bHQiLCJlIiwicmVtb3ZlTWVzc2FnZXMiLCJyZWZyZXNoIiwidGFibGVSb3dCaW5kaW5nIiwiaXNSZWxhdGl2ZSIsImdldFRhYmxlRGVmaW5pdGlvbiIsImFwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsImhlYWRlckNvbnRleHQiLCJnZXRIZWFkZXJDb250ZXh0IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJnZXRHcm91cElkIiwiZ2V0UXVpY2tGaWx0ZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwidGFibGVTdGF0ZSIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIm5hbWUiLCJyZXBsYWNlIiwiRGVzY2VuZGluZyIsImRlc2NlbmRpbmciLCJncm91cExldmVscyIsImdyb3VwIiwidGFibGVWaXoiLCJDb250ZW50IiwiaXRlbXMiLCJpdGVtIiwiVmFsdWUiLCJUeXBlIiwiYWdncmVnYXRpb25zIiwiaGFzQWdncmVnYXRpb25zIiwia2V5IiwibmV3S2V5IiwiaW5pdGlhbEV4cGFuc2lvbkxldmVsIiwiZ2V0UGF5bG9hZCIsInRhYmxlUFYiLCJQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MiLCJzZXRUYWJsZVZpc3VhbGl6YXRpb24iLCJwcm9wZXJ0aWVzIiwiR3JvdXBCeSIsIlNvcnRPcmRlciIsIkFnZ3JlZ2F0aW9ucyIsInNldFByb3BlcnRpZXMiLCJFcnJvciIsIlN0cmluZyIsInNldFByZXNlbnRhdGlvblZhcmlhbnQiLCJjdXJyZW50U3RhdGVQViIsImdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MiLCJwcm9wZXJ0eUluZm9OYW1lcyIsInByb3BJbmZvIiwibmV3VGFibGVTdGF0ZSIsImNvbnZlcnRQVlRvU3RhdGUiLCJ0YWJsZVByb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwidGFibGVQYXlsb2FkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsIk1lc3NhZ2luZyIsIl9nZXRSb3dCaW5kaW5nIiwib1RhYmxlIiwiZ2V0Q291bnRzIiwiVGFibGVVdGlscyIsImdldExpc3RCaW5kaW5nRm9yQ291bnQiLCJiYXRjaEdyb3VwSWQiLCJkYXRhIiwiYWRkaXRpb25hbEZpbHRlcnMiLCJnZXRIaWRkZW5GaWx0ZXJzIiwidGhlbiIsImlWYWx1ZSIsImdldENvdW50Rm9ybWF0dGVkIiwib25MaXN0QmluZGluZ0NoYW5nZSIsImZpcmVFdmVudCIsImdldFBhcmFtZXRlcnMiLCJzZXRGYXN0Q3JlYXRpb25Sb3dFbmFibGVtZW50IiwicmVmcmVzaFNlbGVjdGVkQ291bnQiLCJUYWJsZVJ1bnRpbWUiLCJzZXRDb250ZXh0c0FzeW5jIiwib25GaWVsZExpdmVDaGFuZ2UiLCJfb25GaWVsZExpdmVDaGFuZ2UiLCJvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlIiwiZmlsdGVyQmFySUQiLCJnZXRGaWx0ZXIiLCJmaWx0ZXJCYXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRTdXNwZW5kU2VsZWN0aW9uIiwicmViaW5kIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwib25UYWJsZU5hdmlnYXRlIiwib0NvbnRyb2xsZXIiLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZSIsImZ1bGxTY3JlZW5EaWFsb2ciLCJjbG9zZSIsIm5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVhc29uIiwiTmF2aWdhdGlvblJlYXNvbiIsIlJvd1ByZXNzIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQiLCJvblRhYmxlUm93UHJlc3MiLCJwcmVzc0V2ZW50Iiwicm93TmF2aWdhdGlvbkluZm8iLCJhbm5vdGF0aW9uIiwicm93IiwibmF2aWdhdGlvbkluZm8iLCJjb250cm9sbGVyIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJiaW5kaW5nQ29udGV4dCIsImF2b2lkUGFyYWxsZWxDYWxscyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJuYXZpZ2F0aW9uVGFyZ2V0IiwiZWRpdGFibGUiLCJjaGVja0VkaXRhYmxlIiwiY2FsbEV4dGVuc2lvbiIsInRhcmdldFBhdGgiLCJyZWNyZWF0ZUNvbnRleHQiLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJvblZhcmlhbnRTZWxlY3RlZCIsIm9yaWdpbmFsU291cmNlIiwiZ2V0U291cmNlIiwib25WYXJpYW50U2F2ZWQiLCJvblJvd1ByZXNzZWQiLCJjb250ZXh0IiwiZW1wdHlSb3ciLCJpc0luYWN0aXZlIiwiaXNUcmFuc2llbnQiLCJhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImVuYWJsZUFuYWx5dGljcyIsIm9uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJjb250ZXh0cyIsIm1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcyIsIl9vblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzIiwib25PcGVuSW5OZXdUYWJQcmVzcyIsInRoYXQiLCJmb3JFYWNoIiwiTWVzc2FnZUJveCIsIndhcm5pbmciLCJvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQiLCJldnQiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInNlbGVjdGVkQ29udGV4dHMiLCJEZWxldGVIZWxwZXIiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsIm1lc3NhZ2VIYW5kbGVyIiwic2hvd01lc3NhZ2VEaWFsb2ciLCJyZWxlYXNlSG9sZEJ5Q29udHJvbCIsIm9uSW50ZXJuYWxQYXRjaFNlbnQiLCJlZGl0Rmxvd0V4dGVuc2lvbiIsImVkaXRGbG93IiwiaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCIsImhhbmRsZVBhdGNoU2VudCIsImlubGluZUVkaXRGbG93IiwiaXNJbmxpbmVFZGl0UG9zc2libGUiLCJoYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50Iiwib25JbnRlcm5hbERhdGFSZWNlaXZlZCIsImlzUmVjb21tZW5kYXRpb25SZWxldmFudCIsImNvbnRleHRJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllckNvbHVtbiIsInJlc3BvbnNlQ29udGV4dHNBcnJheSIsImdldEFsbEN1cnJlbnRDb250ZXh0cyIsIm5ld0NvbnRleHRzIiwicHVzaCIsInJlY29tbWVuZGF0aW9ucyIsImZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMiLCJzZXREb3dubG9hZFVybCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwic2V0UHJvcGVydHkiLCJmaWx0ZXJzIiwicXVpY2tGaWx0ZXJzIiwic2hvd0NvdW50cyIsInNldENvdW50c0FzTG9hZGluZyIsInJlZnJlc2hVblNlbGVjdGVkQ291bnRzIiwib25QYXN0ZSIsImZvckNvbnRleHRNZW51Iiwic2V0Q29udGV4dE1lbnVBY3RpdmUiLCJyYXdQYXN0ZWREYXRhIiwibWVudSIsImludGVybmFsQ29udGV4dCIsImVuYWJsZVBhc3RlIiwiYWN0aW9uIiwic3JjQ29udGV4dHMiLCJzcmNDb250ZXh0IiwibmV3UGFyZW50Q29udGV4dCIsImdldFBhdGgiLCJhbGwiLCJtb3ZlIiwicGFyZW50IiwiY29weSIsInJlcXVlc3RTaWRlRWZmZWN0c0ZvckNvcHlBY3Rpb24iLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JDaGFuZ2VOZXh0U2libGluZ0FjdGlvbiIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRUcmFuc2xhdGVkVGV4dCIsImdldEVuYWJsZVBhc3RlIiwiY2VsbFNlbGVjdGlvbiIsImdldENlbGxTZWxlY3RvciIsImdldFNlbGVjdGlvbiIsImNvbHVtbnMiLCJQYXN0ZUhlbHBlciIsInBhc3RlUmFuZ2VEYXRhIiwicGFzdGVEYXRhIiwib25DdXQiLCJfb25Db3B5Q3V0Iiwib25Db3B5Iiwib25CZWZvcmVFeHBvcnQiLCJleHBvcnRFdmVudCIsIl9vbkJlZm9yZUV4cG9ydCIsImRhdGFTdGF0ZUluZGljYXRvckZpbHRlciIsInNUYWJsZUNvbnRleHRCaW5kaW5nUGF0aCIsInNUYWJsZVJvd0JpbmRpbmciLCJnZXRUYXJnZXRzIiwib25EYXRhU3RhdGVDaGFuZ2UiLCJkYXRhU3RhdGVJbmRpY2F0b3IiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwiaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcyIsIm1zZyIsInRlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwiZW1wdHlSb3dNZXNzYWdlIiwibWlzc2luZ0NvbHVtbiIsImZpbHRlciIsImhpZGRlblByb3BlcnR5IiwibWVzc2FnZVN0cmlwRXJyb3IiLCJqb2luIiwic2hvd01lc3NhZ2UiLCJpbnRlcm5hbE1vZGVsIiwicmVzdW1lQmluZGluZyIsImJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCIsImdldERhdGFJbml0aWFsaXplZCIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwib0ZpbHRlckNvbnRyb2wiLCJGaWx0ZXJVdGlscyIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwic3VzcGVuZEJpbmRpbmciLCJpbnZhbGlkYXRlQ29udGVudCIsImZhc3RDcmVhdGlvblJvdyIsImdldENyZWF0aW9uUm93IiwidGFibGVCaW5kaW5nIiwiZ2V0Q29udGV4dCIsIlRhYmxlSGVscGVyIiwiZW5hYmxlRmFzdENyZWF0aW9uUm93Iiwib25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJfb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJvbk1hc3NFZGl0QnV0dG9uUHJlc3NlZCIsIm1hc3NFZGl0SGVscGVyIiwiTWFzc0VkaXREaWFsb2dIZWxwZXIiLCJvbkNvbnRleHRNZW51Iiwib25DbG9zZSIsInNldE1hc3NFZGl0RGlhbG9nSGVscGVyIiwib3BlbiIsIm9uU2VsZWN0aW9uQ2hhbmdlZCIsInVpNWV2ZW50Iiwic2V0Q29udGV4dHMiLCJzZWxlY3RlZENvbnRleHQiLCJvbkFjdGlvblByZXNzIiwicGFnZUNvbnRyb2xsZXIiLCJhY3Rpb25OYW1lIiwibW9kZWwiLCJleGVjdXRlQWN0aW9uIiwibm90QXBwbGljYWJsZUNvbnRleHRzIiwiY29udmVydGVkTWV0YWRhdGEiLCJjb252ZXJ0VHlwZXMiLCJnZXRNZXRhTW9kZWwiLCJlbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lIiwibXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nIiwiTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2ciLCJsYWJlbCIsImVudGl0eVNldCIsImVudGl0eVNldE5hbWUiLCJhcHBsaWNhYmxlQ29udGV4dHMiLCJpbnZva2VBY3Rpb24iLCJpbmZvIiwib25Db250ZXh0TWVudVByZXNzIiwiX29uQ29udGV4dE1lbnVQcmVzcyIsIm1hc3NFZGl0RGlhbG9nSGVscGVyIiwiZ2V0TWFzc0VkaXREaWFsb2dIZWxwZXIiLCJ1cGRhdGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJSZWZJZCIsImdldEZpbHRlckJhciIsIl9zZXRGaWx0ZXJCYXIiLCJkZXRhY2hGaWx0ZXJCYXIiLCJzZXRGaWx0ZXIiLCJnZXRGaWx0ZXJCYXJDb250cm9sIiwidGFibGVBUElJZCIsInRhYmxlQVBJTG9jYWxJZCIsInBvdGVudGlhbGZpbHRlckJhcklkIiwiUmVnRXhwIiwiYnlJZCIsImhhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsIl9oYW5kbGVDcmVhdGVBY3RpdmF0ZSIsIm9uRHJhZ0VudGVyRG9jdW1lbnQiLCJfb25EcmFnRW50ZXJEb2N1bWVudCIsIm9uRHJhZ1N0YXJ0RG9jdW1lbnQiLCJfb25EcmFnU3RhcnREb2N1bWVudCIsIm9uRHJvcERvY3VtZW50IiwiX29uRHJvcERvY3VtZW50Iiwib25Db2xsYXBzZUV4cGFuZE5vZGUiLCJleHBhbmQiLCJnZXRNZXRhZGF0YSIsIl9vbkNvbGxhcHNlRXhwYW5kTm9kZSIsIm9uTW92ZVVwRG93biIsIm1vdmVVcCIsIl9vbk1vdmVVcERvd24iLCJnZXRTZWxlY3Rpb25WYXJpYW50IiwiU3RhdGVIZWxwZXIiLCJzZXRTZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsInByZWZpbGxEZXNjcmlwdGlvbnMiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiX2NyZWF0ZUNvbnRlbnRWMk1vZGUiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwibWV0YU1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb250ZXh0UGF0aCIsImRlZXBDbG9uZSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwiaWdub3JlZEZpZWxkcyIsImNvbGxlY3Rpb25FbnRpdHkiLCJjb2xsZWN0aW9uIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJoYW5kbGVyUHJvdmlkZXIiLCJUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIiwiZnJhZ21lbnQiLCJYTUxQcmVwcm9jZXNzb3IiLCJwcm9jZXNzIiwicGFyc2VYTUxTdHJpbmciLCJ4bWwiLCJqc3giLCJyZW5kZXJBc1hNTCIsIk1kY1RhYmxlVGVtcGxhdGUiLCJnZXRNRENUYWJsZVRlbXBsYXRlIiwiZ2V0Q29udmVydGVkTWV0YWRhdGEiLCJtb2RlbHMiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImRlc3Ryb3kiLCJGcmFnbWVudCIsImxvYWQiLCJkZWZpbml0aW9uIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJjb250YWluaW5nVmlldyIsImdldFJvb3RDb250cm9sIiwicHJvcGVydHlLZXkiLCJwcm9wZXJ0eVZhbHVlIiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwiaW5jbHVkZXMiLCJnZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QiLCJwcm9wZXJ0eU5hbWUiLCJlbnRpdHlQYXRoIiwidGFyZ2V0TWV0YVBhdGgiLCJwcm9wZXJ0eUluZm8iLCJhbm5vdGF0aW9uUGF0aCIsInRhcmdldE9iamVjdCIsImNvbnZlcnRlZHRhcmdldE9iamVjdCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImNvbnZlcnRNZXRhTW9kZWxDb250ZXh0IiwiZGF0YU1vZGVsUGF0aCIsIkZpZWxkVGVtcGxhdGluZyIsImdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JWYWx1ZSIsImNyZWF0ZUFueUNvbnRyb2wiLCJNb2RlQXNFeHByZXNzaW9uIiwicm93Q29udGV4dCIsImFueU9iamVjdCIsIkFueSIsImFueSIsInNldE1vZGVsIiwiZ2V0UHJvcGVydHlFZGl0TW9kZSIsInByb3BlcnR5Rm9yRmllbGRDb250cm9sIiwiZWRpdE1vZGVBc0V4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJRm9ybWF0dGVycyIsImdldEVkaXRNb2RlIiwic2V0QmluZGluZ0NvbnRleHQiLCJhZGREZXBlbmRlbnQiLCJlZGl0TW9kZSIsImdldEFueSIsInNob3dDb2x1bW5zIiwiY29sdW1uS2V5cyIsImNvbHVtbktleSIsIm1vZGlmeUR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uIiwiaGlkZUNvbHVtbnMiLCJzZXRJZ25vcmVkRmllbGRzIiwiZ2V0SWdub3JlZEZpZWxkcyIsImdldENvbnRyb2xTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImZ1bGxTdGF0ZSIsImluaXRpYWxTdGF0ZSIsImdldFN0YXRlS2V5Iiwib0NvbnRyb2wiLCJnZXRMb2NhbElkIiwiZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHlTdGF0aWMiLCJnZXRNRENUYWJsZSIsImFzeW5jQ2FsbCIsImxvY2tOYW1lIiwic3VwcHJlc3NJbnZhbGlkYXRlIiwic2V0RnVsbFNjcmVlbkRpYWxvZyIsImRpYWxvZyIsInNldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MiLCJnZXRQcm9wZXJ0eUluZm9zIiwiZW5oYW5jZWRQcm9wZXJ0eUluZm8iLCJ2aXNpYmxlIiwiZXhwb3J0U2V0dGluZ3MiLCJjbGlwYm9hcmRTZXR0aW5ncyIsInZpc3VhbFNldHRpbmdzIiwidG9vbHRpcCIsImlzS2V5IiwiZXh0ZW5zaW9uIiwidGVjaG5pY2FsbHlHcm91cGFibGUiLCJ0ZWNobmljYWxseUFnZ3JlZ2F0YWJsZSIsImN1c3RvbUFnZ3JlZ2F0ZSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwiX3JlZiIsIl8iLCJtYXhDb25kaXRpb25zIiwiZm9ybWF0T3B0aW9ucyIsImNvbnN0cmFpbnRzIiwiZ3JvdXBMYWJlbCIsImNhc2VTZW5zaXRpdmUiLCJmaWx0ZXJhYmxlIiwic29ydGFibGUiLCJncm91cGFibGUiLCJkYXRhVHlwZSIsImFnZ3JlZ2F0YWJsZSIsInVuaXQiLCJfcmVmMiIsInNldENhY2hlZFByb3BlcnR5SW5mb3MiLCJnZXRDYWNoZWRQcm9wZXJ0eUluZm9zIiwiY29sbGVjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImdldFRhYmxlVGVtcGxhdGVCaW5kaW5nSW5mbyIsInJvd0JpbmRpbmdJbmZvIiwic3VzcGVuZGVkIiwiJGNvdW50IiwiZW5hYmxlJHNlbGVjdCIsInNlbGVjdCIsImtleXMiLCJyZXF1ZXN0QXRMZWFzdCIsIiRzZWxlY3QiLCJlbmFibGUkJGdldEtlZXBBbGl2ZUNvbnRleHQiLCIkJGdldEtlZXBBbGl2ZUNvbnRleHQiLCIkJGNsZWFyU2VsZWN0aW9uT25GaWx0ZXIiLCIkJGdyb3VwSWQiLCIkJHVwZGF0ZUdyb3VwSWQiLCIkJG93blJlcXVlc3QiLCIkJHBhdGNoV2l0aG91dFNpZGVFZmZlY3RzIiwicGF0Y2hDb21wbGV0ZWQiLCJiaW5kIiwiZGF0YVJlY2VpdmVkIiwiZGF0YVJlcXVlc3RlZCIsImNoYW5nZSIsImNyZWF0ZUFjdGl2YXRlIiwiY3JlYXRlU2VudCIsImhhbmRsZUNyZWF0ZVNlbnQiLCJwYXRjaFNlbnQiLCJldmVudHMiLCJhZGRTZXR0aW5nIiwiZ2V0U2V0dGluZ3NGb3JNYW5pZmVzdCIsInRhYmxlU2V0dGluZ3MiLCJlbmFibGVFeHBvcnQiLCJleHBvcnRSZXF1ZXN0U2l6ZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInNlbGVjdGlvbk1vZGUiLCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMiLCJlbmFibGVTZWxlY3RBbGwiLCJzZWxlY3Rpb25MaW1pdCIsImNvbmRlbnNlZFRhYmxlTGF5b3V0IiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRpb25GaWVsZHMiLCJjcmVhdGVBdEVuZCIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJvdXRib3VuZCIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjdXN0b21Db250ZW50IiwidmlzaWJsZUZpZWxkcyIsIm9wZXJhdGlvbkdyb3VwaW5nTW9kZSIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsInF1aWNrVmFyaWFudFNlbGVjdGlvbiIsInBhdGhzIiwiZmluZFNsb3RBY3Rpb25Gcm9tS2V5IiwiYWN0aW9ucyIsImEiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsImdldEZ1bGxNZXRhUGF0aCIsImVuZHNXaXRoIiwiZm9yY2VDcmVhdGlvbiIsImdldE93bmVyQ29udGV4dFBhdGgiLCJmdWxsTWV0YVBhdGgiLCJtZXRhUGF0aENvbnRleHQiLCJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ1cGRhdGVQcm9wZXJ0aWVzRnJvbVRhYmxlRGVmaW5pdGlvbiIsImNvbnZlcnRlZFR5cGVzIiwidGFyZ2V0VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImNyZWF0ZU1EQ1RhYmxlIiwic2V0dXBPcHRpbWlzdGljQmF0Y2giLCJzZXRNZXRhUGF0aCIsIk1hbmFnZWRPYmplY3RNZXRhZGF0YSIsImlzR2VuZXJhdGVkSWQiLCJjb250ZW50SWQiLCJ1c2VCYXNpY1NlYXJjaCIsImdlbmVyYXRlIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiU3RhbmRhcmRBY3Rpb25LZXlzIiwiQ3JlYXRlIiwibW9kZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwic3BsaXQiLCJnZXRDb3VudCIsIk1hY3JvQVBJIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZUFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgRW50aXR5VHlwZSwgTmF2aWdhdGlvblByb3BlcnR5LCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50VHlwZVR5cGVzLFxuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgdHlwZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YsIFhNTEV2ZW50SG9sZGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBtaXhpbiwgcHJvcGVydHksIHhtbEV2ZW50SGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgSVJvd0JpbmRpbmdJbnRlcmZhY2UgZnJvbSBcInNhcC9mZS9jb3JlL0lSb3dCaW5kaW5nSW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IHBhcnNlWE1MU3RyaW5nLCB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2dcIjtcbmltcG9ydCBOYXZpZ2F0aW9uUmVhc29uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9yb3V0aW5nL05hdmlnYXRpb25SZWFzb25cIjtcbmltcG9ydCBBbnkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0FueVwiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdGdldEN1c3RvbUZ1bmN0aW9uSW5mbyxcblx0dHlwZSBFeHRlcm5hbE1ldGhvZENvbmZpZyxcblx0dHlwZSBUYWJsZVR5cGUsXG5cdHR5cGUgVGFibGVWaXN1YWxpemF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgU3RhbmRhcmRBY3Rpb25LZXlzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL3RhYmxlL1N0YW5kYXJkQWN0aW9uc1wiO1xuaW1wb3J0IERlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQYXN0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9QYXN0ZUhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJvdXRpbmdOYXZpZ2F0aW9uUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7XG5cdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgsXG5cdGdldFRhcmdldE9iamVjdFBhdGgsXG5cdHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyB0eXBlIERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkJpbmRpbmdJbmZvLCBFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db2xsZWN0aW9uQmluZGluZ0luZm9cIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgKiBhcyBGaWVsZFRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJCQlY0IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2xTdGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2luc2lnaHRzL0NvbW1vbkluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQmFzaWNTZWFyY2ggZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQmFzaWNTZWFyY2hcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCAqIGFzIE1kY1RhYmxlVGVtcGxhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHR5cGUgUXVpY2tGaWx0ZXJTZWxlY3RvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9RdWlja0ZpbHRlclNlbGVjdG9yXCI7XG5pbXBvcnQgVGFibGVDcmVhdGlvbk9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVDcmVhdGlvbk9wdGlvbnNcIjtcbmltcG9ydCBUYWJsZUhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUhlbHBlclwiO1xuaW1wb3J0IFRhYmxlUnVudGltZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZVJ1bnRpbWVcIjtcbmltcG9ydCBUYWJsZVV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0UFZUb1N0YXRlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvYWRhcHRlci9UYWJsZVBWVG9TdGF0ZVwiO1xuaW1wb3J0IE1hc3NFZGl0RGlhbG9nSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL21hc3NFZGl0L01hc3NFZGl0RGlhbG9nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFB2UHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgUHJlc2VudGF0aW9uVmFyaWFudENsYXNzIGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlVG9hc3QgZnJvbSBcInNhcC9tL01lc3NhZ2VUb2FzdFwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YVN0YXRlSW5kaWNhdG9yJERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL3BsdWdpbnMvRGF0YVN0YXRlSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFBhc3RlUHJvdmlkZXIkUGFzdGVFdmVudCB9IGZyb20gXCJzYXAvbS9wbHVnaW5zL1Bhc3RlUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFdmVudCwgZGVmYXVsdCBhcyBVSTVFdmVudCB9IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdE1ldGFkYXRhXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBGcmFnbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRnJhZ21lbnRcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgRHJhZ0Ryb3BJbmZvIGZyb20gXCJzYXAvdWkvY29yZS9kbmQvRHJhZ0Ryb3BJbmZvXCI7XG5pbXBvcnQgeyBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgWE1MUHJlcHJvY2Vzc29yIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1hNTFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUge1xuXHRkZWZhdWx0IGFzIE1EQ1RhYmxlLFxuXHRNRENUYWJsZVByb3BlcnR5SW5mbyBhcyBQcm9wZXJ0eUluZm8sXG5cdGRlZmF1bHQgYXMgVGFibGUsXG5cdFRhYmxlJEJlZm9yZUV4cG9ydEV2ZW50LFxuXHRUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCxcblx0VGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnRcbn0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIFR5cGVDb25maWcgZnJvbSBcInNhcC91aS9tZGMvVHlwZUNvbmZpZ1wiO1xuaW1wb3J0IHR5cGUgeyBHcm91cExldmVscywgSXRlbXMsIFNvcnRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHsgdHlwZSBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgT0RhdGFDb250ZXh0QmluZGluZyRQYXRjaFNlbnRFdmVudCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU3RhdGVIZWxwZXIgZnJvbSBcIi4uL21kYy9hZGFwdGVyL1N0YXRlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi9UYWJsZURlZmluaXRpb25cIjtcbmltcG9ydCBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIGZyb20gXCIuL1RhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXJcIjtcbmltcG9ydCBDb2x1bW5NYW5hZ2VtZW50IGZyb20gXCIuL21peGluL0NvbHVtbk1hbmFnZW1lbnRcIjtcbmltcG9ydCBDb250ZXh0TWVudUhhbmRsZXIgZnJvbSBcIi4vbWl4aW4vQ29udGV4dE1lbnVIYW5kbGVyXCI7XG5pbXBvcnQgRW1wdHlSb3dzSGFuZGxlciBmcm9tIFwiLi9taXhpbi9FbXB0eVJvd3NIYW5kbGVyXCI7XG5pbXBvcnQgVGFibGVBUElTdGF0ZUhhbmRsZXIgZnJvbSBcIi4vbWl4aW4vVGFibGVBUElTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBUYWJsZUV4cG9ydCBmcm9tIFwiLi9taXhpbi9UYWJsZUV4cG9ydFwiO1xuaW1wb3J0IFRhYmxlSGllcmFyY2h5IGZyb20gXCIuL21peGluL1RhYmxlSGllcmFyY2h5XCI7XG5pbXBvcnQgVGFibGVPcHRpbWlzdGljQmF0Y2ggZnJvbSBcIi4vbWl4aW4vVGFibGVPcHRpbWlzdGljQmF0Y2hcIjtcbmltcG9ydCBUYWJsZVNoYXJpbmcgZnJvbSBcIi4vbWl4aW4vVGFibGVTaGFyaW5nXCI7XG5cbmV4cG9ydCB0eXBlIEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8gPSBQcm9wZXJ0eUluZm8gJiB7XG5cdG5hbWU6IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0cmVsYXRpdmVQYXRoOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cdG1vZGU/OiBEaXNwbGF5TW9kZTtcblx0dmFsdWVQcm9wZXJ0eT86IHN0cmluZztcblx0dHlwZUNvbmZpZz86IFR5cGVDb25maWc7XG5cdGV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlPzogc3RyaW5nO1xuXHRhZGRpdGlvbmFsTGFiZWxzPzogc3RyaW5nW107XG5cdHR5cGU/OiBzdHJpbmc7XG5cdHRleHRBcnJhbmdlbWVudD86IHtcblx0XHR0ZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRtb2RlOiBEaXNwbGF5TW9kZTtcblx0fTtcbn07XG5cbnR5cGUgRGF0YU1vZGVsQ29udmVyc2lvbiA9IHtcblx0ZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHk+O1xuXHRjb252ZXJ0ZWR0YXJnZXRPYmplY3Q6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXM7XG59O1xuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtblByb3BlcnRpZXMgPSB7XG5cdGtleTogc3RyaW5nO1xuXHR2aXNpYmlsaXR5OiBib29sZWFuO1xufVtdO1xuXG5leHBvcnQgdHlwZSBEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbiA9IHsgY29sdW1uS2V5OiBzdHJpbmc7IHZpc2libGU6IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVGFibGVTdGF0ZSA9IHtcblx0aW5uZXJUYWJsZT86IHtcblx0XHRpbml0aWFsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHRcdHN1cHBsZW1lbnRhcnlDb25maWc/OiBvYmplY3Q7XG5cdFx0fTtcblx0XHRmdWxsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHRcdGZpbHRlcj86IG9iamVjdDtcblx0XHR9O1xuXHR9O1xuXHRxdWlja0ZpbHRlcj86IHtcblx0XHRzZWxlY3RlZEtleT86IHN0cmluZztcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcblx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrIHtcblx0ZW5hYmxlT3B0aW1pc3RpY0JhdGNoTW9kZSgpOiB2b2lkO1xuXHRtZXRhUGF0aDogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0ZW1wdHlSb3dzRW5hYmxlZDogYm9vbGVhbjtcblx0Z2V0Q29udGVudCgpOiBUYWJsZTtcblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbjtcblx0Z2V0U2VsZWN0ZWRDb250ZXh0cygpOiBDb250ZXh0W107XG5cdGlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW47XG5cdGNyZWF0ZUFueUNvbnRyb2woTW9kZUFzRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIHJvd0NvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQpOiB0eXBlb2YgQW55O1xuXHRnZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBEYXRhTW9kZWxDb252ZXJzaW9uIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgVGFibGVBUElcblx0ZXh0ZW5kcyBUYWJsZUFQSVN0YXRlSGFuZGxlcixcblx0XHRUYWJsZUV4cG9ydCxcblx0XHRUYWJsZU9wdGltaXN0aWNCYXRjaCxcblx0XHRUYWJsZUhpZXJhcmNoeSxcblx0XHRFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdENvbnRleHRNZW51SGFuZGxlcixcblx0XHRUYWJsZVNoYXJpbmcsXG5cdFx0Q29sdW1uTWFuYWdlbWVudCB7XG5cdC8vIGFnZ3JlZ2F0aW9uXG5cdGdldENvbnRlbnQoKTogTURDVGFibGU7XG5cdC8vIGFzc29jaWF0aW9uXG5cdGdldEZpbHRlckJhcigpOiBzdHJpbmc7XG5cdC8vIHByb3BlcnR5XG5cdGdldERhdGFJbml0aWFsaXplZCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHByaXZhdGVcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCIsIHsgcmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIl0gfSlcbkBtaXhpbihUYWJsZUFQSVN0YXRlSGFuZGxlcilcbkBtaXhpbihUYWJsZUV4cG9ydClcbkBtaXhpbihUYWJsZU9wdGltaXN0aWNCYXRjaClcbkBtaXhpbihUYWJsZUhpZXJhcmNoeSlcbkBtaXhpbihFbXB0eVJvd3NIYW5kbGVyKVxuQG1peGluKENvbnRleHRNZW51SGFuZGxlcilcbkBtaXhpbihUYWJsZVNoYXJpbmcpXG5AbWl4aW4oQ29sdW1uTWFuYWdlbWVudClcbmNsYXNzIFRhYmxlQVBJIGV4dGVuZHMgTWFjcm9BUEkgaW1wbGVtZW50cyBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yLCBJUm93QmluZGluZ0ludGVyZmFjZSwgSVRhYmxlQmxvY2sge1xuXHRjb250ZW50ITogVGFibGU7XG5cblx0bWFzc0VkaXREaWFsb2dIZWxwZXI6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkO1xuXG5cdG9yaWdpbmFsVGFibGVEZWZpbml0aW9uITogVGFibGVWaXN1YWxpemF0aW9uO1xuXG5cdHByb3BlcnR5RWRpdE1vZGVDYWNoZTogUmVjb3JkPHN0cmluZywgdHlwZW9mIEFueT4gPSB7fTtcblxuXHRpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5ncz86IFByb3BlcnRpZXNPZjxUYWJsZUFQST4gJiB7IGlkPzogc3RyaW5nIH0sIC4uLm90aGVyczogJENvbnRyb2xTZXR0aW5nc1tdKSB7XG5cdFx0c3VwZXIobVNldHRpbmdzLCAuLi5vdGhlcnMpO1xuXHRcdHRoaXMub3JpZ2luYWxUYWJsZURlZmluaXRpb24gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbjtcblxuXHRcdHRoaXMuYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk7XG5cdFx0dGhpcy5hdHRhY2hNYW5pZmVzdEV2ZW50cygpO1xuXHRcdHRoaXMub3ZlcnJpZGVSb3dQcmVzcyA9IHRoaXMuaGFzTGlzdGVuZXJzKFwicm93UHJlc3NcIik7XG5cdH1cblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLmNvcmUuSVJvd0JpbmRpbmdJbnRlcmZhY2VcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9JUm93QmluZGluZ0ludGVyZmFjZSA9IHRydWU7XG5cblx0Z2V0Um93QmluZGluZyhwYXJhbWV0ZXJzPzogb2JqZWN0KTogT0RhdGFMaXN0QmluZGluZyB7XG5cdFx0Y29uc3QgbWRjVGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3QgZGF0YU1vZGVsID0gbWRjVGFibGUuZ2V0TW9kZWwoKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0bWRjVGFibGUuZ2V0Um93QmluZGluZygpID8/XG5cdFx0XHQoZGF0YU1vZGVsPy5iaW5kTGlzdCh0aGlzLmdldFJvd0NvbGxlY3Rpb25QYXRoKCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBhcmFtZXRlcnMpIGFzIE9EYXRhTGlzdEJpbmRpbmcpXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdFx0U3RhdGVVdGlsLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdHN0YXRlQ2hhbmdlSGFuZGxlcihvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRpZiAoY29udHJvbC5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0Y29uc3QgdGFibGVBUEkgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgeyBoYW5kbGVTdGF0ZUNoYW5nZT86IEZ1bmN0aW9uIH07XG5cdFx0XHRpZiAodGFibGVBUEk/LmhhbmRsZVN0YXRlQ2hhbmdlKSB7XG5cdFx0XHRcdHRhYmxlQVBJLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaCB0aGUgZXZlbnQgaGFuZGxlcnMgY29taW5nIGZyb20gdGhlIG1hbmlmZXN0IGZvciAncm93UHJlc3MnLCAnc2VsZWN0aW9uQ2hhbmdlJyBhbmQgJ2JlZm9yZVJlYmluZFRhYmxlJy5cblx0ICogV2UgaWdub3JlIHRoZSBtYW5pZmVzdCBoYW5kbGVycyBpZiB0aGUgdGFibGUgYWxyZWFkeSBoYXMgZXZlbnQgaGFuZGxlcnMgKG92ZXJyaWRlKS5cblx0ICovXG5cdHByaXZhdGUgYXR0YWNoTWFuaWZlc3RFdmVudHMoKTogdm9pZCB7XG5cdFx0Y29uc3QgYXR0YWNoSWZOb0xpc3RlbmVycyA9IChldmVudE5hbWU6IHN0cmluZywgbWV0aG9kQ29uZmlnOiBFeHRlcm5hbE1ldGhvZENvbmZpZyB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLmhhc0xpc3RlbmVycyhldmVudE5hbWUpICYmIG1ldGhvZENvbmZpZyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoZXZlbnROYW1lLCAodWk1RXZlbnQ6IFVJNUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0RlBNSGVscGVyLmxvYWRNb2R1bGVBbmRDYWxsTWV0aG9kKG1ldGhvZENvbmZpZy5tb2R1bGVOYW1lLCBtZXRob2RDb25maWcubWV0aG9kTmFtZSwgdWk1RXZlbnQsIHVpNUV2ZW50KS5jYXRjaChcblx0XHRcdFx0XHRcdChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0YEZhaWxlZCB0byBjYWxsICR7ZXZlbnROYW1lfSBldmVudCBoYW5kbGVyICR7bWV0aG9kQ29uZmlnLm1vZHVsZU5hbWV9ICR7bWV0aG9kQ29uZmlnLm1ldGhvZE5hbWV9YCxcblx0XHRcdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFxuXHRcdFx0XCJiZWZvcmVSZWJpbmRUYWJsZVwiLFxuXHRcdFx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5iZWZvcmVSZWJpbmRUYWJsZSwgdGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2wpXG5cdFx0KTtcblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFwicm93UHJlc3NcIiwgZ2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5yb3dQcmVzcywgdGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2wpKTtcblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFxuXHRcdFx0XCJzZWxlY3Rpb25DaGFuZ2VcIixcblx0XHRcdGdldEN1c3RvbUZ1bmN0aW9uSW5mbyh0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uc2VsZWN0aW9uQ2hhbmdlLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYW4gaWxsdXN0cmF0ZWQgbWVzc2FnZSBkdXJpbmcgdGhlIGluaXRpYWxpc2F0aW9uIG9mIHRoZSB0YWJsZSBBUEkuXG5cdCAqIFVzZWZ1bCBpZiB3ZSBoYXZlIGEgYnVpbGRpbmcgYmxvY2sgaW4gYSBsaXN0IHJlcG9ydCB3aXRob3V0IGluaXRpYWwgbG9hZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRpZiAoIXRhYmxlIHx8IHRhYmxlLmdldE5vRGF0YSgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRsZXQgZGVzY3JpcHRpb247XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob3duZXIpO1xuXHRcdFx0aWYgKHJlc291cmNlTW9kZWwpIHtcblx0XHRcdFx0bGV0IHN1ZmZpeDtcblx0XHRcdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLm1ldGFQYXRoO1xuXHRcdFx0XHRpZiAobWV0YVBhdGgpIHtcblx0XHRcdFx0XHRzdWZmaXggPSBtZXRhUGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IG1ldGFQYXRoLnN1YnN0cmluZygxKSA6IG1ldGFQYXRoO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpdGxlID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9JTExVU1RSQVRFRF9NRVNTQUdFX1RJVExFX0JFRk9SRVNFQVJDSFwiKTtcblx0XHRcdFx0ZGVzY3JpcHRpb24gPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIiwgdW5kZWZpbmVkLCBzdWZmaXgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUudGVtcGxhdGVzXCIpITtcblx0XHRcdHRpdGxlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfSUxMVVNUUkFURURfTUVTU0FHRV9USVRMRV9CRUZPUkVTRUFSQ0hcIik7XG5cdFx0XHRkZXNjcmlwdGlvbiA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSA9PT0gXCJ0ZXh0XCIpIHtcblx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJub0RhdGFcIiwgbmV3IFRleHQoeyB0ZXh0OiBkZXNjcmlwdGlvbiB9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZSA9IG5ldyBJbGx1c3RyYXRlZE1lc3NhZ2Uoe1xuXHRcdFx0XHR0aXRsZTogdGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcblx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5CZWZvcmVTZWFyY2gsXG5cdFx0XHRcdGlsbHVzdHJhdGlvblNpemU6IHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSxcblx0XHRcdFx0ZW5hYmxlRGVmYXVsdFRpdGxlQW5kRGVzY3JpcHRpb246IGZhbHNlXG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcIm5vRGF0YVwiLCBpbGx1c3RyYXRlZE1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9tYWNyb3NfY29udHJvbHNfc2VjdGlvbl9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRnZXRTZWN0aW9uQ29udGVudFJvbGUoKTogXCJwcm92aWRlclwiIHwgXCJjb25zdW1lclwiIHtcblx0XHRyZXR1cm4gXCJjb25zdW1lclwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZW5kRGF0YVRvQ29uc3VtZXIgbWV0aG9kIHdoaWNoIGlzIGEgcGFydCBvZiB0aGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuXHQgKlxuXHQgKiBXaWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlNlY3Rpb24gY29udHJvbCB3aGVuIHRoZXJlIGlzIGEgVGFibGUgYnVpbGRpbmcgYmxvY2sgcmVuZGVyZWQgd2l0aGluIGEgc2VjdGlvblxuXHQgKiBhbG9uZyB3aXRoIHRoZSBjb25zdW1lckRhdGEgaS5lLiBzZWN0aW9uJ3MgZGF0YSBzdWNoIGFzIHRpdGxlIGFuZCB0aXRsZSBsZXZlbCB3aGljaCBpcyB0aGVuIGFwcGxpZWQgdG8gdGhlIHRhYmxlIHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyBhY2NvcmRpbmdseS5cblx0ICpcblx0ICovXG5cblx0c2VuZERhdGFUb0NvbnN1bWVyKGNvbnN1bWVyRGF0YTogQ29uc3VtZXJEYXRhKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyKGNvbnN1bWVyRGF0YS50aXRsZSk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlclN0eWxlKGNvbnN1bWVyRGF0YS5oZWFkZXJTdHlsZSBhcyBUaXRsZUxldmVsKTtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyTGV2ZWwoY29uc3VtZXJEYXRhLnRpdGxlTGV2ZWwgYXMgVGl0bGVMZXZlbCk7XG5cdFx0fVxuXHR9XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl1cblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHR0YWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZW50SWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRmcm96ZW5Db2x1bW5Db3VudD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNhYmxlQ29sdW1uRnJlZXplPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJBdXRvXCIsIFwiRml4ZWRcIl0gfSlcblx0cm93Q291bnRNb2RlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0cm93Q291bnQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzY3JvbGxUaHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJHcmlkVGFibGVcIiwgXCJSZXNwb25zaXZlVGFibGVcIiwgXCJBbmFseXRpY2FsVGFibGVcIl0gfSlcblx0dHlwZT86IFRhYmxlVHlwZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VDb25kZW5zZWRMYXlvdXQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0c2VsZWN0aW9uTW9kZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGFjdGlvbnM/OiAoQWN0aW9uIHwgQWN0aW9uR3JvdXAgfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwT3ZlcnJpZGUpW107XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0Y29sdW1ucz86IChDb2x1bW4gfCBDb2x1bW5PdmVycmlkZSlbXTtcblxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ3JlYWQtb25seScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZWFkT25seSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICovXG5cdC8vQGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGghOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHNpemUgb2YgdGhlIElsbHVzdHJhdGVkTWVzc2FnZSBpbiB0aGUgdGFibGUsIG9yIHJlbW92ZXMgaXQgY29tcGxldGVseS5cblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TcG90YCBvciBgdGV4dGAuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1NZWRpdW1cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRXh0cmFTbWFsbFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUxhcmdlXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TcG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TbWFsbFwiLFxuXHRcdFx0XCJ0ZXh0XCJcblx0XHRdXG5cdH0pXG5cdG1vZGVGb3JOb0RhdGFNZXNzYWdlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRhdGFJbml0aWFsaXplZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0YmluZGluZ1N1c3BlbmRlZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0b3V0RGF0ZWRCaW5kaW5nITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRpc0FscCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHR2YXJpYW50TWFuYWdlbWVudD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlnbm9yZWRGaWVsZHM/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpZWxkTW9kZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgZGVmYXVsdFZhbHVlOiBUaXRsZUxldmVsLkF1dG8gfSlcblx0aGVhZGVyTGV2ZWwhOiBUaXRsZUxldmVsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluaXRpYWxMb2FkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKjxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAgLSBTb3J0PGJyLz5cblx0ICogIC0gQ29sdW1uPGJyLz5cblx0ICogIC0gRmlsdGVyPGJyLz5cblx0ICogIC0gR3JvdXA8YnIvPlxuXHQgKjxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGhlYWRlcj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgZW1wdHkgcm93cyBhcmUgZW5hYmxlZC4gVGhpcyBhbGxvd3MgdG8gaGF2ZSBkeW5hbWljIGVuYWJsZW1lbnQgb2YgdGhlIGVtcHR5IHJvd3MgdXNpbmcgdGhlIHNldHRlciBmdW5jdGlvbi5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGVtcHR5Um93c0VuYWJsZWQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICpcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc0JpbmRpbmdJbmZvOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aW5NdWx0aVZpZXc/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcz86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlU2VsZWN0QWxsPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUNyZWF0aW9uT3B0aW9uc1wiLCBkZWZhdWx0Q2xhc3M6IFRhYmxlQ3JlYXRpb25PcHRpb25zIH0pXG5cdGNyZWF0aW9uTW9kZT86IFRhYmxlQ3JlYXRpb25PcHRpb25zO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGlvbiB0byBmb3J3YXJkIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgY29udHJvbCB0byB0aGUgbWRjIGNvbnRyb2wuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAubS5JbGx1c3RyYXRlZE1lc3NhZ2VcIixcblx0XHRhbHRUeXBlczogW1wic2FwLm0uVGV4dFwiXSxcblx0XHRmb3J3YXJkaW5nOiB7XG5cdFx0XHRnZXR0ZXI6IFwiZ2V0TURDVGFibGVcIixcblx0XHRcdGFnZ3JlZ2F0aW9uOiBcIm5vRGF0YVwiXG5cdFx0fVxuXHR9KVxuXHRub0RhdGE/OiBJbGx1c3RyYXRlZE1lc3NhZ2U7XG5cblx0LyoqXG5cdCAqIEEgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB0byBjb250cm9sIHRoZSBhZ2dyZWdhdGlvbiBiZWhhdmlvclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXG5cdH0pXG5cdGFuYWx5dGljYWxDb25maWd1cmF0aW9uPzogQW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gb2YgdGhlIHRhYmxlLlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCJcblx0fSlcblx0cXVpY2tWYXJpYW50U2VsZWN0aW9uPzogUXVpY2tWYXJpYW50U2VsZWN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgbWFzcyBlZGl0IG9mIHRoZSB0YWJsZS5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCJcblx0fSlcblx0bWFzc0VkaXQ/OiBNYXNzRWRpdDtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHRhYmxlIGlzIGFib3V0IHRvIGJlIHJlYm91bmQuIFRoaXMgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcgaW5mby5cblx0ICpcblx0ICogVGhlIGV2ZW50IGNvbnRhaW5zIGEgcGFyYW1ldGVyLCBgY29sbGVjdGlvbkJpbmRpbmdJbmZvYCwgd2hpY2ggaXMgYW4gaW5zdGFuY2Ugb2YgYENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSWAuXG5cdCAqIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICpcblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhdHRhY2ggZXZlbnQgaGFuZGxlcnMgdG8gdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZCBvciByZWFkOiBGaWx0ZXJzLCBTb3J0ZXJzLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIHJlYWQgdGhlIGJpbmRpbmcgaW5mby5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQ6IFNlbGVjdHMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRiZWZvcmVSZWJpbmRUYWJsZT86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgcm93OyB0aGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm93IGlzIGNob3Nlbi5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gbWFudWFsbHkuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRyb3dQcmVzcz86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzd2l0Y2hlZCBiZXR3ZWVuIHZpZXcgaW4gYW4gQUxQLlxuXHQgKi9cblx0QGV2ZW50KClcblx0c2VnbWVudGVkQnV0dG9uUHJlc3M/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2F2ZWQgdGhlIHZhcmlhbnQuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHR2YXJpYW50U2F2ZWQ/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0ZWQgYSB2YXJpYW50LlxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBUYWJsZSBsaXN0IGJpbmRpbmcgY2hhbmdlcy5cblx0ICovXG5cdEBldmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogRnVuY3Rpb247XG5cblx0QGV2ZW50KClcblx0aW50ZXJuYWxEYXRhUmVxdWVzdGVkITogRnVuY3Rpb247XG5cblx0Y29udGV4dE9iamVjdFBhdGghOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdHByaXZhdGUgaWdub3JlQ29udGV4dENoYW5nZUV2ZW50ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBsb2NrOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXG5cdHN0b3JlZEV2ZW50czogRXZlbnRIYW5kbGVyW10gPSBbXTtcblxuXHRvdmVycmlkZVJvd1ByZXNzID0gZmFsc2U7XG5cblx0Z2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudDtcblx0fVxuXG5cdHNldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaWdub3JlQ29udGV4dENoYW5nZUV2ZW50ID0gdmFsdWU7XG5cdH1cblxuXHRzZXRCdXN5KHZhbHVlOiBib29sZWFuKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QnVzeSh2YWx1ZSk7XG5cdFx0dGhpcy5jb250ZW50Py5zZXRCdXN5KHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBldmVudCBoYW5kbGVycyB0byB0aGUgVGFibGVBUEkuXG5cdCAqIEBwYXJhbSBldmVudEhhbmRsZXJzXG5cdCAqL1xuXHRzZXRBdHRhY2hFdmVudHMoZXZlbnRIYW5kbGVyczogRXZlbnRIYW5kbGVyW10pOiB2b2lkIHtcblx0XHR0aGlzLnN0b3JlZEV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcmVsZXZhbnQgdGFibGVBUEkgZm9yIGEgVUk1IGV2ZW50LlxuXHQgKiBBbiBldmVudCBjYW4gYmUgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgaW5uZXIgY29udHJvbCAodGhlIHRhYmxlKSBvciB0aGUgT0RhdGEgbGlzdEJpbmRpbmdcblx0ICogVGhlIGZpcnN0IGluaXRpYXRvciBpcyB0aGUgdXN1YWwgb25lIHNvIGl0J3MgbWFuYWdlZCBieSB0aGUgTWFjcm9BUEkgd2hlcmVhc1xuXHQgKiB0aGUgc2Vjb25kIG9uZSBpcyBzcGVjaWZpYyB0byB0aGlzIEFQSSBhbmQgaGFzIHRvIG1hbmFnZWQgYnkgdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gc291cmNlIFRoZSBVSTUgZXZlbnQgc291cmNlXG5cdCAqIEByZXR1cm5zIFRoZSBUYWJsZUFQSSBvciBmYWxzZSBpZiBub3QgZm91bmRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHN0YXRpYyBfZ2V0QVBJRXh0ZW5zaW9uKHNvdXJjZTogTWFuYWdlZE9iamVjdCk6IFRhYmxlQVBJIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgdGFibGVBUEk6IFRhYmxlQVBJIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChzb3VyY2UuaXNBPE9EYXRhTGlzdEJpbmRpbmc+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdHRhYmxlQVBJID0gKCh0aGlzIGFzIHVua25vd24gYXMgWE1MRXZlbnRIb2xkZXIpLmluc3RhbmNlTWFwPy5nZXQodGhpcykgYXMgVGFibGVBUElbXSk/LmZpbmQoXG5cdFx0XHRcdChhcGkpID0+IGFwaS5jb250ZW50Py5nZXRSb3dCaW5kaW5nPy4oKSA9PT0gc291cmNlIHx8IGFwaS5jb250ZW50Py5nZXRCaW5kaW5nKFwiaXRlbXNcIikgPT09IHNvdXJjZVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhYmxlQVBJO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgY29udGV4dHMgZnJvbSB0aGUgdGFibGUgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG5cdCAqIEByZXR1cm5zIENvbnRleHRzIG9mIHRoZSByb3dzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHQvLyBXaGVuIGEgY29udGV4dCBtZW51IGl0ZW0gaGFzIGJlZW4gcHJlc3NlZCwgdGhlIHNlbGVjdGVkQ29udGV4dHMgY29ycmVzcG9uZCB0byB0aGUgaXRlbXMgb24gd2hpY2hcblx0XHQvLyB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb24gc2hhbGwgYmUgYXBwbGllZC5cblx0XHRyZXR1cm4gdGhpcy5pc0NvbnRleHRNZW51QWN0aXZlKClcblx0XHRcdD8gdGhpcy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIikgPz8gW11cblx0XHRcdDogdGhpcy5jb250ZW50LmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgbWVzc2FnZSB0byB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIFRoZSBtZXNzYWdlIGFwcGxpZXMgdG8gdGhlIHdob2xlIHRhYmxlIGFuZCBub3QgdG8gYW4gaW5kaXZpZHVhbCB0YWJsZSByb3cuXG5cdCAqIEBwYXJhbSBbcGFyYW1ldGVyc10gVGhlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIHRoZSBtZXNzYWdlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnR5cGUgTWVzc2FnZSB0eXBlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm1lc3NhZ2UgTWVzc2FnZSB0ZXh0XG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uIE1lc3NhZ2UgZGVzY3JpcHRpb25cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMucGVyc2lzdGVudCBUcnVlIGlmIHRoZSBtZXNzYWdlIGlzIHBlcnNpc3RlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxzdHJpbmc+IFRoZSBJRCBvZiB0aGUgbWVzc2FnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBhZGRNZXNzYWdlKHBhcmFtZXRlcnM6IHsgdHlwZT86IE1lc3NhZ2VUeXBlOyBtZXNzYWdlPzogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgcGVyc2lzdGVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRpZiAoIXRhYmxlLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrQ29udGV4dENoYW5nZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0XHRpZiAodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0XHRcdFx0dGFibGUuZGV0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgY2hlY2tDb250ZXh0Q2hhbmdlKTtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRhYmxlLmF0dGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGNoZWNrQ29udGV4dENoYW5nZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgcm93QmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCByZXNvbHZlZFBhdGggPSByb3dCaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIGFzIHN0cmluZztcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVNZXNzYWdlKHRhYmxlLCByZXNvbHZlZFBhdGgsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVNZXNzYWdlKFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHtcblx0XHRcdHRhcmdldDogcGF0aCxcblx0XHRcdHR5cGU6IHBhcmFtZXRlcnMudHlwZSxcblx0XHRcdG1lc3NhZ2U6IHBhcmFtZXRlcnMubWVzc2FnZSxcblx0XHRcdHByb2Nlc3NvcjogdGFibGUuZ2V0TW9kZWwoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0cGVyc2lzdGVudDogcGFyYW1ldGVycy5wZXJzaXN0ZW50XG5cdFx0fSk7XG5cdFx0dGhpcy5fZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyhtZXNzYWdlKTtcblx0XHRyZXR1cm4gbWVzc2FnZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgdGFibGUgc2hvdWxkIHJlcXVlc3QgcmVjb21tZW5kYXRpb25zIGZ1bmN0aW9uLlxuXHQgKiBUaGUgdGFibGUgaW4gdmlldyBzaG91bGQgb25seSByZXF1ZXN0IHJlY29tbWVuZGF0aW9ucyBpZlxuXHQgKiAxLiBUaGUgUGFnZSBpcyBpbiBFZGl0IG1vZGVcblx0ICogMi4gVGFibGUgaXMgbm90IHJlYWQgb25seVxuXHQgKiAzLiBJdCBoYXMgYW5ub3RhdGlvbiBmb3IgQ29tbW9uLlJlY29tbWVuZGVkVmFsdWVzRnVuY3Rpb25cblx0ICogNC4gVmlldyBpcyBub3QgTGlzdFJlcG9ydCwgZm9yIE9QL1N1Yk9QIGFuZCBmb3J3YXJkIHZpZXdzIHJlY29tbWVuZGF0aW9ucyBzaG91bGQgYmUgcmVxdWVzdGVkLlxuXHQgKiBAcGFyYW0gX29FdmVudFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9ucyBuZWVkcyB0byBiZSByZXF1ZXN0ZWRcblx0ICovXG5cdGNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KF9vRXZlbnQ6IFVJNUV2ZW50KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaXNUYWJsZVJlYWRPbmx5ID0gdGhpcy5nZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIpO1xuXHRcdGNvbnN0IGlzRWRpdGFibGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRoaXMpO1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdC8vIHJlcXVlc3QgZm9yIGFjdGlvbiBvbmx5IGlmIHdlIGFyZSBpbiBPUC9TdWJPUCBhbmQgaW4gRWRpdCBtb2RlLCBhbHNvIHRhYmxlIGlzIG5vdCByZWFkT25seVxuXHRcdGlmICghaXNUYWJsZVJlYWRPbmx5ICYmIGlzRWRpdGFibGUgJiYgdmlld0RhdGEuY29udmVydGVyVHlwZSAhPT0gXCJMaXN0UmVwb3J0XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZShpZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbXNnTWFuYWdlciA9IHRoaXMuX2dldE1lc3NhZ2VNYW5hZ2VyKCk7XG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBtc2dNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtZXNzYWdlcy5maW5kKChlOiBNZXNzYWdlKSA9PiBlLmdldElkKCkgPT09IGlkKTtcblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRtc2dNYW5hZ2VyLnJlbW92ZU1lc3NhZ2VzKHJlc3VsdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3RzIGEgcmVmcmVzaCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2goKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGVSb3dCaW5kaW5nID0gdGhpcy5jb250ZW50LmdldFJvd0JpbmRpbmcoKTtcblx0XHRpZiAodGFibGVSb3dCaW5kaW5nICYmICh0YWJsZVJvd0JpbmRpbmcuaXNSZWxhdGl2ZSgpIHx8IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSkge1xuXHRcdFx0Ly8gRm9yIHRyZWUgdGFibGVzLCB0aGUgcmVmcmVzaCBpcyBhbHdheXMgZG9uZSB1c2luZyBzaWRlIGVmZmVjdHMgdG8gcHJlc2VydmUgZXhwYW5zaW9uIHN0YXRlc1xuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuY29udGVudCk7XG5cdFx0XHRjb25zdCBoZWFkZXJDb250ZXh0ID0gdGFibGVSb3dCaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblxuXHRcdFx0aWYgKGhlYWRlckNvbnRleHQpIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdFx0LnJlcXVlc3RTaWRlRWZmZWN0cyhbeyAkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIiB9XSwgaGVhZGVyQ29udGV4dCwgdGFibGVSb3dCaW5kaW5nLmdldEdyb3VwSWQoKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhYmxlUm93QmluZGluZz8ucmVmcmVzaCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldFF1aWNrRmlsdGVyKCk6IFF1aWNrRmlsdGVyU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFF1aWNrRmlsdGVyKCkgYXMgUXVpY2tGaWx0ZXJTZWxlY3RvciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgYXBwbGllZCB0byB0aGUgdGFibGVcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcz4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IHRhYmxlU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRhYmxlKTtcblxuXHRcdFx0Ly9XZSByZW1vdmUgXCJQcm9wZXJ0eTo6XCIgYXMgaXQgaXMgcHJlZml4ZWQgdG8gdGhvc2UgY29sdW1ucyB0aGF0IGhhdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eUluZm9zLlxuXHRcdFx0Ly9UaGUgUHJlc2VudGF0aW9uIFZhcmlhbnQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyAoaXQgaXMgb25seSByZXF1aXJlZCBieSB0aGUgVGFibGUgYW5kIEFwcFN0YXRlKS5cblx0XHRcdGNvbnN0IHNvcnRPcmRlciA9IHRhYmxlU3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRQcm9wZXJ0eTogc29ydGVyLm5hbWUucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIiksXG5cdFx0XHRcdFx0RGVzY2VuZGluZzogc29ydGVyLmRlc2NlbmRpbmcgPz8gZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZ3JvdXBMZXZlbHMgPSB0YWJsZVN0YXRlLmdyb3VwTGV2ZWxzPy5tYXAoKGdyb3VwOiBHcm91cExldmVscykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZ3JvdXAubmFtZS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgdGFibGVWaXogPSB7XG5cdFx0XHRcdENvbnRlbnQ6IHRhYmxlU3RhdGUuaXRlbXM/Lm1hcCgoaXRlbTogSXRlbXMpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0VmFsdWU6IGl0ZW0ubmFtZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRUeXBlOiBcIkxpbmVJdGVtXCJcblx0XHRcdH07XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHsgYWdncmVnYXRlZD86IGJvb2xlYW4gfT4gPSB7fTtcblx0XHRcdGxldCBoYXNBZ2dyZWdhdGlvbnMgPSBmYWxzZTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRhYmxlU3RhdGUuYWdncmVnYXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0tleSA9IGtleS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdFx0YWdncmVnYXRpb25zW25ld0tleV0gPSB0YWJsZVN0YXRlLmFnZ3JlZ2F0aW9uc1trZXldO1xuXHRcdFx0XHRoYXNBZ2dyZWdhdGlvbnMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gKHRhYmxlLmdldFBheWxvYWQoKSBhcyB7IGluaXRpYWxFeHBhbnNpb25MZXZlbD86IG51bWJlcjsgaGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nIH0pXG5cdFx0XHRcdD8uaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0Y29uc3QgdGFibGVQViA9IG5ldyBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MoKTtcblx0XHRcdHRhYmxlUFYuc2V0VGFibGVWaXN1YWxpemF0aW9uKHRhYmxlVml6KTtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXM6IFB2UHJvcGVydGllcyA9IHtcblx0XHRcdFx0R3JvdXBCeTogZ3JvdXBMZXZlbHMgfHwgW10sXG5cdFx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyIHx8IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGhhc0FnZ3JlZ2F0aW9ucykge1xuXHRcdFx0XHRwcm9wZXJ0aWVzLkFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9ucztcblx0XHRcdH1cblx0XHRcdGlmIChpbml0aWFsRXhwYW5zaW9uTGV2ZWwpIHtcblx0XHRcdFx0cHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSBpbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZVBWLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cdFx0XHRyZXR1cm4gdGFibGVQVjtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBhIG5ldyBwcmVzZW50YXRpb24gdmFyaWFudCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZVBWIFRoZSBuZXcgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyB0byBiZSBzZXQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRQcmVzZW50YXRpb25WYXJpYW50KHRhYmxlUFY6IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblxuXHRcdFx0Y29uc3QgY3VycmVudFN0YXRlUFYgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSB0aGlzLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb05hbWVzID0gcHJvcGVydHlJbmZvcy5tYXAoKHByb3BJbmZvKSA9PiBwcm9wSW5mby5rZXkpO1xuXHRcdFx0Y29uc3QgbmV3VGFibGVTdGF0ZSA9IGNvbnZlcnRQVlRvU3RhdGUodGFibGVQViwgY3VycmVudFN0YXRlUFYsIHByb3BlcnR5SW5mb05hbWVzKTtcblx0XHRcdGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IHRhYmxlUFYuZ2V0UHJvcGVydGllcygpO1xuXHRcdFx0aWYgKHRhYmxlUHJvcGVydGllcz8uaW5pdGlhbEV4cGFuc2lvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgdGFibGVQYXlsb2FkID0gdGFibGUuZ2V0UGF5bG9hZCgpIGFzIHsgaW5pdGlhbEV4cGFuc2lvbkxldmVsPzogbnVtYmVyOyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfTtcblx0XHRcdFx0dGFibGVQYXlsb2FkLmluaXRpYWxFeHBhbnNpb25MZXZlbCA9IHRhYmxlUHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKHRhYmxlLCBuZXdUYWJsZVN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gc2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBhcHBsaWVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgS2V5IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFyaWFudC4gSW4gY2FzZSB0aGUgbW9kZWwgaXMgbm90IHlldCBzZXQsIGBudWxsYCB3aWxsIGJlIHJldHVybmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRDdXJyZW50VmFyaWFudEtleSgpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKT8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgYSB2YXJpYW50IG1hbmFnZW1lbnQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gSWYgdGhlIHBhc3NlZCBrZXkgZG9lc24ndCBpZGVudGlmeSBhIHZhcmlhbnQsIGl0IHdpbGwgYmUgaWdub3JlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk7XG5cdFx0dmFyaWFudE1hbmFnZW1lbnQuc2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5KTtcblx0fVxuXG5cdF9nZXRNZXNzYWdlTWFuYWdlcigpOiBNZXNzYWdpbmcge1xuXHRcdHJldHVybiBNZXNzYWdpbmc7XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdF9nZXRSb3dCaW5kaW5nKCk6IE9EYXRhTGlzdEJpbmRpbmcge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBvVGFibGUuZ2V0Um93QmluZGluZygpO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q291bnRzKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIFRhYmxlVXRpbHMuZ2V0TGlzdEJpbmRpbmdGb3JDb3VudChvVGFibGUsIG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLCB7XG5cdFx0XHRiYXRjaEdyb3VwSWQ6ICF0aGlzLmdldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiKSA/IG9UYWJsZS5kYXRhKFwiYmF0Y2hHcm91cElkXCIpIDogXCIkYXV0b1wiLFxuXHRcdFx0YWRkaXRpb25hbEZpbHRlcnM6IFRhYmxlVXRpbHMuZ2V0SGlkZGVuRmlsdGVycyhvVGFibGUpXG5cdFx0fSlcblx0XHRcdC50aGVuKChpVmFsdWU6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVGFibGVVdGlscy5nZXRDb3VudEZvcm1hdHRlZChpVmFsdWUpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBcIjBcIjtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNvbnRleHQgY2hhbmdlIG9uIHRoZSB0YWJsZS5cblx0ICogQW4gZXZlbnQgaXMgZmlyZWQgdG8gcHJvcGFnYXRlIHRoZSBPZGF0YUxpc3RCaW5kaW5nIGV2ZW50IGFuZCB0aGUgZW5hYmxlbWVudFxuXHQgKiBvZiB0aGUgY3JlYXRpb24gcm93IGlzIGNhbGN1bGF0ZWQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgVUk1IGV2ZW50XG5cdCAqL1xuXHRvbkxpc3RCaW5kaW5nQ2hhbmdlKHVpNUV2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwibGlzdEJpbmRpbmdDaGFuZ2VcIiwgdWk1RXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHR0aGlzLnNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnJlZnJlc2hTZWxlY3RlZENvdW50KCk7XG5cdFx0VGFibGVSdW50aW1lLnNldENvbnRleHRzQXN5bmModGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkZpZWxkTGl2ZUNoYW5nZSh1aTVFdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRmllbGRMaXZlQ2hhbmdlKHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb24gYSBxdWlja0ZpbHRlclxuXHQgKiBUaGUgdGFibGUgaXMgcmVib3VuZCBpZiB0aGUgRmlsdGVyQmFyIGlzIG5vdCBzdXNwZW5kZWQgYW5kIHVwZGF0ZSB0aGUgQXBwU3RhdGUuXG5cdCAqXG5cdCAqL1xuXHRvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdC8vIFJlYmluZCB0aGUgdGFibGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIHF1aWNrIGZpbHRlciBrZXkuXG5cdFx0Ly8gV2UgZG9uJ3QgcmViaW5kIHRoZSB0YWJsZSBpZiB0aGUgZmlsdGVyQmFyIGZvciB0aGUgdGFibGUgaXMgc3VzcGVuZGVkXG5cdFx0Ly8gYXMgcmViaW5kIHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBmaWx0ZXJCYXIgaXMgcmVzdW1lZFxuXHRcdGNvbnN0IGZpbHRlckJhcklEID0gdGFibGUuZ2V0RmlsdGVyKCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gKGZpbHRlckJhcklEICYmIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsdGVyQmFySUQpKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFmaWx0ZXJCYXI/LmdldFN1c3BlbmRTZWxlY3Rpb24/LigpKSB7XG5cdFx0XHR0YWJsZS5yZWJpbmQoKTtcblx0XHR9XG5cdFx0KENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHRvblRhYmxlTmF2aWdhdGUob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBvQ29udGV4dDogQ29udGV4dCwgbVBhcmFtZXRlcnM6IG9iamVjdCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUob0NvbnRleHQpKSB7XG5cdFx0XHRpZiAodGhpcy5mdWxsU2NyZWVuRGlhbG9nKSB7XG5cdFx0XHRcdC8vIEV4aXQgZnVsbHNjcmVlbiBtb2RlIGJlZm9yZSBuYXZpZ2F0aW9uXG5cdFx0XHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZy5jbG9zZSgpOyAvLyBUaGUgZnVsbHNjcmVlbmRpYWxvZyB3aWxsIHNldCB0aGlzLmZ1bGxTY3JlZW5EaWFsb2cgdG8gdW5kZWZpbmVkIHdoZW4gY2xvc2luZ1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBtUGFyYW1ldGVycywgeyByZWFzb246IE5hdmlnYXRpb25SZWFzb24uUm93UHJlc3MgfSk7XG5cdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQob0NvbnRleHQsIG5hdmlnYXRpb25QYXJhbWV0ZXJzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgcm93IHByZXNzIGV2ZW50IG9mIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHByZXNzRXZlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPlxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uVGFibGVSb3dQcmVzcyhwcmVzc0V2ZW50OiBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB2b2lkPiB7XG5cdFx0Y29uc3Qgcm93TmF2aWdhdGlvbkluZm8gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uYW5ub3RhdGlvbi5yb3c/Lm5hdmlnYXRpb25JbmZvO1xuXHRcdGlmICh0aGlzLm92ZXJyaWRlUm93UHJlc3MgPT09IHRydWUpIHtcblx0XHRcdC8vIFRoZXJlJ3MgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJvd1ByZXNzIGV2ZW50IC0tPiB3ZSBqdXN0IGZpcmUgdGhlIGV2ZW50IGFuZCBkbyBub3QgbmF2aWdhdGVcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicm93UHJlc3NcIiwgcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdH0gZWxzZSBpZiAocm93TmF2aWdhdGlvbkluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0aWYgKHJvd05hdmlnYXRpb25JbmZvLnR5cGUgPT09IFwiT3V0Ym91bmRcIikge1xuXHRcdFx0XHQvLyBPdXRib3VuZCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiB0aGlzLmF2b2lkUGFyYWxsZWxDYWxscyhcblx0XHRcdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHRcdFx0Y29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZChcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlcixcblx0XHRcdFx0XHRcdFx0cm93TmF2aWdhdGlvbkluZm8ubmF2aWdhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW50ZXJuYWwgbmF2aWdhdGlvblxuXHRcdFx0XHRjb25zdCBlZGl0YWJsZSA9IHJvd05hdmlnYXRpb25JbmZvLmNoZWNrRWRpdGFibGUgPyAhYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRjYWxsRXh0ZW5zaW9uOiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldFBhdGg6IHJvd05hdmlnYXRpb25JbmZvLnRhcmdldFBhdGgsXG5cdFx0XHRcdFx0ZWRpdGFibGUsXG5cdFx0XHRcdFx0cmVjcmVhdGVDb250ZXh0OiByb3dOYXZpZ2F0aW9uSW5mby5yZWNyZWF0ZUNvbnRleHRcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRyZXR1cm4gdGhpcy5vblRhYmxlTmF2aWdhdGUoY29udHJvbGxlciwgYmluZGluZ0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaXJlcyB0aGUgY29ycmVzcG9uZGluZyBldmVudCB3aGVuIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGlzIHByZXNzZWQgKGluIEFMUCkuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VnbWVudGVkQnV0dG9uUHJlc3NcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIG5ldyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2VsZWN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQuLi5vRXZlbnQuZ2V0UGFyYW1ldGVycygpLFxuXHRcdFx0b3JpZ2luYWxTb3VyY2U6IG9FdmVudC5nZXRTb3VyY2UoKVxuXHRcdH07XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2VsZWN0ZWRcIiwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhcmlhbnRTYXZlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2F2ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHJvdyBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Sb3dQcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0aXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0Ly8gcHJldmVudCBuYXZpZ2F0aW9uIHRvIGFuIGVtcHR5IHJvd1xuXHRcdGNvbnN0IGVtcHR5Um93ID0gY29udGV4dC5pc0luYWN0aXZlKCkgPT0gdHJ1ZSAmJiBjb250ZXh0LmlzVHJhbnNpZW50KCkgPT09IHRydWU7XG5cdFx0Ly8gT3IgaW4gdGhlIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCB0YWJsZSwgaWYgd2UncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGEgY29udGV4dCBjb3JyZXNwb25kaW5nIHRvIGEgdmlzdWFsIGdyb3VwIG9yIGdyYW5kIHRvdGFsXG5cdFx0Ly8gLS0+IENhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0Y29uc3QgYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQgPVxuXHRcdFx0dGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5lbmFibGVBbmFseXRpY3MgPT09IHRydWUgJiZcblx0XHRcdGNvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHRcIikgJiZcblx0XHRcdHR5cGVvZiBjb250ZXh0LmdldFByb3BlcnR5KFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpID09PSBcImJvb2xlYW5cIjtcblx0XHRyZXR1cm4gIShlbXB0eVJvdyB8fCBhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhcblx0XHRvRXZlbnQ6IFVJNUV2ZW50LFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB8IGJvb2xlYW4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRyZXR1cm4gdGhpcy5fb25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhjb250cm9sbGVyLCBjb250ZXh0cywgbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbk9wZW5Jbk5ld1RhYlByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRwYXJhbWV0ZXJzOiBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMsXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB8IGJvb2xlYW4ge1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHRpZiAodGhhdC5pc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQpKSB7XG5cdFx0XHRcdFx0cGFyYW1ldGVycy5lZGl0YWJsZSA9ICFjb250ZXh0LmdldFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQoY29udGV4dCwgcGFyYW1ldGVycyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKFxuXHRcdFx0XHRMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcIlRfVEFCTEVfTkFWSUdBVElPTl9UT09fTUFOWV9JVEVNU19TRUxFQ1RFRFwiLCBbXG5cdFx0XHRcdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQoZXZ0OiBFdmVudDx7IGVycm9yOiB7IHN0YXR1cz86IG51bWJlcjsgY2F1c2U/OiB7IHN0YXR1cz86IG51bWJlciB9OyBtZXNzYWdlPzogc3RyaW5nIH0gfT4pOiB2b2lkIHtcblx0XHQvLyBCQ1A6IDIzODAwMjMwOTBcblx0XHQvLyBXZSBoYW5kbGUgZW5hYmxlbWVudCBvZiBEZWxldGUgZm9yIHRoZSB0YWJsZSBoZXJlLlxuXHRcdC8vIEVkaXRGbG93LnRzI2hhbmRsZVBhdGNoU2VudCBpcyBoYW5kbGluZyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRDb250ZXh0cyA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpO1xuXHRcdERlbGV0ZUhlbHBlci51cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyhpbnRlcm5hbE1vZGVsQ29udGV4dCwgc2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0aWYgKGV2dC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hTZW50KGV2dDogT0RhdGFDb250ZXh0QmluZGluZyRQYXRjaFNlbnRFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgZWRpdEZsb3dFeHRlbnNpb24gPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdGNvbnRyb2xsZXIubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uaGFuZGxlUGF0Y2hTZW50KSB7XG5cdFx0XHRlZGl0Rmxvd0V4dGVuc2lvbi5oYW5kbGVQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbGxlci5pbmxpbmVFZGl0Rmxvdy5pc0lubGluZUVkaXRQb3NzaWJsZSgpKSB7XG5cdFx0XHRjb250cm9sbGVyLmlubGluZUVkaXRGbG93LmhhbmRsZUlubGluZUVkaXRQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlY2VpdmVkKG9FdmVudDogVUk1RXZlbnQ8eyBlcnJvcjogc3RyaW5nIH0sIE9EYXRhTGlzdEJpbmRpbmc+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gdGhpcy5jaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudChvRXZlbnQpO1xuXHRcdGlmIChpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy5nZXRJZGVudGlmaWVyQ29sdW1uKGlzUmVjb21tZW5kYXRpb25SZWxldmFudCkgYXMgc3RyaW5nW107XG5cdFx0XHRjb25zdCByZXNwb25zZUNvbnRleHRzQXJyYXkgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0QWxsQ3VycmVudENvbnRleHRzKCk7XG5cdFx0XHRjb25zdCBuZXdDb250ZXh0czogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSA9IFtdO1xuXHRcdFx0cmVzcG9uc2VDb250ZXh0c0FycmF5LmZvckVhY2goKGNvbnRleHQpID0+IHtcblx0XHRcdFx0bmV3Q29udGV4dHMucHVzaCh7XG5cdFx0XHRcdFx0Y29udGV4dCxcblx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllclxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zKG5ld0NvbnRleHRzLCB0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdFx0dGhpcy5zZXREb3dubG9hZFVybCgpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlcXVlc3RlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCB0cnVlKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCBvRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHRpZiAodGhpcy5nZXRRdWlja0ZpbHRlcigpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sLmZpbHRlcnM/LnF1aWNrRmlsdGVycz8uc2hvd0NvdW50cyA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5zZXRDb3VudHNBc0xvYWRpbmcoKTtcblx0XHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8ucmVmcmVzaFVuU2VsZWN0ZWRDb3VudHMoKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgUGFzdGUgb3BlcmF0aW9uLlxuXHQgKiBAcGFyYW0gZXZ0IFRoZSBldmVudFxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uUGFzdGUoZXZ0OiBQYXN0ZVByb3ZpZGVyJFBhc3RlRXZlbnQsIGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCByYXdQYXN0ZWREYXRhID0gZXZ0LmdldFBhcmFtZXRlcihcImRhdGFcIiksXG5cdFx0XHRzb3VyY2UgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IHRhYmxlOiBUYWJsZTtcblx0XHRpZiAoIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHQvLyB0YWJsZSB0b29sYmFyXG5cdFx0XHR0YWJsZSA9IChzb3VyY2UuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSA/IHNvdXJjZSA6IChzb3VyY2UgYXMgQ29udHJvbCkuZ2V0UGFyZW50KCkpIGFzIFRhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjb250ZXh0IG1lbnVcblx0XHRcdGNvbnN0IG1lbnUgPSAoc291cmNlLmlzQShcInNhcC5tLk1lbnVcIikgPyBzb3VyY2UgOiAoc291cmNlIGFzIENvbnRyb2wpLmdldFBhcmVudCgpKSBhcyBNZW51O1xuXHRcdFx0dGFibGUgPSBtZW51LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBUYWJsZTtcblx0XHR9XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0ID0gdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdC8vIElmIHBhc3RlIGlzIGRpc2FibGVkIG9yIGlmIHdlJ3JlIG5vdCBpbiBlZGl0IG1vZGUgaW4gYW4gT2JqZWN0UGFnZSwgd2UgY2FuJ3QgcGFzdGUgYW55dGhpbmdcblx0XHRpZiAoIXRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlUGFzdGUgfHwgKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5pc1JlbGF0aXZlKCkgJiYgIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGhpcykpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly9UaGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBpbiBjYXNlIG9mIFRyZWVUYWJsZVxuXHRcdGNvbnN0IGFjdGlvbiA9IGludGVybmFsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNyY0NvbnRleHRzID0gaW50ZXJuYWxDb250ZXh0LmdldFByb3BlcnR5KFwibm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNcIik7XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSB7XG5cdFx0XHRsZXQgc3JjQ29udGV4dCA9IHNyY0NvbnRleHRzWzBdO1xuXHRcdFx0Y29uc3QgbmV3UGFyZW50Q29udGV4dCA9ICFmb3JDb250ZXh0TWVudVxuXHRcdFx0XHQ/ICh0YWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKClbMF0gYXMgQ29udGV4dClcblx0XHRcdFx0OiAoaW50ZXJuYWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIilbMF0gYXMgQ29udGV4dCk7XG5cdFx0XHQvLyBJZiB0aGUgdGFyZ2V0Q29udGV4dCBoYXMgYmVlbiBkaXNhc3NvY2lhdGVkIGZyb20gdGhlIHRhYmxlIGR1ZSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIGFjdGlvbnMsIHdlIGF0dGVtcHQgdG8gcmV0cmlldmUgaXQgdXNpbmcgaXRzIHBhdGguXG5cdFx0XHRzcmNDb250ZXh0ID0gdGFibGVcblx0XHRcdFx0LmdldFJvd0JpbmRpbmcoKVxuXHRcdFx0XHQuZ2V0QWxsQ3VycmVudENvbnRleHRzKClcblx0XHRcdFx0LmZpbmQoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0UGF0aCgpID09PSBzcmNDb250ZXh0Py5nZXRQYXRoKCkpO1xuXG5cdFx0XHRpZiAoIXNyY0NvbnRleHQpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwgYmVjYXVzZSB0aGUgcmVsZXZhbnQgY29udGV4dCBpcyBubyBsb25nZXIgYXZhaWxhYmxlYCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRhYmxlLnNldEJ1c3kodHJ1ZSk7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHRcdFx0XHRzcmNDb250ZXh0Lm1vdmUoeyBwYXJlbnQ6IG5ld1BhcmVudENvbnRleHQgPz8gbnVsbCwgY29weTogYWN0aW9uID09PSBcIkNvcHlcIiB9KSxcblx0XHRcdFx0XHRhY3Rpb24gPT09IFwiQ29weVwiXG5cdFx0XHRcdFx0XHQ/IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzRm9yQ29weUFjdGlvbihzcmNDb250ZXh0KVxuXHRcdFx0XHRcdFx0OiB0aGlzLnJlcXVlc3RTaWRlRWZmZWN0c0ZvckNoYW5nZU5leHRTaWJsaW5nQWN0aW9uKHNyY0NvbnRleHQpXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVEFCTEVEUk9QX0ZBSUxFRFwiLCBbXCJcIl0pKTtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwuIGAgKyAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gXCJcIik7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZS5zZXRCdXN5KGZhbHNlKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgbm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNgLCBbXSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYGNvbnRleHRtZW51L25vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uYCwgdW5kZWZpbmVkKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGZvciB0YWJsZXMgZXhjZXB0ZWQgVHJlZVRhYmxlXG5cdFx0aWYgKHRhYmxlLmdldEVuYWJsZVBhc3RlKCkgPT09IHRydWUgJiYgIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHRjb25zdCBjZWxsU2VsZWN0aW9uID0gdGFibGUuZ2V0Q2VsbFNlbGVjdG9yKCk/LmdldFNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKGNlbGxTZWxlY3Rpb24/LmNvbHVtbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZVJhbmdlRGF0YShyYXdQYXN0ZWREYXRhID8/IFtdLCBjZWxsU2VsZWN0aW9uLCB0YWJsZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZURhdGEocmF3UGFzdGVkRGF0YSA/PyBbXSwgdGFibGUsIGNvbnRyb2xsZXIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX09QX0NPTlRST0xMRVJfU0FQRkVfUEFTVEVfRElTQUJMRURfTUVTU0FHRVwiKSwge1xuXHRcdFx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3V0IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkN1dChldnQ6IFVJNUV2ZW50PHt9LCBVSTVFbGVtZW50PiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuX29uQ29weUN1dChldnQsIGZvckNvbnRleHRNZW51LCBcIkN1dFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDb3B5IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvcHkoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDb3B5XCIpO1xuXHR9XG5cblx0Ly8gVGhpcyBldmVudCB3aWxsIGFsbG93IHVzIHRvIGludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpcyB0cmlnZ2VyZWQgdG8gY292ZXIgc3BlY2lmaWMgY2FzZXNcblx0Ly8gdGhhdCBjb3VsZG4ndCBiZSBhZGRyZXNzZWQgb24gdGhlIHByb3BlcnR5SW5mb3MgZm9yIGVhY2ggY29sdW1uLlxuXHQvLyBlLmcuIEZpeGVkIFRhcmdldCBWYWx1ZSBmb3IgdGhlIGRhdGFwb2ludHNcblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uQmVmb3JlRXhwb3J0KGV4cG9ydEV2ZW50OiBUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgTURDIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gdG8gZGlzcGxheSBtZXNzYWdlU3RyaXAgb24gYSB0YWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICogQHJldHVybnMgV2hldGhlciB0byByZW5kZXIgdGhlIG1lc3NhZ2VTdHJpcCB2aXNpYmxlXG5cdCAqL1xuXHRkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIobWVzc2FnZTogTWVzc2FnZSwgY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1kY1RhYmxlID0gY29udHJvbCBhcyBNRENUYWJsZTtcblx0XHRjb25zdCBzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPSBtZGNUYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgc1RhYmxlUm93QmluZGluZyA9IChzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPyBgJHtzVGFibGVDb250ZXh0QmluZGluZ1BhdGh9L2AgOiBcIlwiKSArIG1kY1RhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIHNUYWJsZVJvd0JpbmRpbmcgPT09IG1lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZXZlbnQgaGFuZGxlcyB0aGUgRGF0YVN0YXRlIG9mIHRoZSBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIGZyb20gTURDIG9uIGEgdGFibGUuXG5cdCAqIEl0J3MgZmlyZWQgd2hlbiBuZXcgZXJyb3IgbWVzc2FnZXMgYXJlIHNlbnQgZnJvbSB0aGUgYmFja2VuZCB0byB1cGRhdGUgcm93IGhpZ2hsaWdodGluZy5cblx0ICogQHBhcmFtIGV2dCBFdmVudCBvYmplY3Rcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRhdGFTdGF0ZUNoYW5nZShldnQ6IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRhdGFTdGF0ZUluZGljYXRvciA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gZXZ0LmdldFBhcmFtZXRlcihcImZpbHRlcmVkTWVzc2FnZXNcIikgYXMgTWVzc2FnZVtdO1xuXHRcdGlmIChmaWx0ZXJlZE1lc3NhZ2VzKSB7XG5cdFx0XHRjb25zdCBoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzID0gZmlsdGVyZWRNZXNzYWdlc1xuXHRcdFx0XHQubWFwKChtc2cpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHtcblx0XHRcdFx0XHRcdHRhYmxlSWQ/OiBzdHJpbmc7XG5cdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuO1xuXHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbj86IHN0cmluZztcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHJldHVybiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSA9PT0gdHJ1ZSAmJiB0ZWNobmljYWxEZXRhaWxzLm1pc3NpbmdDb2x1bW47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGhpZGRlblByb3BlcnR5KSA9PiAhIWhpZGRlblByb3BlcnR5KTtcblx0XHRcdGlmIChoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlU3RyaXBFcnJvciA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdGhpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiXG5cdFx0XHRcdFx0XHQ6IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTl9QTFVSQUxcIixcblx0XHRcdFx0XHRbaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5qb2luKFwiLCBcIildXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRhdGFTdGF0ZUluZGljYXRvci5zaG93TWVzc2FnZShtZXNzYWdlU3RyaXBFcnJvciwgXCJFcnJvclwiKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiZmlsdGVyZWRNZXNzYWdlc1wiLCBmaWx0ZXJlZE1lc3NhZ2VzLCBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRyZXN1bWVCaW5kaW5nKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIGZhbHNlKTtcblx0XHRpZiAoKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiAhdGhpcy5nZXREYXRhSW5pdGlhbGl6ZWQoKSkgfHwgdGhpcy5nZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiKSkge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8ucmViaW5kKCk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb1RhYmxlKTtcblx0fVxuXG5cdHN1c3BlbmRCaW5kaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIHRydWUpO1xuXHR9XG5cblx0aW52YWxpZGF0ZUNvbnRlbnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCBmYWxzZSk7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZW5hYmxlbWVudCBvZiB0aGUgY3JlYXRpb24gcm93LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBmYXN0Q3JlYXRpb25Sb3cgPSB0YWJsZS5nZXRDcmVhdGlvblJvdygpO1xuXG5cdFx0aWYgKGZhc3RDcmVhdGlvblJvdyAmJiAhZmFzdENyZWF0aW9uUm93LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlQmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdGFibGVCaW5kaW5nLmdldENvbnRleHQoKTtcblxuXHRcdFx0aWYgKGJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRcdFRhYmxlSGVscGVyLmVuYWJsZUZhc3RDcmVhdGlvblJvdyhcblx0XHRcdFx0XHRmYXN0Q3JlYXRpb25Sb3csXG5cdFx0XHRcdFx0dGFibGVCaW5kaW5nLmdldFBhdGgoKSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgdGhlIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25NYXNzRWRpdEJ1dHRvblByZXNzZWQodWk1RXZlbnQ6IFVJNUV2ZW50LCBmb3JDb250ZXh0TWVudTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgbWFzc0VkaXRIZWxwZXIgPSBuZXcgTWFzc0VkaXREaWFsb2dIZWxwZXIoe1xuXHRcdFx0dGFibGU6IHRoaXMuY29udGVudCxcblx0XHRcdG9uQ29udGV4dE1lbnU6IGZvckNvbnRleHRNZW51LFxuXHRcdFx0b25DbG9zZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnNldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdEhlbHBlcik7XG5cdFx0bWFzc0VkaXRIZWxwZXIub3BlbigpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uU2VsZWN0aW9uQ2hhbmdlZCh1aTVldmVudDogVGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBUYWJsZVJ1bnRpbWUuc2V0Q29udGV4dHModWk1ZXZlbnQpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHsgLi4udWk1ZXZlbnQuZ2V0UGFyYW1ldGVycygpLCBzZWxlY3RlZENvbnRleHQ6IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIH0pO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQWN0aW9uUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4sXG5cdFx0cGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRtb2RlbDogT0RhdGFNb2RlbDtcblx0XHRcdG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0bGFiZWw6IHN0cmluZztcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGVudGl0eVNldE5hbWU6IHN0cmluZztcblx0XHR9XG5cdCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHBhcmFtZXRlcnMubW9kZWwgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGxldCBleGVjdXRlQWN0aW9uID0gdHJ1ZTtcblx0XHRpZiAocGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgJiYgcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gSWYgd2UgaGF2ZSBub24gYXBwbGljYWJsZSBjb250ZXh0cywgd2UgbmVlZCB0byBvcGVuIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlciBpZiBoZSB3YW50cyB0byBjb250aW51ZVxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMocGFyYW1ldGVycy5tb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGg8RW50aXR5VHlwZT4odGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lKS50YXJnZXQhO1xuXHRcdFx0Y29uc3QgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nID0gbmV3IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nKHtcblx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZSxcblx0XHRcdFx0bm90QXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLm5vdEFwcGxpY2FibGVDb250ZXh0cyxcblx0XHRcdFx0dGl0bGU6IHBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IGdldFJlc291cmNlTW9kZWwodGhpcyksXG5cdFx0XHRcdGVudGl0eVNldDogcGFyYW1ldGVycy5lbnRpdHlTZXROYW1lLFxuXHRcdFx0XHRhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuXHRcdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IHBhcmFtZXRlcnMuYXBwbGljYWJsZUNvbnRleHRzXG5cdFx0XHR9KTtcblx0XHRcdHBhcmFtZXRlcnMuY29udGV4dHMgPSBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0cztcblx0XHRcdGV4ZWN1dGVBY3Rpb24gPSBhd2FpdCBteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2cub3Blbih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKGV4ZWN1dGVBY3Rpb24pIHtcblx0XHRcdC8vIERpcmVjdCBleGVjdXRpb24gb2YgdGhlIGFjdGlvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHBhZ2VDb250cm9sbGVyLmVkaXRGbG93Lmludm9rZUFjdGlvbihhY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50OiBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIGludGVybmFsIHRhYmxlIGRlZmluaXRpb24gZm9yIGV4dGVybmFsIHVzYWdlIGluIHRoZSBkZWxlZ2F0ZS5cblx0ICogQHJldHVybnMgVGhlIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1hc3NFZGl0RGlhbG9nSGVscGVyXG5cdCAqL1xuXHRzZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdERpYWxvZ0hlbHBlcj86IE1hc3NFZGl0RGlhbG9nSGVscGVyKTogdm9pZCB7XG5cdFx0dGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlciA9IG1hc3NFZGl0RGlhbG9nSGVscGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cG9zZSB0aGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLCBpZiBhbnlcblx0ICovXG5cdGdldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBjb25uZWN0IHRoZSBmaWx0ZXIgdG8gdGhlIHRhYmxlQVBJIGlmIHJlcXVpcmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXG5cdHVwZGF0ZUZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhclJlZklkID0gdGhpcy5nZXRGaWx0ZXJCYXIoKTtcblx0XHRpZiAodGFibGUgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGUuZ2V0RmlsdGVyPy4oKSAhPT0gZmlsdGVyQmFyUmVmSWQpIHtcblx0XHRcdHRoaXMuX3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3RlbmVycyBvZiB0aGUgZmlsdGVyQmFyLlxuXHQgKi9cblx0ZGV0YWNoRmlsdGVyQmFyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdHRhYmxlPy5zZXRGaWx0ZXIoXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbnRyb2xcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdGdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vICdmaWx0ZXJCYXInIHByb3BlcnR5IG9mIG1hY3JvczpUYWJsZShwYXNzZWQgYXMgY3VzdG9tRGF0YSkgbWlnaHQgYmVcblx0XHQvLyAxLiBBIGxvY2FsSWQgd3J0IFZpZXcoRlBNIGV4cGxvcmVyIGV4YW1wbGUpLlxuXHRcdC8vIDIuIEFic29sdXRlIElkKHRoaXMgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gb2xkZXIgdmVyc2lvbnMpLlxuXHRcdC8vIDMuIEEgbG9jYWxJZCB3cnQgRnJhZ21lbnRJZCh3aGVuIGFuIFhNTENvbXBvc2l0ZSBvciBGcmFnbWVudCBpcyBpbmRlcGVuZGVudGx5IHByb2Nlc3NlZCkgaW5zdGVhZCBvZiBWaWV3SWQuXG5cdFx0Ly8gICAgJ2ZpbHRlckJhcicgd2FzIHN1cHBvcnRlZCBlYXJsaWVyIGFzIGFuICdhc3NvY2lhdGlvbicgdG8gdGhlICdtZGM6VGFibGUnIGNvbnRyb2wgaW5zaWRlICdtYWNyb3M6VGFibGUnIGluIHByaW9yIHZlcnNpb25zLlxuXHRcdC8vICAgIEluIG5ld2VyIHZlcnNpb25zICdmaWx0ZXJCYXInIGlzIHVzZWQgbGlrZSBhbiBhc3NvY2lhdGlvbiB0byAnbWFjcm9zOlRhYmxlQVBJJy5cblx0XHQvLyAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIElkIGlzIHJlbGF0aXZlIHRvICdtYWNyb3M6VGFibGVBUEknLlxuXHRcdC8vICAgIFRoaXMgc2NlbmFyaW8gaGFwcGVucyBpbiBjYXNlIG9mIEZpbHRlckJhciBhbmQgVGFibGUgaW4gYSBjdXN0b20gc2VjdGlvbnMgaW4gT1Agb2YgRkVWNC5cblxuXHRcdGNvbnN0IHRhYmxlQVBJSWQgPSB0aGlzPy5nZXRJZCgpO1xuXHRcdGNvbnN0IHRhYmxlQVBJTG9jYWxJZCA9IHRoaXMuZGF0YShcInRhYmxlQVBJTG9jYWxJZFwiKTtcblx0XHRjb25zdCBwb3RlbnRpYWxmaWx0ZXJCYXJJZCA9XG5cdFx0XHR0YWJsZUFQSUxvY2FsSWQgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGVBUElJZCAmJiB0YWJsZUFQSUlkLnJlcGxhY2UobmV3IFJlZ0V4cCh0YWJsZUFQSUxvY2FsSWQgKyBcIiRcIiksIGZpbHRlckJhclJlZklkKTsgLy8gM1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8XG5cdFx0XHRVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlckJhclJlZklkKSB8fFxuXHRcdFx0VUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChwb3RlbnRpYWxmaWx0ZXJCYXJJZClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpbHRlciBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZmlsdGVyQmFyLlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyUmVmSWQgSWQgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdF9zZXRGaWx0ZXJCYXIoZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5nZXRGaWx0ZXJCYXJDb250cm9sKGZpbHRlckJhclJlZklkKTtcblxuXHRcdGlmIChmaWx0ZXJCYXIpIHtcblx0XHRcdGlmIChmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckFQST4oXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5nZXRJZCgpfS1jb250ZW50YCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckJCVjQ+KFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyXCIpICYmXG5cdFx0XHRcdGZpbHRlckJhcj8uY29udGVudD8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5jb250ZW50LmdldElkKCl9LWNvbnRlbnRgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGZpbHRlckJhci5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpIHx8XG5cdFx0XHRcdGZpbHRlckJhci5pc0E8dHlwZW9mIEJhc2ljU2VhcmNoPihcInNhcC5mZS5tYWNyb3MudGFibGUuQmFzaWNTZWFyY2hcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0YWJsZS5zZXRGaWx0ZXIoZmlsdGVyQmFyLmdldElkKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIGhhbmRsZUNyZWF0ZUFjdGl2YXRlKGFjdGl2YXRlRXZlbnQ6IFVJNUV2ZW50PHsgY29udGV4dDogQ29udGV4dCB9LCBPRGF0YUxpc3RCaW5kaW5nPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRhd2FpdCB0aGlzLl9oYW5kbGVDcmVhdGVBY3RpdmF0ZShhY3RpdmF0ZUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZHJhZ2dlZCBlbGVtZW50IGVudGVycyBhIHRhYmxlIHJvdy5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EcmFnRW50ZXJEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8eyBiaW5kaW5nQ29udGV4dDogQ29udGV4dDsgZHJhZ1NvdXJjZTogQ29udGV4dDsgZHJvcFBvc2l0aW9uOiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgXCJPblwiIH0sIERyYWdEcm9wSW5mbz5cblx0KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRHJhZ0VudGVyRG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0YXJ0cyB0aGUgZHJhZyBvZiB0aGUgZG9jdW1lbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRHJhZ1N0YXJ0RG9jdW1lbnQodWk1RXZlbnQ6IFVJNUV2ZW50PHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQgfSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25EcmFnU3RhcnREb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogRHJvcHMgdGhlIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICogQHJldHVybnMgVGhlIFByb21pc2Vcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkRyb3BEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8e1xuXHRcdFx0YmluZGluZ0NvbnRleHQ6IENvbnRleHQ7XG5cdFx0XHRkcmFnU291cmNlOiBDb250ZXh0O1xuXHRcdFx0ZHJvcFBvc2l0aW9uOiBzdHJpbmc7XG5cdFx0fT5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGF3YWl0IHRoaXMuX29uRHJvcERvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkNvbGxhcHNlRXhwYW5kTm9kZSh1aTVFdmVudDogVUk1RXZlbnQsIGV4cGFuZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAodWk1RXZlbnQuZ2V0U291cmNlKCkuZ2V0TWV0YWRhdGEoKS5pc0EoXCJzYXAubS5NZW51SXRlbVwiKSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Db2xsYXBzZUV4cGFuZE5vZGUodWk1RXZlbnQsIGV4cGFuZCk7XG5cdH1cblxuXHQvKipcblx0ICogSW50ZXJuYWwgbWV0aG9kIHRvIG1vdmUgYSByb3cgdXAgb3IgZG93biBpbiBhIFRyZWUgdGFibGUuXG5cdCAqIEBwYXJhbSB1aTVFdmVudFxuXHQgKiBAcGFyYW0gbW92ZVVwIFRydWUgZm9yIG1vdmUgdXAsIGZhbHNlIGZvciBtb3ZlIGRvd25cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Nb3ZlVXBEb3duKHVpNUV2ZW50OiBVSTVFdmVudCwgbW92ZVVwOiBib29sZWFuLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Nb3ZlVXBEb3duKHVpNUV2ZW50LCBtb3ZlVXAsIGZvckNvbnRleHRNZW51KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGZyb20gdGhlIHRhYmxlLiBUaGlzIGZ1bmN0aW9uIGNvbnNpZGVycyBvbmx5IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBhcHBsaWVkIGF0IHRoZSBjb250cm9sIGxldmVsLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudCgpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuZ2V0U2VsZWN0aW9uVmFyaWFudCh0aGlzLmdldENvbnRlbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gYXBwbHkgdG8gdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIFNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudChzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2UpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCh0aGlzLmdldENvbnRlbnQoKSwgc2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIF9jcmVhdGVDb250ZW50VjJNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBwcmVwcm9jZXNzb3JDb250ZXh0ID0gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ7XG5cdFx0aWYgKG93bmVyICYmIHByZXByb2Nlc3NvckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5tZXRhUGF0aCkhO1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXG5cdFx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLm9yaWdpbmFsVGFibGVEZWZpbml0aW9uKTtcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBbXTsgLy8gQXMgd2UgaGF2ZSBhIG5ldyB0YWJsZSBkZWZpbml0aW9uLCB3ZSBjbGVhbiB0aGUgY2FjaGVkIHByb3BlcnR5SW5mb3MgdG8gcmVjcmVhdGUgdGhlbVxuXG5cdFx0XHRjb25zdCBjb252ZXJ0ZWRNZXRhZGF0YSA9IGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpO1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IGNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzXG5cdFx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0dGhpcy5jb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdGNvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgaGFuZGxlclByb3ZpZGVyID0gbmV3IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIodGhpcywgeyBjb2xsZWN0aW9uRW50aXR5LCBtZXRhTW9kZWwgfSk7XG5cblx0XHRcdGNvbnN0IGZyYWdtZW50ID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoXG5cdFx0XHRcdHBhcnNlWE1MU3RyaW5nKFxuXHRcdFx0XHRcdHhtbGA8cm9vdFxuXHRcdFx0eG1sbnM9XCJzYXAubVwiXG5cdFx0XHR4bWxuczptZGM9XCJzYXAudWkubWRjXCJcblx0XHRcdHhtbG5zOnBsdWdpbnM9XCJzYXAubS5wbHVnaW5zXCJcblx0XHRcdHhtbG5zOm1kY1RhYmxlPVwic2FwLnVpLm1kYy50YWJsZVwiXG5cdFx0XHR4bWxuczptYWNyb1RhYmxlPVwic2FwLmZlLm1hY3Jvcy50YWJsZVwiXG5cdFx0XHR4bWxuczptZGNhdD1cInNhcC51aS5tZGMuYWN0aW9udG9vbGJhclwiXG5cdFx0XHR4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcIlxuXHRcdFx0eG1sbnM6Y29udHJvbD1cInNhcC5mZS5jb3JlLmNvbnRyb2xzXCJcblx0XHRcdHhtbG5zOmR0PVwic2FwLnVpLmR0XCJcblx0XHRcdHhtbG5zOmZsPVwic2FwLnVpLmZsXCJcblx0XHRcdHhtbG5zOnZhcmlhbnQ9XCJzYXAudWkuZmwudmFyaWFudHNcIlxuXHRcdFx0eG1sbnM6cDEzbj1cInNhcC51aS5tZGMucDEzblwiXG5cdFx0XHR4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiPiR7anN4LnJlbmRlckFzWE1MKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIE1kY1RhYmxlVGVtcGxhdGUuZ2V0TURDVGFibGVUZW1wbGF0ZSh0aGlzLCB7XG5cdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHByZXByb2Nlc3NvckNvbnRleHQuZ2V0Q29udmVydGVkTWV0YWRhdGEoKSxcblx0XHRcdFx0XHRtZXRhTW9kZWwsXG5cdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdGFwcENvbXBvbmVudDogb3duZXIuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdFx0fSk7XG5cdFx0XHR9KX08L3Jvb3Q+YCxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdClbMF0sXG5cdFx0XHRcdHsgbW9kZWxzOiB7fSB9LFxuXHRcdFx0XHRwcmVwcm9jZXNzb3JDb250ZXh0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKGZyYWdtZW50LmZpcnN0RWxlbWVudENoaWxkKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgb2xkIE1EQyB0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIEZpbHRlckJhciBsaXN0ZW5lcnNcblx0XHRcdFx0dGhpcy5kZXRhY2hGaWx0ZXJCYXIoKTtcblxuXHRcdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblx0XHRcdFx0Y29uc3QgY29udGVudCA9IChhd2FpdCBGcmFnbWVudC5sb2FkKHtcblx0XHRcdFx0XHRkZWZpbml0aW9uOiBmcmFnbWVudC5maXJzdEVsZW1lbnRDaGlsZCxcblx0XHRcdFx0XHRjb250cm9sbGVyOiBvd25lci5nZXRSb290Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiBvd25lci5nZXRSb290Q29udHJvbCgpXG5cdFx0XHRcdH0pKSBhcyBUYWJsZTtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblxuXHRcdFx0XHR0aGlzLnVwZGF0ZUZpbHRlckJhcigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHVua25vd24sIGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHByb3BlcnR5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBbXCJpZ25vcmVkRmllbGRzXCIsIFwibWV0YVBhdGhcIl0uaW5jbHVkZXMocHJvcGVydHlLZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlLCBiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBkYXRhIG1vZGVsIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgZGF0YSBtb2RlbCBwYXRoIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdC5cblx0ICovXG5cblx0Z2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0YU1vZGVsQ29udmVyc2lvbiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0YWJsZS5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRpZiAoIW1ldGFNb2RlbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlQYXRoID0gdGFibGUuZGF0YShcIm1ldGFQYXRoXCIpO1xuXHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gdGhpcy5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkuZmluZCgocHJvcGVydHlJbmZvKSA9PiBwcm9wZXJ0eUluZm8ubmFtZSA9PT0gcHJvcGVydHlOYW1lKVxuXHRcdFx0Py5hbm5vdGF0aW9uUGF0aDtcblx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSBtZXRhTW9kZWwuZ2V0Q29udGV4dCh0YXJnZXRNZXRhUGF0aCEpO1xuXHRcdGNvbnN0IGVudGl0eVNldCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KGVudGl0eVBhdGgpO1xuXHRcdGNvbnN0IGNvbnZlcnRlZHRhcmdldE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0TWV0YU1vZGVsQ29udGV4dCh0YXJnZXRPYmplY3QpIGFzXG5cdFx0XHR8IERhdGFGaWVsZEFic3RyYWN0VHlwZXNcblx0XHRcdHwgRGF0YVBvaW50VHlwZVR5cGVzO1xuXHRcdGxldCBkYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHk+KFxuXHRcdFx0dGFyZ2V0T2JqZWN0LFxuXHRcdFx0ZW50aXR5U2V0XG5cdFx0KTtcblx0XHRkYXRhTW9kZWxQYXRoID1cblx0XHRcdEZpZWxkVGVtcGxhdGluZy5nZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUoXG5cdFx0XHRcdGRhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzPlxuXHRcdFx0KSB8fCBkYXRhTW9kZWxQYXRoO1xuXHRcdHJldHVybiB7IGRhdGFNb2RlbFBhdGg6IGRhdGFNb2RlbFBhdGgsIGNvbnZlcnRlZHRhcmdldE9iamVjdDogY29udmVydGVkdGFyZ2V0T2JqZWN0IH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBiaW5kaW5nIGNvbnRleHQgZm9yIHRoZSBnaXZlbiBNb2RlQXNFeHByZXNzaW9uLlxuXHQgKiBAcGFyYW0gTW9kZUFzRXhwcmVzc2lvblxuXHQgKiBAcGFyYW0gcm93Q29udGV4dFxuXHQgKiBAcmV0dXJuc1xuXHQgKi9cblxuXHRjcmVhdGVBbnlDb250cm9sKE1vZGVBc0V4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCByb3dDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkKTogdHlwZW9mIEFueSB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBhbnlPYmplY3QgPSBuZXcgQW55KHsgYW55OiBNb2RlQXNFeHByZXNzaW9uIH0pO1xuXHRcdGFueU9iamVjdC5zZXRNb2RlbChyb3dDb250ZXh0Py5nZXRNb2RlbCgpKTtcblx0XHRhbnlPYmplY3Quc2V0TW9kZWwodGFibGUuZ2V0TW9kZWwoXCJ1aVwiKSwgXCJ1aVwiKTtcblx0XHRyZXR1cm4gYW55T2JqZWN0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZWRpdCBtb2RlIG9mIGEgUHJvcGVydHkuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSByb3dDb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSByb3cgY29udGFpbmluZyB0aGUgcHJvcGVydHlcblx0ICogQHJldHVybnMgVGhlIGVkaXQgbW9kZSBvZiB0aGUgZmllbGRcblx0ICovXG5cblx0Z2V0UHJvcGVydHlFZGl0TW9kZShwcm9wZXJ0eU5hbWU6IHN0cmluZywgcm93Q29udGV4dDogQ29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGFueU9iamVjdDogdHlwZW9mIEFueSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0pIHtcblx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWUpPy5kYXRhTW9kZWxQYXRoO1xuXHRcdFx0Y29uc3QgY29udmVydGVkdGFyZ2V0T2JqZWN0ID0gdGhpcy5nZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lKT8uY29udmVydGVkdGFyZ2V0T2JqZWN0O1xuXHRcdFx0aWYgKGRhdGFNb2RlbFBhdGggJiYgY29udmVydGVkdGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5Rm9yRmllbGRDb250cm9sID0gKGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdCBhcyB1bmtub3duIGFzIERhdGFGaWVsZFR5cGVzKT8uVmFsdWVcblx0XHRcdFx0XHQ/IChkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhRmllbGRUeXBlcykuVmFsdWVcblx0XHRcdFx0XHQ6IGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0XHRcdFx0Y29uc3QgZWRpdE1vZGVBc0V4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRVSUZvcm1hdHRlcnMuZ2V0RWRpdE1vZGUocHJvcGVydHlGb3JGaWVsZENvbnRyb2wsIGRhdGFNb2RlbFBhdGgsIGZhbHNlLCB0cnVlLCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFueU9iamVjdCA9IHRoaXMuY3JlYXRlQW55Q29udHJvbChlZGl0TW9kZUFzRXhwcmVzc2lvbiwgcm93Q29udGV4dCk7XG5cdFx0XHRcdHRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0gPSBhbnlPYmplY3Q7XG5cdFx0XHRcdGFueU9iamVjdC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTsgLy8gd2UgbmVlZCB0byBzZXQgdGhlIGJpbmRpbmcgY29udGV4dCB0byBudWxsIG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIGFkZERlcGVuZGVudCB3aWxsIHNldCBpdCB0byB0aGUgY29udGV4dCBvZiB0aGUgdGFibGVcblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQoYW55T2JqZWN0KTsgLy8gdG8gZGVzdHJveSBpdCB3aGVuIHRoZSB0YWJsZUFQSSBpcyBkZXN0cm95ZWRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YW55T2JqZWN0ID0gdGhpcy5wcm9wZXJ0eUVkaXRNb2RlQ2FjaGVbcHJvcGVydHlOYW1lXTtcblx0XHR9XG5cdFx0YW55T2JqZWN0Py5zZXRCaW5kaW5nQ29udGV4dChyb3dDb250ZXh0KTtcblx0XHRjb25zdCBlZGl0TW9kZSA9IGFueU9iamVjdD8uZ2V0QW55KCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGFueU9iamVjdD8uc2V0QmluZGluZ0NvbnRleHQobnVsbCk7XG5cdFx0cmV0dXJuIGVkaXRNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3cgdGhlIGNvbHVtbnMgd2l0aCB0aGUgZ2l2ZW4gY29sdW1uIGtleXMgYnkgc2V0dGluZyB0aGVpciBhdmFpbGFiaWxpdHkgdG8gRGVmYXVsdC5cblx0ICogQHBhcmFtIGNvbHVtbktleXMgVGhlIGtleXMgZm9yIHRoZSBjb2x1bW5zIHRvIHNob3dcblx0ICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuXHQgKiBAcHVibGljXG5cdCAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBzaG93Q29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCB0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBoaWRlXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKi9cblx0YXN5bmMgaGlkZUNvbHVtbnMoY29sdW1uS2V5czogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRmb3IgKGNvbnN0IGNvbHVtbktleSBvZiBjb2x1bW5LZXlzKSB7XG5cdFx0XHR0aGlzLm1vZGlmeUR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uKGNvbHVtbktleSwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZ25vcmVkRmllbGRzIFRoZSBmaWVsZHMgdG8gaWdub3JlXG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGlzIGluIG9yZGVyIHRvIGFsbG93IG1ldGhvZCBjaGFpbmluZ1xuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldElnbm9yZWRGaWVsZHMoaWdub3JlZEZpZWxkczogc3RyaW5nKTogdGhpcyB7XG5cdFx0cmV0dXJuIHRoaXMuc2V0UHJvcGVydHkoXCJpZ25vcmVkRmllbGRzXCIsIGlnbm9yZWRGaWVsZHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBpZ25vcmVkRmllbGRzIHByb3BlcnR5XG5cdCAqIEBleHBlcmltZW50YWxcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0SWdub3JlZEZpZWxkcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldFByb3BlcnR5KFwiaWdub3JlZEZpZWxkc1wiKSA/PyB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIHN0YXRlIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250cm9sIHN0YXRlIGtleS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHJldHVybnMgLSBUaGUgZnVsbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHN0YXRlIGlmIGF2YWlsYWJsZS5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZnVsbFN0YXRlOiBjb250cm9sU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IGluaXRpYWxDb250cm9sU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGtleSB0byBiZSB1c2VkIGZvciBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIGNvbnRyb2wgdG8gZ2V0IHN0YXRlIGtleSBmb3Jcblx0ICogQHJldHVybnMgVGhlIGtleSB0byBiZSB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250cm9scyBzdGF0ZVxuXHQgKi9cblx0Z2V0U3RhdGVLZXkob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMuY29udGVudCk/LmdldExvY2FsSWQob0NvbnRyb2wuZ2V0SWQoKSkgfHwgb0NvbnRyb2wuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBkZWZpbml0aW9uIHdpdGggaWdub3JlZEZpZWxkcyBhbmQgZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zLlxuXHQgKiBAcGFyYW0gaWdub3JlZEZpZWxkc1xuXHQgKiBAcGFyYW0gZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zXG5cdCAqIEBwYXJhbSB0YWJsZURlZmluaXRpb25cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkoXG5cdFx0aWdub3JlZEZpZWxkczogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uczogRHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5bXSxcblx0XHR0YWJsZURlZmluaXRpb246IFRhYmxlVmlzdWFsaXphdGlvblxuXHQpOiB2b2lkIHtcblx0XHRDb2x1bW5NYW5hZ2VtZW50LnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljKGlnbm9yZWRGaWVsZHMsIGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucywgdGFibGVEZWZpbml0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBNREMgdGFibGUuXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgZm9yd2FyZGluZyBhZ2dyZWdhdGlvbiB0byBnZXQgdGhlIHRhcmdldCBvZiB0aGUgYWdncmVnYXRpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIFRoZSBtZGMgdGFibGVcblx0ICovXG5cdGdldE1EQ1RhYmxlKCk6IE1EQ1RhYmxlIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxlZCBieSB0aGUgTURDIHN0YXRlIHV0aWwgd2hlbiB0aGUgc3RhdGUgZm9yIHRoaXMgY29udHJvbCdzIGNoaWxkIGhhcyBjaGFuZ2VkLlxuXHQgKi9cblx0aGFuZGxlU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxzIHRoZSBhc3luY0NhbGwgZnVuY3Rpb24gb25seSBpZiB0aGUgbG9ja05hbWUgaXMgbm90IGFscmVhZHkgbG9ja2VkLlxuXHQgKiBAcGFyYW0gYXN5bmNDYWxsXG5cdCAqIEBwYXJhbSBsb2NrTmFtZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG5cdCAqL1xuXHRhc3luYyBhdm9pZFBhcmFsbGVsQ2FsbHMoYXN5bmNDYWxsOiBGdW5jdGlvbiwgbG9ja05hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmxvY2tbbG9ja05hbWVdKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSB0cnVlO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCBhc3luY0NhbGwoKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSBmYWxzZTtcblx0XHR9XG5cdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IGZhbHNlO1xuXHR9XG5cblx0ZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0Ly8gV2UgcmVsZWFzZSBob2xkIG9uIG1lc3NhZ2VIYW5kbGVyIGJ5IHRoZSBjb250cm9sIGlmIHRoZXJlIGlzIG9uZS5cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8ubWVzc2FnZUhhbmRsZXI/LnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdHByaXZhdGUgZnVsbFNjcmVlbkRpYWxvZz86IERpYWxvZzsgLy8gVGhlIGRpYWxvZyB1c2VkIHRvIGRpc3BsYXkgdGhlIHRhYmxlIGluIGZ1bGwgc2NyZWVuIG1vZGVcblxuXHRzZXRGdWxsU2NyZWVuRGlhbG9nKGRpYWxvZzogRGlhbG9nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5mdWxsU2NyZWVuRGlhbG9nID0gZGlhbG9nO1xuXHR9XG5cblx0cHJpdmF0ZSBlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXG5cdHByaXZhdGUgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmV0Y2hlZCBwcm9wZXJ0eUluZm9zIGZyb20gdGhlIHRhYmxlIGRlbGVnYXRlIGNvbnRhaW5pbmcgaW50ZXJuYWwgcHJvcGVydGllcy5cblx0ICogQHBhcmFtIGVuaGFuY2VkUHJvcGVydHlJbmZvc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyhlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSk6IHZvaWQge1xuXHRcdHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zID0gZW5oYW5jZWRQcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm8gZW5oYW5jZWQgd2l0aCB0aGUgUHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBNREMgZXhwZWN0ZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgVGhlIFByb3BlcnR5SW5mb1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0UHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGVuaGFuY2VkUHJvcGVydHlJbmZvIG9mIHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zIGFzIFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdGtleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8ua2V5LFxuXHRcdFx0XHRsYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubGFiZWwsXG5cdFx0XHRcdHZpc2libGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc2libGUsXG5cdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0Y2xpcGJvYXJkU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNsaXBib2FyZFNldHRpbmdzLFxuXHRcdFx0XHR2aXN1YWxTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8udmlzdWFsU2V0dGluZ3MsXG5cdFx0XHRcdHRvb2x0aXA6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRvb2x0aXAsXG5cdFx0XHRcdGlzS2V5OiBlbmhhbmNlZFByb3BlcnR5SW5mby5pc0tleVxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKGVuaGFuY2VkUHJvcGVydHlJbmZvLnByb3BlcnR5SW5mb3MpIHtcblx0XHRcdFx0cHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRcdC4uLnByb3BlcnR5SW5mbyxcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zXG5cdFx0XHRcdH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZXh0ZW5zaW9uOiBQcm9wZXJ0eUluZm9bXCJleHRlbnNpb25cIl07XG5cdFx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24pIHtcblx0XHRcdFx0XHRleHRlbnNpb24gPSB7XG5cdFx0XHRcdFx0XHR0ZWNobmljYWxseUdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLnRlY2huaWNhbGx5R3JvdXBhYmxlLFxuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlBZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24uYWRkaXRpb25hbFByb3BlcnRpZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGV4dGVuc2lvbiA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhleHRlbnNpb24pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cGF0aDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucGF0aCxcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5tYXhDb25kaXRpb25zLFxuXHRcdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdFx0Y29uc3RyYWludHM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNvbnN0cmFpbnRzLFxuXHRcdFx0XHRcdGdyb3VwOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cCxcblx0XHRcdFx0XHRncm91cExhYmVsOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cExhYmVsLFxuXHRcdFx0XHRcdGNhc2VTZW5zaXRpdmU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNhc2VTZW5zaXRpdmUsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZmlsdGVyYWJsZSxcblx0XHRcdFx0XHRzb3J0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uc29ydGFibGUsXG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cGFibGUsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmRhdGFUeXBlLFxuXHRcdFx0XHRcdGFnZ3JlZ2F0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uYWdncmVnYXRhYmxlLFxuXHRcdFx0XHRcdHVuaXQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnVuaXQsXG5cdFx0XHRcdFx0dGV4dDogZW5oYW5jZWRQcm9wZXJ0eUluZm8udGV4dCxcblx0XHRcdFx0XHRleHRlbnNpb25cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHByb3BlcnR5SW5mb3MucHVzaChcblx0XHRcdFx0T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BlcnR5SW5mbykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkgYXMgUHJvcGVydHlJbmZvXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdHNldENhY2hlZFByb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBwcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0Z2V0Q2FjaGVkUHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0cmV0dXJuIHRoaXMucHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgdGFibGUgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIHBhdGhcblx0ICovXG5cdGdldFJvd0NvbGxlY3Rpb25QYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbGxlci5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbik7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoY29sbGVjdGlvbkNvbnRleHQhLCBjb250ZXh0UGF0aCk7XG5cdFx0cmV0dXJuIGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCkgfHwgZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBiaW5kaW5nIGluZm8gdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXN0IGJpbmRpbmcgZm9yIHRoZSBNREMgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0YWJsZSBiaW5kaW5nIGluZm9cblx0ICovXG5cdGdldFRhYmxlVGVtcGxhdGVCaW5kaW5nSW5mbygpOiBDb2xsZWN0aW9uQmluZGluZ0luZm8ge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhO1xuXHRcdGNvbnN0IHBhdGggPSB0aGlzLmdldFJvd0NvbGxlY3Rpb25QYXRoKCk7XG5cdFx0Y29uc3Qgcm93QmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mbyA9IHtcblx0XHRcdHN1c3BlbmRlZDogZmFsc2UsXG5cdFx0XHRwYXRoLFxuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHQkY291bnQ6IHRydWVcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmVuYWJsZSRzZWxlY3QpIHtcblx0XHRcdC8vIERvbid0IGFkZCAkc2VsZWN0IHBhcmFtZXRlciBpbiBjYXNlIG9mIGFuIGFuYWx5dGljYWwgcXVlcnksIHRoaXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoZSBtb2RlbFxuXHRcdFx0Y29uc3Qgc2VsZWN0ID0gT2JqZWN0LmtleXModGhpcy50YWJsZURlZmluaXRpb24ucmVxdWVzdEF0TGVhc3QpLmpvaW4oXCIsXCIpO1xuXHRcdFx0aWYgKHNlbGVjdCkge1xuXHRcdFx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kc2VsZWN0ID0gc2VsZWN0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5lbmFibGUkJGdldEtlZXBBbGl2ZUNvbnRleHQpIHtcblx0XHRcdC8vIHdlIGxhdGVyIGVuc3VyZSBpbiB0aGUgZGVsZWdhdGUgb25seSBvbmUgbGlzdCBiaW5kaW5nIGZvciBhIGdpdmVuIHRhcmdldENvbGxlY3Rpb25QYXRoIGhhcyB0aGUgZmxhZyAkJGdldEtlZXBBbGl2ZUNvbnRleHRcblx0XHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ2V0S2VlcEFsaXZlQ29udGV4dCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgYSBzZWFyY2gvZmlsdGVyXG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyID0gdHJ1ZTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ3JvdXBJZCA9IFwiJGF1dG8uV29ya2Vyc1wiO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkdXBkYXRlR3JvdXBJZCA9IFwiJGF1dG9cIjtcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJG93blJlcXVlc3QgPSB0cnVlO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMgPSB0cnVlO1xuXG5cdFx0Ly8gRXZlbnQgaGFuZGxlcnNcblx0XHRjb25zdCBlZGl0Rmxvd0V4dGVuc2lvbiA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0Y29uc3QgZXZlbnRIYW5kbGVyczogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaENvbXBsZXRlZCA9IHRoaXMub25JbnRlcm5hbFBhdGNoQ29tcGxldGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5kYXRhUmVjZWl2ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmRhdGFSZXF1ZXN0ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jaGFuZ2UgPSB0aGlzLm9uTGlzdEJpbmRpbmdDaGFuZ2UuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNyZWF0ZUFjdGl2YXRlID0gdGhpcy5oYW5kbGVDcmVhdGVBY3RpdmF0ZS5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY3JlYXRlU2VudCA9IGVkaXRGbG93RXh0ZW5zaW9uLmhhbmRsZUNyZWF0ZVNlbnQuYmluZChlZGl0Rmxvd0V4dGVuc2lvbik7XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaFNlbnQgPSB0aGlzLm9uSW50ZXJuYWxQYXRjaFNlbnQuYmluZCh0aGlzKTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLmV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7XG5cblx0XHRyZXR1cm4gcm93QmluZGluZ0luZm87XG5cdH1cblxuXHRwcm90ZWN0ZWQgc3RhdGljIGFkZFNldHRpbmcodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBtYW5pZmVzdC1mcmllbmRseSBzZXR0aW5ncyBmcm9tIHRhYmxlQVBJIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFNldHRpbmdzXG5cdCAqL1xuXHRnZXRTZXR0aW5nc0Zvck1hbmlmZXN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCB0YWJsZVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZnJvemVuQ29sdW1uQ291bnRcIiwgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50TW9kZVwiLCB0aGlzLnJvd0NvdW50TW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkXCIsIHRoaXMuZGlzYWJsZUNvcHlUb0NsaXBib2FyZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbk1vZGVcIiwgdGhpcy5zZWxlY3Rpb25Nb2RlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcIiwgdGhpcy5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMuaWdub3JlZEZpZWxkcyk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblxuXHRcdGlmICh0aGlzLmNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Y29uc3QgY3JlYXRpb25Nb2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwibmFtZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5uYW1lKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0ZUF0RW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGVcIiwgdGhpcy5jcmVhdGlvbk1vZGUuaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJjdXN0b21GcmFnbWVudFwiLCB0aGlzLm1hc3NFZGl0LmN1c3RvbUNvbnRlbnQpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJmcm9tSW5saW5lXCIsIHRydWUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQudmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuaWdub3JlZEZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIiwgdGhpcy5tYXNzRWRpdC5vcGVyYXRpb25Hcm91cGluZ01vZGUpO1xuXHRcdFx0dGFibGVTZXR0aW5nc1tcImVuYWJsZU1hc3NFZGl0XCJdID0gZW5hYmxlTWFzc0VkaXQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24/LmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IGFuYWx5dGljYWxDb25maWd1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsIHtcblx0XHRcdFx0cGF0aHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5zaG93Q291bnRzXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGFibGVTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kIGFuIGFjdGlvbiBmcm9tIGl0cyBrZXkuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgVGhlIGFjdGlvbiBpZiBpdCBjYW4gYmUgZm91bmQgKG9yIHVuZGVmaW5lZClcblx0ICovXG5cdGZpbmRTbG90QWN0aW9uRnJvbUtleShrZXk6IHN0cmluZyk6IEFjdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHJlc3VsdDogQWN0aW9uIHwgdW5kZWZpbmVkO1xuXG5cdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zID8/IFtdKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGFjdGlvbi5pc0E8QWN0aW9uR3JvdXA+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiKSB8fFxuXHRcdFx0XHRhY3Rpb24uaXNBPEFjdGlvbkdyb3VwT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmVzdWx0ID8/PSBhY3Rpb24uYWN0aW9ucy5maW5kKChhKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGEuaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSAmJiBhLmtleSA9PT0ga2V5O1xuXHRcdFx0XHR9KSBhcyBBY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpICYmIGFjdGlvbi5rZXkgPT09IGtleSkge1xuXHRcdFx0XHRyZXN1bHQgPSBhY3Rpb247XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0Z2V0RnVsbE1ldGFQYXRoKCk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMubWV0YVBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcblx0XHRcdHJldHVybiB0aGlzLm1ldGFQYXRoO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZXh0UGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLmNvbnRleHRQYXRofSR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0vJHt0aGlzLm1ldGFQYXRofWA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb250ZW50KGZvcmNlQ3JlYXRpb24gPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAoIW93bmVyKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA/Pz0gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IGZ1bGxNZXRhUGF0aCA9IHRoaXMuZ2V0RnVsbE1ldGFQYXRoKCk7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQgfHwgZm9yY2VDcmVhdGlvbikge1xuXHRcdFx0dGhpcy5kZXRhY2hGaWx0ZXJCYXIoKTtcblx0XHRcdHRoaXMuY29udGVudD8uZGVzdHJveSgpO1xuXG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChmdWxsTWV0YVBhdGgpITtcblxuXHRcdFx0dGhpcy50YWJsZURlZmluaXRpb24gPSBjcmVhdGVUYWJsZURlZmluaXRpb24odGhpcyk7XG5cdFx0XHR0aGlzLnVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk7XG5cblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbilcblx0XHRcdFx0LnRhcmdldCBhcyBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gKGNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSA/PyAoY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHRcdFx0dGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lID0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lO1xuXG5cdFx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0aGlzLCB7IG1ldGFNb2RlbCwgY29sbGVjdGlvbkVudGl0eSB9LCB0aGlzKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlTURDVGFibGUoe1xuXHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGhDb250ZXh0LFxuXHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLFxuXHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdG1ldGFNb2RlbFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXMudXBkYXRlRmlsdGVyQmFyKCk7XG5cdFx0dGhpcy5zZXR1cE9wdGltaXN0aWNCYXRjaCgpO1xuXHRcdHRoaXMuc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpO1xuXHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8uc2V0TWV0YVBhdGgoZnVsbE1ldGFQYXRoKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlTURDVGFibGUocGFyYW1ldGVyczogTWRjVGFibGVUZW1wbGF0ZS5UYWJsZVRlbXBsYXRpbmdQYXJhbWV0ZXJzKTogTURDVGFibGUge1xuXHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk6IHZvaWQge1xuXHRcdC8vIElEIGZvciB0aGUgaW50ZXJuYWwgTURDIHRhYmxlXG5cdFx0aWYgKE1hbmFnZWRPYmplY3RNZXRhZGF0YS5pc0dlbmVyYXRlZElkKHRoaXMuZ2V0SWQoKSkpIHtcblx0XHRcdHRoaXMuY29udGVudElkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gYCR7dGhpcy5nZXRJZCgpfS1jb250ZW50YDtcblx0XHR9XG5cblx0XHQvLyBCYXNpYyBzZWFyY2ggZmllbGQgaWYgbm8gZmlsdGVyIGJhciBpcyBwcm92aWRlZFxuXHRcdGlmICh0aGlzLnVzZUJhc2ljU2VhcmNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIElmIG5vIGZpbHRlcmJhciBpcyBwcm92aWRlZCwgdXNlIHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0XHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXJCYXIgPSBnZW5lcmF0ZShbdGhpcy5jb250ZW50SWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgXCJCYXNpY1NlYXJjaFwiXSk7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlYWQtb25seSBtb2RlXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5yZWFkT25seSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHQodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5kaXNwbGF5TW9kZSA9PT0gdHJ1ZSB8fCB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJlYWRPbmx5ID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5yZWFkT25seSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gRW5hYmxlIGVtcHR5IHJvd3Ncblx0XHRpZiAodGhpcy5lbXB0eVJvd3NFbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0XHR0aGlzLmNyZWF0aW9uTW9kZT8ubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChlbmFibGVkICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZCAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbXB0eVJvd3NFbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldE5vRGF0YU1lc3NhZ2VNb2RlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbW9kZSA9IHRoaXMubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5tb2RlRm9yTm9EYXRhTWVzc2FnZSA/PyBcImlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvXCI7XG5cdFx0cmV0dXJuIG1vZGUgPT09IFwidGV4dFwiID8gXCJ0ZXh0XCIgOiBtb2RlLnNwbGl0KFwiLVwiKVsxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSByb3cgYmluZGluZyBvZiB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0Q291bnQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb3dCaW5kaW5nKCk/LmdldENvdW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVBUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWRBLElBeUJNQSxRQUFRLElBQUFDLElBQUEsR0FUYkMsY0FBYyxDQUFDLDhCQUE4QixFQUFFO0lBQUVDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QjtFQUFFLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQzNGQyxLQUFLLENBQUNDLG9CQUFvQixDQUFDLEVBQUFDLEtBQUEsR0FDM0JGLEtBQUssQ0FBQ0csV0FBVyxDQUFDLEVBQUFDLEtBQUEsR0FDbEJKLEtBQUssQ0FBQ0ssb0JBQW9CLENBQUMsRUFBQUMsS0FBQSxHQUMzQk4sS0FBSyxDQUFDTyxjQUFjLENBQUMsRUFBQUMsS0FBQSxHQUNyQlIsS0FBSyxDQUFDUyxnQkFBZ0IsQ0FBQyxFQUFBQyxLQUFBLEdBQ3ZCVixLQUFLLENBQUNXLGtCQUFrQixDQUFDLEVBQUFDLEtBQUEsR0FDekJaLEtBQUssQ0FBQ2EsWUFBWSxDQUFDLEVBQUFDLEtBQUEsR0FDbkJkLEtBQUssQ0FBQ2UsZ0JBQWdCLENBQUMsRUFBQUMsTUFBQSxHQXFCdEJDLGtCQUFrQixDQUFDLGtDQUFrQyxDQUFDLEVBQUFDLE1BQUEsR0F1R3RERCxr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
2306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNDkiLCJfZGVjNTAiLCJfZGVjNTEiLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzU3IiwiX2RlYzU4IiwiX2RlYzU5IiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiX2RlYzY0IiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjUiLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY2IiwiX2RlYzY3IiwiX2RlYzY4IiwiX2RlYzY5IiwiZXZlbnQiLCJfZGVjNzAiLCJfZGVjNzEiLCJfZGVjNzIiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJfZGVjNzciLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjNzgiLCJfZGVjNzkiLCJfZGVjODAiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2RlYzEwNCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWFjcm9BUEkiLCJtU2V0dGluZ3MiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvdGhlcnMiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwicHJvcGVydHlFZGl0TW9kZUNhY2hlIiwiaW5pdGlhbENvbnRyb2xTdGF0ZSIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiX2Rlc2NyaXB0b3I2MiIsIl9kZXNjcmlwdG9yNjMiLCJfZGVzY3JpcHRvcjY0IiwiX2Rlc2NyaXB0b3I2NSIsIl9kZXNjcmlwdG9yNjYiLCJpZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQiLCJsb2NrIiwic3RvcmVkRXZlbnRzIiwib3ZlcnJpZGVSb3dQcmVzcyIsIl9kZXNjcmlwdG9yNjciLCJlbmhhbmNlZFByb3BlcnR5SW5mb3MiLCJwcm9wZXJ0eUluZm9zIiwib3JpZ2luYWxUYWJsZURlZmluaXRpb24iLCJ0YWJsZURlZmluaXRpb24iLCJhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hNYW5pZmVzdEV2ZW50cyIsImhhc0xpc3RlbmVycyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0Um93QmluZGluZyIsInBhcmFtZXRlcnMiLCJtZGNUYWJsZSIsImNvbnRlbnQiLCJkYXRhTW9kZWwiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwiZ2V0Um93Q29sbGVjdGlvblBhdGgiLCJ1bmRlZmluZWQiLCJTdGF0ZVV0aWwiLCJkZXRhY2hTdGF0ZUNoYW5nZSIsInN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaFN0YXRlQ2hhbmdlIiwib0V2ZW50IiwiY29udHJvbCIsImdldFBhcmFtZXRlciIsImlzQSIsInRhYmxlQVBJIiwiZ2V0UGFyZW50IiwiaGFuZGxlU3RhdGVDaGFuZ2UiLCJhdHRhY2hJZk5vTGlzdGVuZXJzIiwiZXZlbnROYW1lIiwibWV0aG9kQ29uZmlnIiwiYXR0YWNoRXZlbnQiLCJ1aTVFdmVudCIsIkZQTUhlbHBlciIsImxvYWRNb2R1bGVBbmRDYWxsTWV0aG9kIiwibW9kdWxlTmFtZSIsIm1ldGhvZE5hbWUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiZ2V0Q3VzdG9tRnVuY3Rpb25JbmZvIiwiYmVmb3JlUmViaW5kVGFibGUiLCJyb3dQcmVzcyIsInNlbGVjdGlvbkNoYW5nZSIsInNldFVwTm9EYXRhSW5mb3JtYXRpb24iLCJ0YWJsZSIsImdldE5vRGF0YSIsIm93bmVyIiwiX2dldE93bmVyIiwiZGVzY3JpcHRpb24iLCJ0aXRsZSIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwic3VmZml4IiwibWV0YVBhdGgiLCJzdGFydHNXaXRoIiwic3Vic3RyaW5nIiwiZ2V0VGV4dCIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0Tm9EYXRhTWVzc2FnZU1vZGUiLCJzZXRBZ2dyZWdhdGlvbiIsIlRleHQiLCJ0ZXh0IiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJCZWZvcmVTZWFyY2giLCJpbGx1c3RyYXRpb25TaXplIiwiZW5hYmxlRGVmYXVsdFRpdGxlQW5kRGVzY3JpcHRpb24iLCJnZXRTZWN0aW9uQ29udGVudFJvbGUiLCJzZW5kRGF0YVRvQ29uc3VtZXIiLCJjb25zdW1lckRhdGEiLCJzZXRIZWFkZXIiLCJzZXRIZWFkZXJTdHlsZSIsImhlYWRlclN0eWxlIiwic2V0SGVhZGVyTGV2ZWwiLCJ0aXRsZUxldmVsIiwiZ2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50Iiwic2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwidmFsdWUiLCJzZXRCdXN5Iiwic2V0QXR0YWNoRXZlbnRzIiwiZXZlbnRIYW5kbGVycyIsIl9nZXRBUElFeHRlbnNpb24iLCJzb3VyY2UiLCJpbnN0YW5jZU1hcCIsImdldCIsImZpbmQiLCJhcGkiLCJnZXRCaW5kaW5nIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImlzQ29udGV4dE1lbnVBY3RpdmUiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiYWRkTWVzc2FnZSIsImdldENvbnRlbnQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNoZWNrQ29udGV4dENoYW5nZSIsImRldGFjaEV2ZW50Iiwicm93QmluZGluZyIsInJlc29sdmVkUGF0aCIsImdldFJlc29sdmVkUGF0aCIsImNyZWF0ZU1lc3NhZ2UiLCJwYXRoIiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0YXJnZXQiLCJwcm9jZXNzb3IiLCJwZXJzaXN0ZW50IiwiX2dldE1lc3NhZ2VNYW5hZ2VyIiwiYWRkTWVzc2FnZXMiLCJnZXRJZCIsImNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50IiwiX29FdmVudCIsImlzVGFibGVSZWFkT25seSIsImlzRWRpdGFibGUiLCJDb21tb25VdGlscyIsImdldElzRWRpdGFibGUiLCJ2aWV3IiwiZ2V0VGFyZ2V0VmlldyIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJjb252ZXJ0ZXJUeXBlIiwicmVtb3ZlTWVzc2FnZSIsImlkIiwibXNnTWFuYWdlciIsIm1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsInJlc3VsdCIsImUiLCJyZW1vdmVNZXNzYWdlcyIsInJlZnJlc2giLCJ0YWJsZVJvd0JpbmRpbmciLCJpc1JlbGF0aXZlIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiaGVhZGVyQ29udGV4dCIsImdldEhlYWRlckNvbnRleHQiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsImdldEdyb3VwSWQiLCJnZXRRdWlja0ZpbHRlciIsImdldFByZXNlbnRhdGlvblZhcmlhbnQiLCJ0YWJsZVN0YXRlIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwic29ydE9yZGVyIiwic29ydGVycyIsIm1hcCIsInNvcnRlciIsIlByb3BlcnR5IiwibmFtZSIsInJlcGxhY2UiLCJEZXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImdyb3VwTGV2ZWxzIiwiZ3JvdXAiLCJ0YWJsZVZpeiIsIkNvbnRlbnQiLCJpdGVtcyIsIml0ZW0iLCJWYWx1ZSIsIlR5cGUiLCJhZ2dyZWdhdGlvbnMiLCJoYXNBZ2dyZWdhdGlvbnMiLCJrZXkiLCJuZXdLZXkiLCJpbml0aWFsRXhwYW5zaW9uTGV2ZWwiLCJnZXRQYXlsb2FkIiwidGFibGVQViIsIlByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyIsInNldFRhYmxlVmlzdWFsaXphdGlvbiIsInByb3BlcnRpZXMiLCJHcm91cEJ5IiwiU29ydE9yZGVyIiwiQWdncmVnYXRpb25zIiwic2V0UHJvcGVydGllcyIsIkVycm9yIiwiU3RyaW5nIiwic2V0UHJlc2VudGF0aW9uVmFyaWFudCIsImN1cnJlbnRTdGF0ZVBWIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5SW5mb05hbWVzIiwicHJvcEluZm8iLCJuZXdUYWJsZVN0YXRlIiwiY29udmVydFBWVG9TdGF0ZSIsInRhYmxlUHJvcGVydGllcyIsImdldFByb3BlcnRpZXMiLCJ0YWJsZVBheWxvYWQiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImdldFZhcmlhbnQiLCJzZXRDdXJyZW50VmFyaWFudEtleSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiTWVzc2FnaW5nIiwiX2dldFJvd0JpbmRpbmciLCJvVGFibGUiLCJnZXRDb3VudHMiLCJUYWJsZVV0aWxzIiwiZ2V0TGlzdEJpbmRpbmdGb3JDb3VudCIsImJhdGNoR3JvdXBJZCIsImRhdGEiLCJhZGRpdGlvbmFsRmlsdGVycyIsImdldEhpZGRlbkZpbHRlcnMiLCJ0aGVuIiwiaVZhbHVlIiwiZ2V0Q291bnRGb3JtYXR0ZWQiLCJvbkxpc3RCaW5kaW5nQ2hhbmdlIiwiZmlyZUV2ZW50IiwiZ2V0UGFyYW1ldGVycyIsInNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQiLCJyZWZyZXNoU2VsZWN0ZWRDb3VudCIsIlRhYmxlUnVudGltZSIsInNldENvbnRleHRzQXN5bmMiLCJvbkZpZWxkTGl2ZUNoYW5nZSIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsIm9uUXVpY2tGaWx0ZXJTZWxlY3Rpb25DaGFuZ2UiLCJmaWx0ZXJCYXJJRCIsImdldEZpbHRlciIsImZpbHRlckJhciIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldFN1c3BlbmRTZWxlY3Rpb24iLCJyZWJpbmQiLCJnZXRDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJvblRhYmxlTmF2aWdhdGUiLCJvQ29udHJvbGxlciIsIm9Db250ZXh0IiwibVBhcmFtZXRlcnMiLCJpc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlIiwiZnVsbFNjcmVlbkRpYWxvZyIsImNsb3NlIiwibmF2aWdhdGlvblBhcmFtZXRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZWFzb24iLCJOYXZpZ2F0aW9uUmVhc29uIiwiUm93UHJlc3MiLCJfcm91dGluZyIsIm5hdmlnYXRlRm9yd2FyZFRvQ29udGV4dCIsIm9uVGFibGVSb3dQcmVzcyIsInByZXNzRXZlbnQiLCJyb3dOYXZpZ2F0aW9uSW5mbyIsImFubm90YXRpb24iLCJyb3ciLCJuYXZpZ2F0aW9uSW5mbyIsImNvbnRyb2xsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsImJpbmRpbmdDb250ZXh0IiwiYXZvaWRQYXJhbGxlbENhbGxzIiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIm5hdmlnYXRpb25UYXJnZXQiLCJlZGl0YWJsZSIsImNoZWNrRWRpdGFibGUiLCJjYWxsRXh0ZW5zaW9uIiwidGFyZ2V0UGF0aCIsInJlY3JlYXRlQ29udGV4dCIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsIm9uVmFyaWFudFNlbGVjdGVkIiwib3JpZ2luYWxTb3VyY2UiLCJnZXRTb3VyY2UiLCJvblZhcmlhbnRTYXZlZCIsIm9uUm93UHJlc3NlZCIsImNvbnRleHQiLCJlbXB0eVJvdyIsImlzSW5hY3RpdmUiLCJpc1RyYW5zaWVudCIsImFuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkIiwiZW5hYmxlQW5hbHl0aWNzIiwib25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyIsImNvbnRleHRzIiwibWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zIiwiX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJvbk9wZW5Jbk5ld1RhYlByZXNzIiwidGhhdCIsImZvckVhY2giLCJNZXNzYWdlQm94Iiwid2FybmluZyIsIm9uSW50ZXJuYWxQYXRjaENvbXBsZXRlZCIsImV2dCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwic2VsZWN0ZWRDb250ZXh0cyIsIkRlbGV0ZUhlbHBlciIsInVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzIiwibWVzc2FnZUhhbmRsZXIiLCJzaG93TWVzc2FnZURpYWxvZyIsInJlbGVhc2VIb2xkQnlDb250cm9sIiwib25JbnRlcm5hbFBhdGNoU2VudCIsImVkaXRGbG93RXh0ZW5zaW9uIiwiZWRpdEZsb3ciLCJob2xkTWVzc2FnZXNGb3JDb250cm9sIiwiaGFuZGxlUGF0Y2hTZW50IiwiaW5saW5lRWRpdEZsb3ciLCJpc0lubGluZUVkaXRQb3NzaWJsZSIsImhhbmRsZUlubGluZUVkaXRQYXRjaFNlbnQiLCJvbkludGVybmFsRGF0YVJlY2VpdmVkIiwiaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50IiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwicmVzcG9uc2VDb250ZXh0c0FycmF5IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwibmV3Q29udGV4dHMiLCJwdXNoIiwicmVjb21tZW5kYXRpb25zIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyIsInNldERvd25sb2FkVXJsIiwib25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQiLCJzZXRQcm9wZXJ0eSIsImZpbHRlcnMiLCJxdWlja0ZpbHRlcnMiLCJzaG93Q291bnRzIiwic2V0Q291bnRzQXNMb2FkaW5nIiwicmVmcmVzaFVuU2VsZWN0ZWRDb3VudHMiLCJvblBhc3RlIiwiZm9yQ29udGV4dE1lbnUiLCJzZXRDb250ZXh0TWVudUFjdGl2ZSIsInJhd1Bhc3RlZERhdGEiLCJtZW51IiwiaW50ZXJuYWxDb250ZXh0IiwiZW5hYmxlUGFzdGUiLCJhY3Rpb24iLCJzcmNDb250ZXh0cyIsInNyY0NvbnRleHQiLCJuZXdQYXJlbnRDb250ZXh0IiwiZ2V0UGF0aCIsImFsbCIsIm1vdmUiLCJwYXJlbnQiLCJjb3B5IiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yQ29weUFjdGlvbiIsInJlcXVlc3RTaWRlRWZmZWN0c0ZvckNoYW5nZU5leHRTaWJsaW5nQWN0aW9uIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiZ2V0RW5hYmxlUGFzdGUiLCJjZWxsU2VsZWN0aW9uIiwiZ2V0Q2VsbFNlbGVjdG9yIiwiZ2V0U2VsZWN0aW9uIiwiY29sdW1ucyIsIlBhc3RlSGVscGVyIiwicGFzdGVSYW5nZURhdGEiLCJwYXN0ZURhdGEiLCJvbkN1dCIsIl9vbkNvcHlDdXQiLCJvbkNvcHkiLCJvbkJlZm9yZUV4cG9ydCIsImV4cG9ydEV2ZW50IiwiX29uQmVmb3JlRXhwb3J0IiwiZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyIiwic1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoIiwic1RhYmxlUm93QmluZGluZyIsImdldFRhcmdldHMiLCJvbkRhdGFTdGF0ZUNoYW5nZSIsImRhdGFTdGF0ZUluZGljYXRvciIsImZpbHRlcmVkTWVzc2FnZXMiLCJoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzIiwibXNnIiwidGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJlbXB0eVJvd01lc3NhZ2UiLCJtaXNzaW5nQ29sdW1uIiwiZmlsdGVyIiwiaGlkZGVuUHJvcGVydHkiLCJtZXNzYWdlU3RyaXBFcnJvciIsImpvaW4iLCJzaG93TWVzc2FnZSIsImludGVybmFsTW9kZWwiLCJyZXN1bWVCaW5kaW5nIiwiYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkIiwiZ2V0RGF0YUluaXRpYWxpemVkIiwicmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMiLCJvRmlsdGVyQ29udHJvbCIsIkZpbHRlclV0aWxzIiwiZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMiLCJzdXNwZW5kQmluZGluZyIsImludmFsaWRhdGVDb250ZW50IiwiZmFzdENyZWF0aW9uUm93IiwiZ2V0Q3JlYXRpb25Sb3ciLCJ0YWJsZUJpbmRpbmciLCJnZXRDb250ZXh0IiwiVGFibGVIZWxwZXIiLCJlbmFibGVGYXN0Q3JlYXRpb25Sb3ciLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIl9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIm9uTWFzc0VkaXRCdXR0b25QcmVzc2VkIiwibWFzc0VkaXRIZWxwZXIiLCJNYXNzRWRpdERpYWxvZ0hlbHBlciIsIm9uQ29udGV4dE1lbnUiLCJvbkNsb3NlIiwic2V0TWFzc0VkaXREaWFsb2dIZWxwZXIiLCJvcGVuIiwib25TZWxlY3Rpb25DaGFuZ2VkIiwidWk1ZXZlbnQiLCJzZXRDb250ZXh0cyIsInNlbGVjdGVkQ29udGV4dCIsIm9uQWN0aW9uUHJlc3MiLCJwYWdlQ29udHJvbGxlciIsImFjdGlvbk5hbWUiLCJtb2RlbCIsImV4ZWN1dGVBY3Rpb24iLCJub3RBcHBsaWNhYmxlQ29udGV4dHMiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRUeXBlcyIsImdldE1ldGFNb2RlbCIsImVudGl0eVR5cGUiLCJyZXNvbHZlUGF0aCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2ciLCJOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsImxhYmVsIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0TmFtZSIsImFwcGxpY2FibGVDb250ZXh0cyIsImludm9rZUFjdGlvbiIsImluZm8iLCJvbkNvbnRleHRNZW51UHJlc3MiLCJfb25Db250ZXh0TWVudVByZXNzIiwibWFzc0VkaXREaWFsb2dIZWxwZXIiLCJnZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsInVwZGF0ZUZpbHRlckJhciIsImZpbHRlckJhclJlZklkIiwiZ2V0RmlsdGVyQmFyIiwiX3NldEZpbHRlckJhciIsImRldGFjaEZpbHRlckJhciIsInNldEZpbHRlciIsImdldEZpbHRlckJhckNvbnRyb2wiLCJ0YWJsZUFQSUlkIiwidGFibGVBUElMb2NhbElkIiwicG90ZW50aWFsZmlsdGVyQmFySWQiLCJSZWdFeHAiLCJieUlkIiwiaGFuZGxlQ3JlYXRlQWN0aXZhdGUiLCJhY3RpdmF0ZUV2ZW50IiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwib25EcmFnRW50ZXJEb2N1bWVudCIsIl9vbkRyYWdFbnRlckRvY3VtZW50Iiwib25EcmFnU3RhcnREb2N1bWVudCIsIl9vbkRyYWdTdGFydERvY3VtZW50Iiwib25Ecm9wRG9jdW1lbnQiLCJfb25Ecm9wRG9jdW1lbnQiLCJvbkNvbGxhcHNlRXhwYW5kTm9kZSIsImV4cGFuZCIsImdldE1ldGFkYXRhIiwiX29uQ29sbGFwc2VFeHBhbmROb2RlIiwib25Nb3ZlVXBEb3duIiwibW92ZVVwIiwiX29uTW92ZVVwRG93biIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJTdGF0ZUhlbHBlciIsInNldFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50IiwicHJlZmlsbERlc2NyaXB0aW9ucyIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJfY3JlYXRlQ29udGVudFYyTW9kZSIsInByZXByb2Nlc3NvckNvbnRleHQiLCJtZXRhTW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiZGVlcENsb25lIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkiLCJpZ25vcmVkRmllbGRzIiwiY29sbGVjdGlvbkVudGl0eSIsImNvbGxlY3Rpb24iLCJjb250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJmcmFnbWVudCIsIlhNTFByZXByb2Nlc3NvciIsInByb2Nlc3MiLCJwYXJzZVhNTFN0cmluZyIsInhtbCIsImpzeCIsInJlbmRlckFzWE1MIiwiTWRjVGFibGVUZW1wbGF0ZSIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJnZXRDb252ZXJ0ZWRNZXRhZGF0YSIsIm1vZGVscyIsImZpcnN0RWxlbWVudENoaWxkIiwiZGVzdHJveSIsIkZyYWdtZW50IiwibG9hZCIsImRlZmluaXRpb24iLCJnZXRSb290Q29udHJvbGxlciIsImNvbnRhaW5pbmdWaWV3IiwiZ2V0Um9vdENvbnRyb2wiLCJwcm9wZXJ0eUtleSIsInByb3BlcnR5VmFsdWUiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJpbmNsdWRlcyIsImdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdCIsInByb3BlcnR5TmFtZSIsImVudGl0eVBhdGgiLCJ0YXJnZXRNZXRhUGF0aCIsInByb3BlcnR5SW5mbyIsImFubm90YXRpb25QYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udmVydGVkdGFyZ2V0T2JqZWN0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJkYXRhTW9kZWxQYXRoIiwiRmllbGRUZW1wbGF0aW5nIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlIiwiY3JlYXRlQW55Q29udHJvbCIsIk1vZGVBc0V4cHJlc3Npb24iLCJyb3dDb250ZXh0IiwiYW55T2JqZWN0IiwiQW55IiwiYW55Iiwic2V0TW9kZWwiLCJnZXRQcm9wZXJ0eUVkaXRNb2RlIiwicHJvcGVydHlGb3JGaWVsZENvbnRyb2wiLCJlZGl0TW9kZUFzRXhwcmVzc2lvbiIsImNvbXBpbGVFeHByZXNzaW9uIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0RWRpdE1vZGUiLCJzZXRCaW5kaW5nQ29udGV4dCIsImFkZERlcGVuZGVudCIsImVkaXRNb2RlIiwiZ2V0QW55Iiwic2hvd0NvbHVtbnMiLCJjb2x1bW5LZXlzIiwiY29sdW1uS2V5IiwibW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4iLCJoaWRlQ29sdW1ucyIsInNldElnbm9yZWRGaWVsZHMiLCJnZXRJZ25vcmVkRmllbGRzIiwiZ2V0Q29udHJvbFN0YXRlIiwiY29udHJvbFN0YXRlIiwiZnVsbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZ2V0U3RhdGVLZXkiLCJvQ29udHJvbCIsImdldExvY2FsSWQiLCJkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnMiLCJ1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eVN0YXRpYyIsImdldE1EQ1RhYmxlIiwiYXN5bmNDYWxsIiwibG9ja05hbWUiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJzZXRGdWxsU2NyZWVuRGlhbG9nIiwiZGlhbG9nIiwic2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsImdldFByb3BlcnR5SW5mb3MiLCJlbmhhbmNlZFByb3BlcnR5SW5mbyIsInZpc2libGUiLCJleHBvcnRTZXR0aW5ncyIsImNsaXBib2FyZFNldHRpbmdzIiwidmlzdWFsU2V0dGluZ3MiLCJ0b29sdGlwIiwiaXNLZXkiLCJleHRlbnNpb24iLCJ0ZWNobmljYWxseUdyb3VwYWJsZSIsInRlY2huaWNhbGx5QWdncmVnYXRhYmxlIiwiY3VzdG9tQWdncmVnYXRlIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJfcmVmIiwiXyIsIm1heENvbmRpdGlvbnMiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJncm91cExhYmVsIiwiY2FzZVNlbnNpdGl2ZSIsImZpbHRlcmFibGUiLCJzb3J0YWJsZSIsImdyb3VwYWJsZSIsImRhdGFUeXBlIiwiYWdncmVnYXRhYmxlIiwidW5pdCIsIl9yZWYyIiwic2V0Q2FjaGVkUHJvcGVydHlJbmZvcyIsImdldENhY2hlZFByb3BlcnR5SW5mb3MiLCJjb2xsZWN0aW9uQ29udGV4dCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZ2V0VGFibGVUZW1wbGF0ZUJpbmRpbmdJbmZvIiwicm93QmluZGluZ0luZm8iLCJzdXNwZW5kZWQiLCIkY291bnQiLCJlbmFibGUkc2VsZWN0Iiwic2VsZWN0Iiwia2V5cyIsInJlcXVlc3RBdExlYXN0IiwiJHNlbGVjdCIsImVuYWJsZSQkZ2V0S2VlcEFsaXZlQ29udGV4dCIsIiQkZ2V0S2VlcEFsaXZlQ29udGV4dCIsIiQkY2xlYXJTZWxlY3Rpb25PbkZpbHRlciIsIiQkZ3JvdXBJZCIsIiQkdXBkYXRlR3JvdXBJZCIsIiQkb3duUmVxdWVzdCIsIiQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMiLCJwYXRjaENvbXBsZXRlZCIsImJpbmQiLCJkYXRhUmVjZWl2ZWQiLCJkYXRhUmVxdWVzdGVkIiwiY2hhbmdlIiwiY3JlYXRlQWN0aXZhdGUiLCJjcmVhdGVTZW50IiwiaGFuZGxlQ3JlYXRlU2VudCIsInBhdGNoU2VudCIsImV2ZW50cyIsImFkZFNldHRpbmciLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwidGFibGVTZXR0aW5ncyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJyb3dDb3VudE1vZGUiLCJyb3dDb3VudCIsImVuYWJsZUZ1bGxTY3JlZW4iLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlU2VsZWN0QWxsIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImNyZWF0aW9uTW9kZSIsImNyZWF0aW9uRmllbGRzIiwiY3JlYXRlQXRFbmQiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwib3V0Ym91bmQiLCJtYXNzRWRpdCIsImVuYWJsZU1hc3NFZGl0IiwiY3VzdG9tQ29udGVudCIsInZpc2libGVGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJhbmFseXRpY2FsQ29uZmlndXJhdGlvbiIsImFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwiLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsImZpbmRTbG90QWN0aW9uRnJvbUtleSIsImFjdGlvbnMiLCJhIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJnZXRGdWxsTWV0YVBhdGgiLCJlbmRzV2l0aCIsImZvcmNlQ3JlYXRpb24iLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZnVsbE1ldGFQYXRoIiwibWV0YVBhdGhDb250ZXh0IiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidXBkYXRlUHJvcGVydGllc0Zyb21UYWJsZURlZmluaXRpb24iLCJjb252ZXJ0ZWRUeXBlcyIsInRhcmdldFR5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJjcmVhdGVNRENUYWJsZSIsInNldHVwT3B0aW1pc3RpY0JhdGNoIiwic2V0TWV0YVBhdGgiLCJNYW5hZ2VkT2JqZWN0TWV0YWRhdGEiLCJpc0dlbmVyYXRlZElkIiwiY29udGVudElkIiwidXNlQmFzaWNTZWFyY2giLCJnZW5lcmF0ZSIsInJlYWRPbmx5IiwiZGlzcGxheU1vZGUiLCJlbXB0eVJvd3NFbmFibGVkIiwiZW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsIm1vZGUiLCJtb2RlRm9yTm9EYXRhTWVzc2FnZSIsInNwbGl0IiwiZ2V0Q291bnQiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGVBUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkVHlwZXMsXG5cdERhdGFQb2ludFR5cGVUeXBlcyxcblx0TGluZUl0ZW0sXG5cdFByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mLCBYTUxFdmVudEhvbGRlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIGltcGxlbWVudEludGVyZmFjZSwgbWl4aW4sIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQganN4IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIElSb3dCaW5kaW5nSW50ZXJmYWNlIGZyb20gXCJzYXAvZmUvY29yZS9JUm93QmluZGluZ0ludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBwYXJzZVhNTFN0cmluZywgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L05vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nXCI7XG5pbXBvcnQgTmF2aWdhdGlvblJlYXNvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9OYXZpZ2F0aW9uUmVhc29uXCI7XG5pbXBvcnQgQW55IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9BbnlcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcywgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRnZXRDdXN0b21GdW5jdGlvbkluZm8sXG5cdHR5cGUgRXh0ZXJuYWxNZXRob2RDb25maWcsXG5cdHR5cGUgVGFibGVUeXBlLFxuXHR0eXBlIFRhYmxlVmlzdWFsaXphdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCBEZWxldGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRGVsZXRlSGVscGVyXCI7XG5pbXBvcnQgRlBNSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUGFzdGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUGFzdGVIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQge1xuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoLFxuXHR0eXBlIERhdGFNb2RlbE9iamVjdFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgdHlwZSBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25CaW5kaW5nSW5mbywgRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN1bWVyRGF0YSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiO1xuaW1wb3J0ICogYXMgRmllbGRUZW1wbGF0aW5nIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQkJWNCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEJhc2ljU2VhcmNoIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0Jhc2ljU2VhcmNoXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgKiBhcyBNZGNUYWJsZVRlbXBsYXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIFF1aWNrRmlsdGVyU2VsZWN0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvUXVpY2tGaWx0ZXJTZWxlY3RvclwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgVGFibGVIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVIZWxwZXJcIjtcbmltcG9ydCBUYWJsZVJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVSdW50aW1lXCI7XG5pbXBvcnQgVGFibGVVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9VdGlsc1wiO1xuaW1wb3J0IHsgY29udmVydFBWVG9TdGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL2FkYXB0ZXIvVGFibGVQVlRvU3RhdGVcIjtcbmltcG9ydCBNYXNzRWRpdERpYWxvZ0hlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9tYXNzRWRpdC9NYXNzRWRpdERpYWxvZ0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBQdlByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9wbHVnaW5zL0RhdGFTdGF0ZUluZGljYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBQYXN0ZVByb3ZpZGVyJFBhc3RlRXZlbnQgfSBmcm9tIFwic2FwL20vcGx1Z2lucy9QYXN0ZVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgRnJhZ21lbnQgZnJvbSBcInNhcC91aS9jb3JlL0ZyYWdtZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIERyYWdEcm9wSW5mbyBmcm9tIFwic2FwL3VpL2NvcmUvZG5kL0RyYWdEcm9wSW5mb1wiO1xuaW1wb3J0IHsgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHtcblx0ZGVmYXVsdCBhcyBNRENUYWJsZSxcblx0TURDVGFibGVQcm9wZXJ0eUluZm8gYXMgUHJvcGVydHlJbmZvLFxuXHRkZWZhdWx0IGFzIFRhYmxlLFxuXHRUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCxcblx0VGFibGUkQmVmb3JlT3BlbkNvbnRleHRNZW51RXZlbnQsXG5cdFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50XG59IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBUeXBlQ29uZmlnIGZyb20gXCJzYXAvdWkvbWRjL1R5cGVDb25maWdcIjtcbmltcG9ydCB0eXBlIHsgR3JvdXBMZXZlbHMsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB7IHR5cGUgUm93QWN0aW9uSXRlbSRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvdGFibGUvUm93QWN0aW9uSXRlbVwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE9EYXRhQ29udGV4dEJpbmRpbmckUGF0Y2hTZW50RXZlbnQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IFN0YXRlSGVscGVyIGZyb20gXCIuLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXBPdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25PdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25PdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgQW5hbHl0aWNhbENvbmZpZ3VyYXRpb24gZnJvbSBcIi4vQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIENvbHVtbk92ZXJyaWRlIGZyb20gXCIuL0NvbHVtbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBNYXNzRWRpdCBmcm9tIFwiLi9NYXNzRWRpdFwiO1xuaW1wb3J0IHR5cGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gXCIuL1F1aWNrVmFyaWFudFNlbGVjdGlvblwiO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVEZWZpbml0aW9uIH0gZnJvbSBcIi4vVGFibGVEZWZpbml0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5pbXBvcnQgQ29sdW1uTWFuYWdlbWVudCBmcm9tIFwiLi9taXhpbi9Db2x1bW5NYW5hZ2VtZW50XCI7XG5pbXBvcnQgQ29udGV4dE1lbnVIYW5kbGVyIGZyb20gXCIuL21peGluL0NvbnRleHRNZW51SGFuZGxlclwiO1xuaW1wb3J0IEVtcHR5Um93c0hhbmRsZXIgZnJvbSBcIi4vbWl4aW4vRW1wdHlSb3dzSGFuZGxlclwiO1xuaW1wb3J0IFRhYmxlQVBJU3RhdGVIYW5kbGVyIGZyb20gXCIuL21peGluL1RhYmxlQVBJU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgVGFibGVFeHBvcnQgZnJvbSBcIi4vbWl4aW4vVGFibGVFeHBvcnRcIjtcbmltcG9ydCBUYWJsZUhpZXJhcmNoeSBmcm9tIFwiLi9taXhpbi9UYWJsZUhpZXJhcmNoeVwiO1xuaW1wb3J0IFRhYmxlT3B0aW1pc3RpY0JhdGNoIGZyb20gXCIuL21peGluL1RhYmxlT3B0aW1pc3RpY0JhdGNoXCI7XG5pbXBvcnQgVGFibGVTaGFyaW5nIGZyb20gXCIuL21peGluL1RhYmxlU2hhcmluZ1wiO1xuXG5leHBvcnQgdHlwZSBFbmhhbmNlZEZFUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHJlbGF0aXZlUGF0aDogc3RyaW5nO1xuXHRkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXHRtb2RlPzogRGlzcGxheU1vZGU7XG5cdHZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG5cdHR5cGVDb25maWc/OiBUeXBlQ29uZmlnO1xuXHRleHBvcnREYXRhUG9pbnRUYXJnZXRWYWx1ZT86IHN0cmluZztcblx0YWRkaXRpb25hbExhYmVscz86IHN0cmluZ1tdO1xuXHR0eXBlPzogc3RyaW5nO1xuXHR0ZXh0QXJyYW5nZW1lbnQ/OiB7XG5cdFx0dGV4dFByb3BlcnR5OiBzdHJpbmc7XG5cdFx0bW9kZTogRGlzcGxheU1vZGU7XG5cdH07XG59O1xuXG50eXBlIERhdGFNb2RlbENvbnZlcnNpb24gPSB7XG5cdGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IFByb3BlcnR5Pjtcblx0Y29udmVydGVkdGFyZ2V0T2JqZWN0OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5Qcm9wZXJ0aWVzID0ge1xuXHRrZXk6IHN0cmluZztcblx0dmlzaWJpbGl0eTogYm9vbGVhbjtcbn1bXTtcblxuZXhwb3J0IHR5cGUgRHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4gPSB7IGNvbHVtbktleTogc3RyaW5nOyB2aXNpYmxlOiBib29sZWFuIH07XG5cbmV4cG9ydCB0eXBlIFRhYmxlU3RhdGUgPSB7XG5cdGlubmVyVGFibGU/OiB7XG5cdFx0aW5pdGlhbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRzdXBwbGVtZW50YXJ5Q29uZmlnPzogb2JqZWN0O1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0cXVpY2tGaWx0ZXI/OiB7XG5cdFx0c2VsZWN0ZWRLZXk/OiBzdHJpbmc7XG5cdH07XG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzoge1xuXHRcdHZhcmlhbnRJZD86IHN0cmluZyB8IG51bGw7XG5cdH07XG5cdHN1cHBsZW1lbnRhcnlDb25maWc/OiBvYmplY3Q7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdGVuYWJsZU9wdGltaXN0aWNCYXRjaE1vZGUoKTogdm9pZDtcblx0bWV0YVBhdGg6IHN0cmluZztcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdGVtcHR5Um93c0VuYWJsZWQ6IGJvb2xlYW47XG5cdGdldENvbnRlbnQoKTogVGFibGU7XG5cdGdldFRhYmxlRGVmaW5pdGlvbigpOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdO1xuXHRpc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuO1xuXHRjcmVhdGVBbnlDb250cm9sKE1vZGVBc0V4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCByb3dDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkKTogdHlwZW9mIEFueTtcblx0Z2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0YU1vZGVsQ29udmVyc2lvbiB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIFRhYmxlQVBJXG5cdGV4dGVuZHMgVGFibGVBUElTdGF0ZUhhbmRsZXIsXG5cdFx0VGFibGVFeHBvcnQsXG5cdFx0VGFibGVPcHRpbWlzdGljQmF0Y2gsXG5cdFx0VGFibGVIaWVyYXJjaHksXG5cdFx0RW1wdHlSb3dzSGFuZGxlcixcblx0XHRDb250ZXh0TWVudUhhbmRsZXIsXG5cdFx0VGFibGVTaGFyaW5nLFxuXHRcdENvbHVtbk1hbmFnZW1lbnQge1xuXHQvLyBhZ2dyZWdhdGlvblxuXHRnZXRDb250ZW50KCk6IE1EQ1RhYmxlO1xuXHQvLyBhc3NvY2lhdGlvblxuXHRnZXRGaWx0ZXJCYXIoKTogc3RyaW5nO1xuXHQvLyBwcm9wZXJ0eVxuXHRnZXREYXRhSW5pdGlhbGl6ZWQoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayB1c2VkIHRvIGNyZWF0ZSBhIHRhYmxlIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKiA8YnI+XG4gKiBJZiBhIFByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgaGF2ZSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICogPGJyPlxuICogSWYgYSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQcmVzZW50YXRpb25WYXJpYW50IHRoYXQgYWxzbyBoYXMgYSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpUYWJsZSBpZD1cIk15VGFibGVcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwcml2YXRlXG4gKi9cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5AbWl4aW4oVGFibGVBUElTdGF0ZUhhbmRsZXIpXG5AbWl4aW4oVGFibGVFeHBvcnQpXG5AbWl4aW4oVGFibGVPcHRpbWlzdGljQmF0Y2gpXG5AbWl4aW4oVGFibGVIaWVyYXJjaHkpXG5AbWl4aW4oRW1wdHlSb3dzSGFuZGxlcilcbkBtaXhpbihDb250ZXh0TWVudUhhbmRsZXIpXG5AbWl4aW4oVGFibGVTaGFyaW5nKVxuQG1peGluKENvbHVtbk1hbmFnZW1lbnQpXG5jbGFzcyBUYWJsZUFQSSBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVJvd0JpbmRpbmdJbnRlcmZhY2UsIElUYWJsZUJsb2NrIHtcblx0Y29udGVudCE6IFRhYmxlO1xuXG5cdG1hc3NFZGl0RGlhbG9nSGVscGVyOiBNYXNzRWRpdERpYWxvZ0hlbHBlciB8IHVuZGVmaW5lZDtcblxuXHRvcmlnaW5hbFRhYmxlRGVmaW5pdGlvbiE6IFRhYmxlVmlzdWFsaXphdGlvbjtcblxuXHRwcm9wZXJ0eUVkaXRNb2RlQ2FjaGU6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBBbnk+ID0ge307XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihtU2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8VGFibGVBUEk+ICYgeyBpZD86IHN0cmluZyB9LCAuLi5vdGhlcnM6ICRDb250cm9sU2V0dGluZ3NbXSkge1xuXHRcdHN1cGVyKG1TZXR0aW5ncywgLi4ub3RoZXJzKTtcblx0XHR0aGlzLm9yaWdpbmFsVGFibGVEZWZpbml0aW9uID0gdGhpcy50YWJsZURlZmluaXRpb247XG5cblx0XHR0aGlzLmF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuXHRcdHRoaXMuYXR0YWNoTWFuaWZlc3RFdmVudHMoKTtcblx0XHR0aGlzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLmhhc0xpc3RlbmVycyhcInJvd1ByZXNzXCIpO1xuXHR9XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLklSb3dCaW5kaW5nSW50ZXJmYWNlXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfSVJvd0JpbmRpbmdJbnRlcmZhY2UgPSB0cnVlO1xuXG5cdGdldFJvd0JpbmRpbmcocGFyYW1ldGVycz86IG9iamVjdCk6IE9EYXRhTGlzdEJpbmRpbmcge1xuXHRcdGNvbnN0IG1kY1RhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IGRhdGFNb2RlbCA9IG1kY1RhYmxlLmdldE1vZGVsKCk7XG5cdFx0cmV0dXJuIChcblx0XHRcdG1kY1RhYmxlLmdldFJvd0JpbmRpbmcoKSA/P1xuXHRcdFx0KGRhdGFNb2RlbD8uYmluZExpc3QodGhpcy5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwYXJhbWV0ZXJzKSBhcyBPRGF0YUxpc3RCaW5kaW5nKVxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpOiB2b2lkIHtcblx0XHRTdGF0ZVV0aWwuZGV0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHRcdFN0YXRlVXRpbC5hdHRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdH1cblxuXHRzdGF0ZUNoYW5nZUhhbmRsZXIob0V2ZW50OiBFdmVudDx7IGNvbnRyb2w6IENvbnRyb2wgfT4pOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRyb2xcIik7XG5cdFx0aWYgKGNvbnRyb2wuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlQVBJID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIHsgaGFuZGxlU3RhdGVDaGFuZ2U/OiBGdW5jdGlvbiB9O1xuXHRcdFx0aWYgKHRhYmxlQVBJPy5oYW5kbGVTdGF0ZUNoYW5nZSkge1xuXHRcdFx0XHR0YWJsZUFQSS5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBdHRhY2ggdGhlIGV2ZW50IGhhbmRsZXJzIGNvbWluZyBmcm9tIHRoZSBtYW5pZmVzdCBmb3IgJ3Jvd1ByZXNzJywgJ3NlbGVjdGlvbkNoYW5nZScgYW5kICdiZWZvcmVSZWJpbmRUYWJsZScuXG5cdCAqIFdlIGlnbm9yZSB0aGUgbWFuaWZlc3QgaGFuZGxlcnMgaWYgdGhlIHRhYmxlIGFscmVhZHkgaGFzIGV2ZW50IGhhbmRsZXJzIChvdmVycmlkZSkuXG5cdCAqL1xuXHRwcml2YXRlIGF0dGFjaE1hbmlmZXN0RXZlbnRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGF0dGFjaElmTm9MaXN0ZW5lcnMgPSAoZXZlbnROYW1lOiBzdHJpbmcsIG1ldGhvZENvbmZpZzogRXh0ZXJuYWxNZXRob2RDb25maWcgfCB1bmRlZmluZWQpOiB2b2lkID0+IHtcblx0XHRcdGlmICghdGhpcy5oYXNMaXN0ZW5lcnMoZXZlbnROYW1lKSAmJiBtZXRob2RDb25maWcgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgKHVpNUV2ZW50OiBVSTVFdmVudCkgPT4ge1xuXHRcdFx0XHRcdEZQTUhlbHBlci5sb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZChtZXRob2RDb25maWcubW9kdWxlTmFtZSwgbWV0aG9kQ29uZmlnLm1ldGhvZE5hbWUsIHVpNUV2ZW50LCB1aTVFdmVudCkuY2F0Y2goXG5cdFx0XHRcdFx0XHQoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGBGYWlsZWQgdG8gY2FsbCAke2V2ZW50TmFtZX0gZXZlbnQgaGFuZGxlciAke21ldGhvZENvbmZpZy5tb2R1bGVOYW1lfSAke21ldGhvZENvbmZpZy5tZXRob2ROYW1lfWAsXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3Jcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0YXR0YWNoSWZOb0xpc3RlbmVycyhcblx0XHRcdFwiYmVmb3JlUmViaW5kVGFibGVcIixcblx0XHRcdGdldEN1c3RvbUZ1bmN0aW9uSW5mbyh0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uYmVmb3JlUmViaW5kVGFibGUsIHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sKVxuXHRcdCk7XG5cdFx0YXR0YWNoSWZOb0xpc3RlbmVycyhcInJvd1ByZXNzXCIsIGdldEN1c3RvbUZ1bmN0aW9uSW5mbyh0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8ucm93UHJlc3MsIHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sKSk7XG5cdFx0YXR0YWNoSWZOb0xpc3RlbmVycyhcblx0XHRcdFwic2VsZWN0aW9uQ2hhbmdlXCIsXG5cdFx0XHRnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LnNlbGVjdGlvbkNoYW5nZSwgdGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2wpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGFuIGlsbHVzdHJhdGVkIG1lc3NhZ2UgZHVyaW5nIHRoZSBpbml0aWFsaXNhdGlvbiBvZiB0aGUgdGFibGUgQVBJLlxuXHQgKiBVc2VmdWwgaWYgd2UgaGF2ZSBhIGJ1aWxkaW5nIGJsb2NrIGluIGEgbGlzdCByZXBvcnQgd2l0aG91dCBpbml0aWFsIGxvYWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRwcml2YXRlIHNldFVwTm9EYXRhSW5mb3JtYXRpb24oKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCF0YWJsZSB8fCB0YWJsZS5nZXROb0RhdGEoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0bGV0IGRlc2NyaXB0aW9uO1xuXHRcdGxldCB0aXRsZTtcblx0XHRpZiAob3duZXIpIHtcblx0XHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKG93bmVyKTtcblx0XHRcdGlmIChyZXNvdXJjZU1vZGVsKSB7XG5cdFx0XHRcdGxldCBzdWZmaXg7XG5cdFx0XHRcdGNvbnN0IG1ldGFQYXRoID0gdGhpcy5tZXRhUGF0aDtcblx0XHRcdFx0aWYgKG1ldGFQYXRoKSB7XG5cdFx0XHRcdFx0c3VmZml4ID0gbWV0YVBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBtZXRhUGF0aC5zdWJzdHJpbmcoMSkgOiBtZXRhUGF0aDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aXRsZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfSUxMVVNUUkFURURfTUVTU0FHRV9USVRMRV9CRUZPUkVTRUFSQ0hcIik7XG5cdFx0XHRcdGRlc2NyaXB0aW9uID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIsIHVuZGVmaW5lZCwgc3VmZml4KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLnRlbXBsYXRlc1wiKSE7XG5cdFx0XHR0aXRsZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX0lMTFVTVFJBVEVEX01FU1NBR0VfVElUTEVfQkVGT1JFU0VBUkNIXCIpO1xuXHRcdFx0ZGVzY3JpcHRpb24gPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmdldE5vRGF0YU1lc3NhZ2VNb2RlKCkgPT09IFwidGV4dFwiKSB7XG5cdFx0XHR0aGlzLnNldEFnZ3JlZ2F0aW9uKFwibm9EYXRhXCIsIG5ldyBUZXh0KHsgdGV4dDogZGVzY3JpcHRpb24gfSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2UgPSBuZXcgSWxsdXN0cmF0ZWRNZXNzYWdlKHtcblx0XHRcdFx0dGl0bGU6IHRpdGxlLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG5cdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU6IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUuQmVmb3JlU2VhcmNoLFxuXHRcdFx0XHRpbGx1c3RyYXRpb25TaXplOiB0aGlzLmdldE5vRGF0YU1lc3NhZ2VNb2RlKCksXG5cdFx0XHRcdGVuYWJsZURlZmF1bHRUaXRsZUFuZERlc2NyaXB0aW9uOiBmYWxzZVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJub0RhdGFcIiwgaWxsdXN0cmF0ZWRNZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfbWFjcm9zX2NvbnRyb2xzX3NlY3Rpb25fSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciA9IHRydWU7XG5cblx0Z2V0U2VjdGlvbkNvbnRlbnRSb2xlKCk6IFwicHJvdmlkZXJcIiB8IFwiY29uc3VtZXJcIiB7XG5cdFx0cmV0dXJuIFwiY29uc3VtZXJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VuZERhdGFUb0NvbnN1bWVyIG1ldGhvZCB3aGljaCBpcyBhIHBhcnQgb2YgdGhlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3Jcblx0ICpcblx0ICogV2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgc2FwLmZlLm1hY3Jvcy5jb250cm9scy5TZWN0aW9uIGNvbnRyb2wgd2hlbiB0aGVyZSBpcyBhIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIHJlbmRlcmVkIHdpdGhpbiBhIHNlY3Rpb25cblx0ICogYWxvbmcgd2l0aCB0aGUgY29uc3VtZXJEYXRhIGkuZS4gc2VjdGlvbidzIGRhdGEgc3VjaCBhcyB0aXRsZSBhbmQgdGl0bGUgbGV2ZWwgd2hpY2ggaXMgdGhlbiBhcHBsaWVkIHRvIHRoZSB0YWJsZSB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgYWNjb3JkaW5nbHkuXG5cdCAqXG5cdCAqL1xuXG5cdHNlbmREYXRhVG9Db25zdW1lcihjb25zdW1lckRhdGE6IENvbnN1bWVyRGF0YSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXJTdHlsZShjb25zdW1lckRhdGEuaGVhZGVyU3R5bGUgYXMgVGl0bGVMZXZlbCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHRcdH1cblx0fVxuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCJcblx0XHRdLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0dGFibGVEZWZpbml0aW9uITogVGFibGVWaXN1YWxpemF0aW9uO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29udGVudElkITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVFeHBvcnQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0ZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQXV0b1wiLCBcIkZpeGVkXCJdIH0pXG5cdHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHJvd0NvdW50PzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVBhc3RlPzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0dGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkJsb2NrXCIsIFwiR3JpZExhcmdlXCIsIFwiR3JpZFNtYWxsXCJdIH0pXG5cdHBvcGluTGF5b3V0Pzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzU2VhcmNoYWJsZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlQ29uZGVuc2VkTGF5b3V0PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlcIiwgXCJBdXRvXCIsIFwiRm9yY2VNdWx0aVwiLCBcIkZvcmNlU2luZ2xlXCJdIH0pXG5cdHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0Y29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZVxuXHR9KVxuXHRhY3Rpb25zPzogKEFjdGlvbiB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKVtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtbk92ZXJyaWRlXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGNvbHVtbnM/OiAoQ29sdW1uIHwgQ29sdW1uT3ZlcnJpZGUpW107XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHkhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqL1xuXHQvL0Bhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIgfSlcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaGVhZGVyIHNob3VsZCBiZSBhIHBhcnQgb2YgdGhlIHdpZHRoIGNhbGN1bGF0aW9uLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRkYXRhSW5pdGlhbGl6ZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGJpbmRpbmdTdXNwZW5kZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdG91dERhdGVkQmluZGluZyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0aXNBbHAhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIsIGRlZmF1bHRWYWx1ZTogVGl0bGVMZXZlbC5BdXRvIH0pXG5cdGhlYWRlckxldmVsITogVGl0bGVMZXZlbDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiB9KVxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRleHBvcnRSZXF1ZXN0U2l6ZT86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZSBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIHRhYmxlIGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogIC0gU29ydDxici8+XG5cdCAqICAtIENvbHVtbjxici8+XG5cdCAqICAtIEZpbHRlcjxici8+XG5cdCAqICAtIEdyb3VwPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBUaGUgR3JvdXAgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSB0byBhbmFseXRpY2FsIHRhYmxlcyBhbmQgcmVzcG9uc2l2ZSB0YWJsZXMuPGJyLz5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgaWYgdGhlIGVtcHR5IHJvd3MgYXJlIGVuYWJsZWQuIFRoaXMgYWxsb3dzIHRvIGhhdmUgZHluYW1pYyBlbmFibGVtZW50IG9mIHRoZSBlbXB0eSByb3dzIHVzaW5nIHRoZSBzZXR0ZXIgZnVuY3Rpb24uXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRlbXB0eVJvd3NFbmFibGVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGhlYWRlciB0ZXh0IHNob3VsZCBiZSBzaG93biBvciBub3QuXG5cdCAqXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNCaW5kaW5nSW5mbzogdHJ1ZSB9KVxuXHRoZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRhYlRpdGxlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVDcmVhdGlvbk9wdGlvbnNcIiwgZGVmYXVsdENsYXNzOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB9KVxuXHRjcmVhdGlvbk1vZGU/OiBUYWJsZUNyZWF0aW9uT3B0aW9ucztcblxuXHQvKipcblx0ICogQWdncmVnYXRpb24gdG8gZm9yd2FyZCB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGNvbnRyb2wgdG8gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uSWxsdXN0cmF0ZWRNZXNzYWdlXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5tLlRleHRcIl0sXG5cdFx0Zm9yd2FyZGluZzoge1xuXHRcdFx0Z2V0dGVyOiBcImdldE1EQ1RhYmxlXCIsXG5cdFx0XHRhZ2dyZWdhdGlvbjogXCJub0RhdGFcIlxuXHRcdH1cblx0fSlcblx0bm9EYXRhPzogSWxsdXN0cmF0ZWRNZXNzYWdlO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIlxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbj86IEFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIG9mIHRoZSB0YWJsZS5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFF1aWNrVmFyaWFudFNlbGVjdGlvbjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG1hc3MgZWRpdCBvZiB0aGUgdGFibGUuXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiXG5cdH0pXG5cdG1hc3NFZGl0PzogTWFzc0VkaXQ7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0YWJsZSBpcyBhYm91dCB0byBiZSByZWJvdW5kLiBUaGlzIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICpcblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgb3IgcmVhZDogRmlsdGVycywgU29ydGVycy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byByZWFkIHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkOiBTZWxlY3RzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0YmVmb3JlUmViaW5kVGFibGU/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKi9cblx0QGV2ZW50KClcblx0cm93UHJlc3M/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZWQgYmV0d2VlbiB2aWV3IGluIGFuIEFMUC5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNhdmVkIHRoZSB2YXJpYW50LlxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGEgdmFyaWFudC5cblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgVGFibGUgbGlzdCBiaW5kaW5nIGNoYW5nZXMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRsaXN0QmluZGluZ0NoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdGludGVybmFsRGF0YVJlcXVlc3RlZCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50PjtcblxuXHRwcml2YXRlIGlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgbG9jazogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRzdG9yZWRFdmVudHM6IEV2ZW50SGFuZGxlcltdID0gW107XG5cblx0b3ZlcnJpZGVSb3dQcmVzcyA9IGZhbHNlO1xuXG5cdGdldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQ7XG5cdH1cblxuXHRzZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IHZhbHVlO1xuXHR9XG5cblx0c2V0QnVzeSh2YWx1ZTogYm9vbGVhbik6IHRoaXMge1xuXHRcdHN1cGVyLnNldEJ1c3kodmFsdWUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0QnVzeSh2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZXZlbnQgaGFuZGxlcnMgdG8gdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gZXZlbnRIYW5kbGVyc1xuXHQgKi9cblx0c2V0QXR0YWNoRXZlbnRzKGV2ZW50SGFuZGxlcnM6IEV2ZW50SGFuZGxlcltdKTogdm9pZCB7XG5cdFx0dGhpcy5zdG9yZWRFdmVudHMgPSBldmVudEhhbmRsZXJzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHJlbGV2YW50IHRhYmxlQVBJIGZvciBhIFVJNSBldmVudC5cblx0ICogQW4gZXZlbnQgY2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgdGhlIGlubmVyIGNvbnRyb2wgKHRoZSB0YWJsZSkgb3IgdGhlIE9EYXRhIGxpc3RCaW5kaW5nXG5cdCAqIFRoZSBmaXJzdCBpbml0aWF0b3IgaXMgdGhlIHVzdWFsIG9uZSBzbyBpdCdzIG1hbmFnZWQgYnkgdGhlIE1hY3JvQVBJIHdoZXJlYXNcblx0ICogdGhlIHNlY29uZCBvbmUgaXMgc3BlY2lmaWMgdG8gdGhpcyBBUEkgYW5kIGhhcyB0byBtYW5hZ2VkIGJ5IHRoZSBUYWJsZUFQSS5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgVUk1IGV2ZW50IHNvdXJjZVxuXHQgKiBAcmV0dXJucyBUaGUgVGFibGVBUEkgb3IgZmFsc2UgaWYgbm90IGZvdW5kXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRzdGF0aWMgX2dldEFQSUV4dGVuc2lvbihzb3VyY2U6IE1hbmFnZWRPYmplY3QpOiBUYWJsZUFQSSB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHRhYmxlQVBJOiBUYWJsZUFQSSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoc291cmNlLmlzQTxPRGF0YUxpc3RCaW5kaW5nPihcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHR0YWJsZUFQSSA9ICgodGhpcyBhcyB1bmtub3duIGFzIFhNTEV2ZW50SG9sZGVyKS5pbnN0YW5jZU1hcD8uZ2V0KHRoaXMpIGFzIFRhYmxlQVBJW10pPy5maW5kKFxuXHRcdFx0XHQoYXBpKSA9PiBhcGkuY29udGVudD8uZ2V0Um93QmluZGluZz8uKCkgPT09IHNvdXJjZSB8fCBhcGkuY29udGVudD8uZ2V0QmluZGluZyhcIml0ZW1zXCIpID09PSBzb3VyY2Vcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZUFQSTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIHRhYmxlIHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0Ly8gV2hlbiBhIGNvbnRleHQgbWVudSBpdGVtIGhhcyBiZWVuIHByZXNzZWQsIHRoZSBzZWxlY3RlZENvbnRleHRzIGNvcnJlc3BvbmQgdG8gdGhlIGl0ZW1zIG9uIHdoaWNoXG5cdFx0Ly8gdGhlIGNvcnJlc3BvbmRpbmcgYWN0aW9uIHNoYWxsIGJlIGFwcGxpZWQuXG5cdFx0cmV0dXJuIHRoaXMuaXNDb250ZXh0TWVudUFjdGl2ZSgpXG5cdFx0XHQ/IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9zZWxlY3RlZENvbnRleHRzXCIpID8/IFtdXG5cdFx0XHQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG1lc3NhZ2UgdG8gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBUaGUgbWVzc2FnZSBhcHBsaWVzIHRvIHRoZSB3aG9sZSB0YWJsZSBhbmQgbm90IHRvIGFuIGluZGl2aWR1YWwgdGFibGUgcm93LlxuXHQgKiBAcGFyYW0gW3BhcmFtZXRlcnNdIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgbWVzc2FnZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy50eXBlIE1lc3NhZ2UgdHlwZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5tZXNzYWdlIE1lc3NhZ2UgdGV4dFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5kZXNjcmlwdGlvbiBNZXNzYWdlIGRlc2NyaXB0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnBlcnNpc3RlbnQgVHJ1ZSBpZiB0aGUgbWVzc2FnZSBpcyBwZXJzaXN0ZW50XG5cdCAqIEByZXR1cm5zIFByb21pc2U8c3RyaW5nPiBUaGUgSUQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgYWRkTWVzc2FnZShwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0aWYgKCF0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpICYmICF0YWJsZS5nZXRSb3dCaW5kaW5nKCkpIHtcblx0XHRcdGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrQ29udGV4dENoYW5nZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0XHRpZiAodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0XHRcdFx0dGFibGUuZGV0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgY2hlY2tDb250ZXh0Q2hhbmdlKTtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRhYmxlLmF0dGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGNoZWNrQ29udGV4dENoYW5nZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgcm93QmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCByZXNvbHZlZFBhdGggPSByb3dCaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIGFzIHN0cmluZztcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVNZXNzYWdlKHRhYmxlLCByZXNvbHZlZFBhdGgsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVNZXNzYWdlKFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHtcblx0XHRcdHRhcmdldDogcGF0aCxcblx0XHRcdHR5cGU6IHBhcmFtZXRlcnMudHlwZSxcblx0XHRcdG1lc3NhZ2U6IHBhcmFtZXRlcnMubWVzc2FnZSxcblx0XHRcdHByb2Nlc3NvcjogdGFibGUuZ2V0TW9kZWwoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0cGVyc2lzdGVudDogcGFyYW1ldGVycy5wZXJzaXN0ZW50XG5cdFx0fSk7XG5cdFx0dGhpcy5fZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyhtZXNzYWdlKTtcblx0XHRyZXR1cm4gbWVzc2FnZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgdGFibGUgc2hvdWxkIHJlcXVlc3QgcmVjb21tZW5kYXRpb25zIGZ1bmN0aW9uLlxuXHQgKiBUaGUgdGFibGUgaW4gdmlldyBzaG91bGQgb25seSByZXF1ZXN0IHJlY29tbWVuZGF0aW9ucyBpZlxuXHQgKiAxLiBUaGUgUGFnZSBpcyBpbiBFZGl0IG1vZGVcblx0ICogMi4gVGFibGUgaXMgbm90IHJlYWQgb25seVxuXHQgKiAzLiBJdCBoYXMgYW5ub3RhdGlvbiBmb3IgQ29tbW9uLlJlY29tbWVuZGVkVmFsdWVzRnVuY3Rpb25cblx0ICogNC4gVmlldyBpcyBub3QgTGlzdFJlcG9ydCwgZm9yIE9QL1N1Yk9QIGFuZCBmb3J3YXJkIHZpZXdzIHJlY29tbWVuZGF0aW9ucyBzaG91bGQgYmUgcmVxdWVzdGVkLlxuXHQgKiBAcGFyYW0gX29FdmVudFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9ucyBuZWVkcyB0byBiZSByZXF1ZXN0ZWRcblx0ICovXG5cdGNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KF9vRXZlbnQ6IFVJNUV2ZW50KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaXNUYWJsZVJlYWRPbmx5ID0gdGhpcy5nZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIpO1xuXHRcdGNvbnN0IGlzRWRpdGFibGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRoaXMpO1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdC8vIHJlcXVlc3QgZm9yIGFjdGlvbiBvbmx5IGlmIHdlIGFyZSBpbiBPUC9TdWJPUCBhbmQgaW4gRWRpdCBtb2RlLCBhbHNvIHRhYmxlIGlzIG5vdCByZWFkT25seVxuXHRcdGlmICghaXNUYWJsZVJlYWRPbmx5ICYmIGlzRWRpdGFibGUgJiYgdmlld0RhdGEuY29udmVydGVyVHlwZSAhPT0gXCJMaXN0UmVwb3J0XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZShpZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbXNnTWFuYWdlciA9IHRoaXMuX2dldE1lc3NhZ2VNYW5hZ2VyKCk7XG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBtc2dNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtZXNzYWdlcy5maW5kKChlOiBNZXNzYWdlKSA9PiBlLmdldElkKCkgPT09IGlkKTtcblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRtc2dNYW5hZ2VyLnJlbW92ZU1lc3NhZ2VzKHJlc3VsdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3RzIGEgcmVmcmVzaCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2goKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGVSb3dCaW5kaW5nID0gdGhpcy5jb250ZW50LmdldFJvd0JpbmRpbmcoKTtcblx0XHRpZiAodGFibGVSb3dCaW5kaW5nICYmICh0YWJsZVJvd0JpbmRpbmcuaXNSZWxhdGl2ZSgpIHx8IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSkge1xuXHRcdFx0Ly8gRm9yIHRyZWUgdGFibGVzLCB0aGUgcmVmcmVzaCBpcyBhbHdheXMgZG9uZSB1c2luZyBzaWRlIGVmZmVjdHMgdG8gcHJlc2VydmUgZXhwYW5zaW9uIHN0YXRlc1xuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuY29udGVudCk7XG5cdFx0XHRjb25zdCBoZWFkZXJDb250ZXh0ID0gdGFibGVSb3dCaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblxuXHRcdFx0aWYgKGhlYWRlckNvbnRleHQpIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdFx0LnJlcXVlc3RTaWRlRWZmZWN0cyhbeyAkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIiB9XSwgaGVhZGVyQ29udGV4dCwgdGFibGVSb3dCaW5kaW5nLmdldEdyb3VwSWQoKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhYmxlUm93QmluZGluZz8ucmVmcmVzaCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldFF1aWNrRmlsdGVyKCk6IFF1aWNrRmlsdGVyU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFF1aWNrRmlsdGVyKCkgYXMgUXVpY2tGaWx0ZXJTZWxlY3RvciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgYXBwbGllZCB0byB0aGUgdGFibGVcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcz4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IHRhYmxlU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRhYmxlKTtcblxuXHRcdFx0Ly9XZSByZW1vdmUgXCJQcm9wZXJ0eTo6XCIgYXMgaXQgaXMgcHJlZml4ZWQgdG8gdGhvc2UgY29sdW1ucyB0aGF0IGhhdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eUluZm9zLlxuXHRcdFx0Ly9UaGUgUHJlc2VudGF0aW9uIFZhcmlhbnQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyAoaXQgaXMgb25seSByZXF1aXJlZCBieSB0aGUgVGFibGUgYW5kIEFwcFN0YXRlKS5cblx0XHRcdGNvbnN0IHNvcnRPcmRlciA9IHRhYmxlU3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRQcm9wZXJ0eTogc29ydGVyLm5hbWUucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIiksXG5cdFx0XHRcdFx0RGVzY2VuZGluZzogc29ydGVyLmRlc2NlbmRpbmcgPz8gZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZ3JvdXBMZXZlbHMgPSB0YWJsZVN0YXRlLmdyb3VwTGV2ZWxzPy5tYXAoKGdyb3VwOiBHcm91cExldmVscykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZ3JvdXAubmFtZS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgdGFibGVWaXogPSB7XG5cdFx0XHRcdENvbnRlbnQ6IHRhYmxlU3RhdGUuaXRlbXM/Lm1hcCgoaXRlbTogSXRlbXMpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0VmFsdWU6IGl0ZW0ubmFtZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRUeXBlOiBcIkxpbmVJdGVtXCJcblx0XHRcdH07XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHsgYWdncmVnYXRlZD86IGJvb2xlYW4gfT4gPSB7fTtcblx0XHRcdGxldCBoYXNBZ2dyZWdhdGlvbnMgPSBmYWxzZTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRhYmxlU3RhdGUuYWdncmVnYXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0tleSA9IGtleS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKTtcblx0XHRcdFx0YWdncmVnYXRpb25zW25ld0tleV0gPSB0YWJsZVN0YXRlLmFnZ3JlZ2F0aW9uc1trZXldO1xuXHRcdFx0XHRoYXNBZ2dyZWdhdGlvbnMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gKHRhYmxlLmdldFBheWxvYWQoKSBhcyB7IGluaXRpYWxFeHBhbnNpb25MZXZlbD86IG51bWJlcjsgaGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nIH0pXG5cdFx0XHRcdD8uaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0Y29uc3QgdGFibGVQViA9IG5ldyBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MoKTtcblx0XHRcdHRhYmxlUFYuc2V0VGFibGVWaXN1YWxpemF0aW9uKHRhYmxlVml6KTtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXM6IFB2UHJvcGVydGllcyA9IHtcblx0XHRcdFx0R3JvdXBCeTogZ3JvdXBMZXZlbHMgfHwgW10sXG5cdFx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyIHx8IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGhhc0FnZ3JlZ2F0aW9ucykge1xuXHRcdFx0XHRwcm9wZXJ0aWVzLkFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9ucztcblx0XHRcdH1cblx0XHRcdGlmIChpbml0aWFsRXhwYW5zaW9uTGV2ZWwpIHtcblx0XHRcdFx0cHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSBpbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZVBWLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cdFx0XHRyZXR1cm4gdGFibGVQVjtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBhIG5ldyBwcmVzZW50YXRpb24gdmFyaWFudCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZVBWIFRoZSBuZXcgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyB0byBiZSBzZXQgb24gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRQcmVzZW50YXRpb25WYXJpYW50KHRhYmxlUFY6IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblxuXHRcdFx0Y29uc3QgY3VycmVudFN0YXRlUFYgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSB0aGlzLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb05hbWVzID0gcHJvcGVydHlJbmZvcy5tYXAoKHByb3BJbmZvKSA9PiBwcm9wSW5mby5rZXkpO1xuXHRcdFx0Y29uc3QgbmV3VGFibGVTdGF0ZSA9IGNvbnZlcnRQVlRvU3RhdGUodGFibGVQViwgY3VycmVudFN0YXRlUFYsIHByb3BlcnR5SW5mb05hbWVzKTtcblx0XHRcdGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IHRhYmxlUFYuZ2V0UHJvcGVydGllcygpO1xuXHRcdFx0aWYgKHRhYmxlUHJvcGVydGllcz8uaW5pdGlhbEV4cGFuc2lvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgdGFibGVQYXlsb2FkID0gdGFibGUuZ2V0UGF5bG9hZCgpIGFzIHsgaW5pdGlhbEV4cGFuc2lvbkxldmVsPzogbnVtYmVyOyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfTtcblx0XHRcdFx0dGFibGVQYXlsb2FkLmluaXRpYWxFeHBhbnNpb25MZXZlbCA9IHRhYmxlUHJvcGVydGllcy5pbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKHRhYmxlLCBuZXdUYWJsZVN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBUYWJsZSBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gc2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBhcHBsaWVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgS2V5IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFyaWFudC4gSW4gY2FzZSB0aGUgbW9kZWwgaXMgbm90IHlldCBzZXQsIGBudWxsYCB3aWxsIGJlIHJldHVybmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRDdXJyZW50VmFyaWFudEtleSgpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKT8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgYSB2YXJpYW50IG1hbmFnZW1lbnQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gSWYgdGhlIHBhc3NlZCBrZXkgZG9lc24ndCBpZGVudGlmeSBhIHZhcmlhbnQsIGl0IHdpbGwgYmUgaWdub3JlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk7XG5cdFx0dmFyaWFudE1hbmFnZW1lbnQuc2V0Q3VycmVudFZhcmlhbnRLZXkoa2V5KTtcblx0fVxuXG5cdF9nZXRNZXNzYWdlTWFuYWdlcigpOiBNZXNzYWdpbmcge1xuXHRcdHJldHVybiBNZXNzYWdpbmc7XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdF9nZXRSb3dCaW5kaW5nKCk6IE9EYXRhTGlzdEJpbmRpbmcge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBvVGFibGUuZ2V0Um93QmluZGluZygpO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q291bnRzKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIFRhYmxlVXRpbHMuZ2V0TGlzdEJpbmRpbmdGb3JDb3VudChvVGFibGUsIG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLCB7XG5cdFx0XHRiYXRjaEdyb3VwSWQ6ICF0aGlzLmdldFByb3BlcnR5KFwiYmluZGluZ1N1c3BlbmRlZFwiKSA/IG9UYWJsZS5kYXRhKFwiYmF0Y2hHcm91cElkXCIpIDogXCIkYXV0b1wiLFxuXHRcdFx0YWRkaXRpb25hbEZpbHRlcnM6IFRhYmxlVXRpbHMuZ2V0SGlkZGVuRmlsdGVycyhvVGFibGUpXG5cdFx0fSlcblx0XHRcdC50aGVuKChpVmFsdWU6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVGFibGVVdGlscy5nZXRDb3VudEZvcm1hdHRlZChpVmFsdWUpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBcIjBcIjtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNvbnRleHQgY2hhbmdlIG9uIHRoZSB0YWJsZS5cblx0ICogQW4gZXZlbnQgaXMgZmlyZWQgdG8gcHJvcGFnYXRlIHRoZSBPZGF0YUxpc3RCaW5kaW5nIGV2ZW50IGFuZCB0aGUgZW5hYmxlbWVudFxuXHQgKiBvZiB0aGUgY3JlYXRpb24gcm93IGlzIGNhbGN1bGF0ZWQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgVUk1IGV2ZW50XG5cdCAqL1xuXHRvbkxpc3RCaW5kaW5nQ2hhbmdlKHVpNUV2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwibGlzdEJpbmRpbmdDaGFuZ2VcIiwgdWk1RXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHR0aGlzLnNldEZhc3RDcmVhdGlvblJvd0VuYWJsZW1lbnQoKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnJlZnJlc2hTZWxlY3RlZENvdW50KCk7XG5cdFx0VGFibGVSdW50aW1lLnNldENvbnRleHRzQXN5bmModGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkZpZWxkTGl2ZUNoYW5nZSh1aTVFdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRmllbGRMaXZlQ2hhbmdlKHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb24gYSBxdWlja0ZpbHRlclxuXHQgKiBUaGUgdGFibGUgaXMgcmVib3VuZCBpZiB0aGUgRmlsdGVyQmFyIGlzIG5vdCBzdXNwZW5kZWQgYW5kIHVwZGF0ZSB0aGUgQXBwU3RhdGUuXG5cdCAqXG5cdCAqL1xuXHRvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdC8vIFJlYmluZCB0aGUgdGFibGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIHF1aWNrIGZpbHRlciBrZXkuXG5cdFx0Ly8gV2UgZG9uJ3QgcmViaW5kIHRoZSB0YWJsZSBpZiB0aGUgZmlsdGVyQmFyIGZvciB0aGUgdGFibGUgaXMgc3VzcGVuZGVkXG5cdFx0Ly8gYXMgcmViaW5kIHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBmaWx0ZXJCYXIgaXMgcmVzdW1lZFxuXHRcdGNvbnN0IGZpbHRlckJhcklEID0gdGFibGUuZ2V0RmlsdGVyKCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gKGZpbHRlckJhcklEICYmIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsdGVyQmFySUQpKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFmaWx0ZXJCYXI/LmdldFN1c3BlbmRTZWxlY3Rpb24/LigpKSB7XG5cdFx0XHR0YWJsZS5yZWJpbmQoKTtcblx0XHR9XG5cdFx0KENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHRvblRhYmxlTmF2aWdhdGUob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBvQ29udGV4dDogQ29udGV4dCwgbVBhcmFtZXRlcnM6IG9iamVjdCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUob0NvbnRleHQpKSB7XG5cdFx0XHRpZiAodGhpcy5mdWxsU2NyZWVuRGlhbG9nKSB7XG5cdFx0XHRcdC8vIEV4aXQgZnVsbHNjcmVlbiBtb2RlIGJlZm9yZSBuYXZpZ2F0aW9uXG5cdFx0XHRcdHRoaXMuZnVsbFNjcmVlbkRpYWxvZy5jbG9zZSgpOyAvLyBUaGUgZnVsbHNjcmVlbmRpYWxvZyB3aWxsIHNldCB0aGlzLmZ1bGxTY3JlZW5EaWFsb2cgdG8gdW5kZWZpbmVkIHdoZW4gY2xvc2luZ1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBtUGFyYW1ldGVycywgeyByZWFzb246IE5hdmlnYXRpb25SZWFzb24uUm93UHJlc3MgfSk7XG5cdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQob0NvbnRleHQsIG5hdmlnYXRpb25QYXJhbWV0ZXJzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgcm93IHByZXNzIGV2ZW50IG9mIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHByZXNzRXZlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPlxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uVGFibGVSb3dQcmVzcyhwcmVzc0V2ZW50OiBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB2b2lkPiB7XG5cdFx0Y29uc3Qgcm93TmF2aWdhdGlvbkluZm8gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uYW5ub3RhdGlvbi5yb3c/Lm5hdmlnYXRpb25JbmZvO1xuXHRcdGlmICh0aGlzLm92ZXJyaWRlUm93UHJlc3MgPT09IHRydWUpIHtcblx0XHRcdC8vIFRoZXJlJ3MgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJvd1ByZXNzIGV2ZW50IC0tPiB3ZSBqdXN0IGZpcmUgdGhlIGV2ZW50IGFuZCBkbyBub3QgbmF2aWdhdGVcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicm93UHJlc3NcIiwgcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdH0gZWxzZSBpZiAocm93TmF2aWdhdGlvbkluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0aWYgKHJvd05hdmlnYXRpb25JbmZvLnR5cGUgPT09IFwiT3V0Ym91bmRcIikge1xuXHRcdFx0XHQvLyBPdXRib3VuZCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiB0aGlzLmF2b2lkUGFyYWxsZWxDYWxscyhcblx0XHRcdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHRcdFx0Y29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZChcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlcixcblx0XHRcdFx0XHRcdFx0cm93TmF2aWdhdGlvbkluZm8ubmF2aWdhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW50ZXJuYWwgbmF2aWdhdGlvblxuXHRcdFx0XHRjb25zdCBlZGl0YWJsZSA9IHJvd05hdmlnYXRpb25JbmZvLmNoZWNrRWRpdGFibGUgPyAhYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRjYWxsRXh0ZW5zaW9uOiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldFBhdGg6IHJvd05hdmlnYXRpb25JbmZvLnRhcmdldFBhdGgsXG5cdFx0XHRcdFx0ZWRpdGFibGUsXG5cdFx0XHRcdFx0cmVjcmVhdGVDb250ZXh0OiByb3dOYXZpZ2F0aW9uSW5mby5yZWNyZWF0ZUNvbnRleHRcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRyZXR1cm4gdGhpcy5vblRhYmxlTmF2aWdhdGUoY29udHJvbGxlciwgYmluZGluZ0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaXJlcyB0aGUgY29ycmVzcG9uZGluZyBldmVudCB3aGVuIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGlzIHByZXNzZWQgKGluIEFMUCkuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VnbWVudGVkQnV0dG9uUHJlc3NcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIG5ldyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2VsZWN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQuLi5vRXZlbnQuZ2V0UGFyYW1ldGVycygpLFxuXHRcdFx0b3JpZ2luYWxTb3VyY2U6IG9FdmVudC5nZXRTb3VyY2UoKVxuXHRcdH07XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2VsZWN0ZWRcIiwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhcmlhbnRTYXZlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2F2ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHJvdyBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Sb3dQcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0aXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0Ly8gcHJldmVudCBuYXZpZ2F0aW9uIHRvIGFuIGVtcHR5IHJvd1xuXHRcdGNvbnN0IGVtcHR5Um93ID0gY29udGV4dC5pc0luYWN0aXZlKCkgPT0gdHJ1ZSAmJiBjb250ZXh0LmlzVHJhbnNpZW50KCkgPT09IHRydWU7XG5cdFx0Ly8gT3IgaW4gdGhlIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCB0YWJsZSwgaWYgd2UncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGEgY29udGV4dCBjb3JyZXNwb25kaW5nIHRvIGEgdmlzdWFsIGdyb3VwIG9yIGdyYW5kIHRvdGFsXG5cdFx0Ly8gLS0+IENhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0Y29uc3QgYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQgPVxuXHRcdFx0dGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5lbmFibGVBbmFseXRpY3MgPT09IHRydWUgJiZcblx0XHRcdGNvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHRcIikgJiZcblx0XHRcdHR5cGVvZiBjb250ZXh0LmdldFByb3BlcnR5KFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpID09PSBcImJvb2xlYW5cIjtcblx0XHRyZXR1cm4gIShlbXB0eVJvdyB8fCBhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhcblx0XHRvRXZlbnQ6IFVJNUV2ZW50LFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB8IGJvb2xlYW4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRyZXR1cm4gdGhpcy5fb25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyhjb250cm9sbGVyLCBjb250ZXh0cywgbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbk9wZW5Jbk5ld1RhYlByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRwYXJhbWV0ZXJzOiBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMsXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB8IGJvb2xlYW4ge1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHRpZiAodGhhdC5pc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQpKSB7XG5cdFx0XHRcdFx0cGFyYW1ldGVycy5lZGl0YWJsZSA9ICFjb250ZXh0LmdldFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQoY29udGV4dCwgcGFyYW1ldGVycyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKFxuXHRcdFx0XHRMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcIlRfVEFCTEVfTkFWSUdBVElPTl9UT09fTUFOWV9JVEVNU19TRUxFQ1RFRFwiLCBbXG5cdFx0XHRcdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQoZXZ0OiBFdmVudDx7IGVycm9yOiB7IHN0YXR1cz86IG51bWJlcjsgY2F1c2U/OiB7IHN0YXR1cz86IG51bWJlciB9OyBtZXNzYWdlPzogc3RyaW5nIH0gfT4pOiB2b2lkIHtcblx0XHQvLyBCQ1A6IDIzODAwMjMwOTBcblx0XHQvLyBXZSBoYW5kbGUgZW5hYmxlbWVudCBvZiBEZWxldGUgZm9yIHRoZSB0YWJsZSBoZXJlLlxuXHRcdC8vIEVkaXRGbG93LnRzI2hhbmRsZVBhdGNoU2VudCBpcyBoYW5kbGluZyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRDb250ZXh0cyA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpO1xuXHRcdERlbGV0ZUhlbHBlci51cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyhpbnRlcm5hbE1vZGVsQ29udGV4dCwgc2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0aWYgKGV2dC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hTZW50KGV2dDogT0RhdGFDb250ZXh0QmluZGluZyRQYXRjaFNlbnRFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgZWRpdEZsb3dFeHRlbnNpb24gPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdGNvbnRyb2xsZXIubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uaGFuZGxlUGF0Y2hTZW50KSB7XG5cdFx0XHRlZGl0Rmxvd0V4dGVuc2lvbi5oYW5kbGVQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbGxlci5pbmxpbmVFZGl0Rmxvdy5pc0lubGluZUVkaXRQb3NzaWJsZSgpKSB7XG5cdFx0XHRjb250cm9sbGVyLmlubGluZUVkaXRGbG93LmhhbmRsZUlubGluZUVkaXRQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlY2VpdmVkKG9FdmVudDogVUk1RXZlbnQ8eyBlcnJvcjogc3RyaW5nIH0sIE9EYXRhTGlzdEJpbmRpbmc+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gdGhpcy5jaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudChvRXZlbnQpO1xuXHRcdGlmIChpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy5nZXRJZGVudGlmaWVyQ29sdW1uKGlzUmVjb21tZW5kYXRpb25SZWxldmFudCkgYXMgc3RyaW5nW107XG5cdFx0XHRjb25zdCByZXNwb25zZUNvbnRleHRzQXJyYXkgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0QWxsQ3VycmVudENvbnRleHRzKCk7XG5cdFx0XHRjb25zdCBuZXdDb250ZXh0czogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSA9IFtdO1xuXHRcdFx0cmVzcG9uc2VDb250ZXh0c0FycmF5LmZvckVhY2goKGNvbnRleHQpID0+IHtcblx0XHRcdFx0bmV3Q29udGV4dHMucHVzaCh7XG5cdFx0XHRcdFx0Y29udGV4dCxcblx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllclxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zKG5ld0NvbnRleHRzLCB0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdFx0dGhpcy5zZXREb3dubG9hZFVybCgpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlcXVlc3RlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCB0cnVlKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCBvRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHRpZiAodGhpcy5nZXRRdWlja0ZpbHRlcigpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sLmZpbHRlcnM/LnF1aWNrRmlsdGVycz8uc2hvd0NvdW50cyA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5zZXRDb3VudHNBc0xvYWRpbmcoKTtcblx0XHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8ucmVmcmVzaFVuU2VsZWN0ZWRDb3VudHMoKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgUGFzdGUgb3BlcmF0aW9uLlxuXHQgKiBAcGFyYW0gZXZ0IFRoZSBldmVudFxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uUGFzdGUoZXZ0OiBQYXN0ZVByb3ZpZGVyJFBhc3RlRXZlbnQsIGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCByYXdQYXN0ZWREYXRhID0gZXZ0LmdldFBhcmFtZXRlcihcImRhdGFcIiksXG5cdFx0XHRzb3VyY2UgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IHRhYmxlOiBUYWJsZTtcblx0XHRpZiAoIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHQvLyB0YWJsZSB0b29sYmFyXG5cdFx0XHR0YWJsZSA9IChzb3VyY2UuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSA/IHNvdXJjZSA6IChzb3VyY2UgYXMgQ29udHJvbCkuZ2V0UGFyZW50KCkpIGFzIFRhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjb250ZXh0IG1lbnVcblx0XHRcdGNvbnN0IG1lbnUgPSAoc291cmNlLmlzQShcInNhcC5tLk1lbnVcIikgPyBzb3VyY2UgOiAoc291cmNlIGFzIENvbnRyb2wpLmdldFBhcmVudCgpKSBhcyBNZW51O1xuXHRcdFx0dGFibGUgPSBtZW51LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBUYWJsZTtcblx0XHR9XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0ID0gdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdC8vIElmIHBhc3RlIGlzIGRpc2FibGVkIG9yIGlmIHdlJ3JlIG5vdCBpbiBlZGl0IG1vZGUgaW4gYW4gT2JqZWN0UGFnZSwgd2UgY2FuJ3QgcGFzdGUgYW55dGhpbmdcblx0XHRpZiAoIXRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlUGFzdGUgfHwgKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5pc1JlbGF0aXZlKCkgJiYgIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGhpcykpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly9UaGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBpbiBjYXNlIG9mIFRyZWVUYWJsZVxuXHRcdGNvbnN0IGFjdGlvbiA9IGludGVybmFsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNyY0NvbnRleHRzID0gaW50ZXJuYWxDb250ZXh0LmdldFByb3BlcnR5KFwibm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNcIik7XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSB7XG5cdFx0XHRsZXQgc3JjQ29udGV4dCA9IHNyY0NvbnRleHRzWzBdO1xuXHRcdFx0Y29uc3QgbmV3UGFyZW50Q29udGV4dCA9ICFmb3JDb250ZXh0TWVudVxuXHRcdFx0XHQ/ICh0YWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKClbMF0gYXMgQ29udGV4dClcblx0XHRcdFx0OiAoaW50ZXJuYWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIilbMF0gYXMgQ29udGV4dCk7XG5cdFx0XHQvLyBJZiB0aGUgdGFyZ2V0Q29udGV4dCBoYXMgYmVlbiBkaXNhc3NvY2lhdGVkIGZyb20gdGhlIHRhYmxlIGR1ZSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIGFjdGlvbnMsIHdlIGF0dGVtcHQgdG8gcmV0cmlldmUgaXQgdXNpbmcgaXRzIHBhdGguXG5cdFx0XHRzcmNDb250ZXh0ID0gdGFibGVcblx0XHRcdFx0LmdldFJvd0JpbmRpbmcoKVxuXHRcdFx0XHQuZ2V0QWxsQ3VycmVudENvbnRleHRzKClcblx0XHRcdFx0LmZpbmQoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0UGF0aCgpID09PSBzcmNDb250ZXh0Py5nZXRQYXRoKCkpO1xuXG5cdFx0XHRpZiAoIXNyY0NvbnRleHQpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwgYmVjYXVzZSB0aGUgcmVsZXZhbnQgY29udGV4dCBpcyBubyBsb25nZXIgYXZhaWxhYmxlYCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRhYmxlLnNldEJ1c3kodHJ1ZSk7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHRcdFx0XHRzcmNDb250ZXh0Lm1vdmUoeyBwYXJlbnQ6IG5ld1BhcmVudENvbnRleHQgPz8gbnVsbCwgY29weTogYWN0aW9uID09PSBcIkNvcHlcIiB9KSxcblx0XHRcdFx0XHRhY3Rpb24gPT09IFwiQ29weVwiXG5cdFx0XHRcdFx0XHQ/IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzRm9yQ29weUFjdGlvbihzcmNDb250ZXh0KVxuXHRcdFx0XHRcdFx0OiB0aGlzLnJlcXVlc3RTaWRlRWZmZWN0c0ZvckNoYW5nZU5leHRTaWJsaW5nQWN0aW9uKHNyY0NvbnRleHQpXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVEFCTEVEUk9QX0ZBSUxFRFwiLCBbXCJcIl0pKTtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwuIGAgKyAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gXCJcIik7XG5cdFx0XHR9XG5cdFx0XHR0YWJsZS5zZXRCdXN5KGZhbHNlKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgbm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNgLCBbXSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYGNvbnRleHRtZW51L25vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uYCwgdW5kZWZpbmVkKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGZvciB0YWJsZXMgZXhjZXB0ZWQgVHJlZVRhYmxlXG5cdFx0aWYgKHRhYmxlLmdldEVuYWJsZVBhc3RlKCkgPT09IHRydWUgJiYgIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHRjb25zdCBjZWxsU2VsZWN0aW9uID0gdGFibGUuZ2V0Q2VsbFNlbGVjdG9yKCk/LmdldFNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKGNlbGxTZWxlY3Rpb24/LmNvbHVtbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZVJhbmdlRGF0YShyYXdQYXN0ZWREYXRhID8/IFtdLCBjZWxsU2VsZWN0aW9uLCB0YWJsZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZURhdGEocmF3UGFzdGVkRGF0YSA/PyBbXSwgdGFibGUsIGNvbnRyb2xsZXIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX09QX0NPTlRST0xMRVJfU0FQRkVfUEFTVEVfRElTQUJMRURfTUVTU0FHRVwiKSwge1xuXHRcdFx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3V0IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkN1dChldnQ6IFVJNUV2ZW50PHt9LCBVSTVFbGVtZW50PiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuX29uQ29weUN1dChldnQsIGZvckNvbnRleHRNZW51LCBcIkN1dFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDb3B5IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvcHkoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDb3B5XCIpO1xuXHR9XG5cblx0Ly8gVGhpcyBldmVudCB3aWxsIGFsbG93IHVzIHRvIGludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpcyB0cmlnZ2VyZWQgdG8gY292ZXIgc3BlY2lmaWMgY2FzZXNcblx0Ly8gdGhhdCBjb3VsZG4ndCBiZSBhZGRyZXNzZWQgb24gdGhlIHByb3BlcnR5SW5mb3MgZm9yIGVhY2ggY29sdW1uLlxuXHQvLyBlLmcuIEZpeGVkIFRhcmdldCBWYWx1ZSBmb3IgdGhlIGRhdGFwb2ludHNcblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uQmVmb3JlRXhwb3J0KGV4cG9ydEV2ZW50OiBUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgTURDIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gdG8gZGlzcGxheSBtZXNzYWdlU3RyaXAgb24gYSB0YWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICogQHJldHVybnMgV2hldGhlciB0byByZW5kZXIgdGhlIG1lc3NhZ2VTdHJpcCB2aXNpYmxlXG5cdCAqL1xuXHRkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIobWVzc2FnZTogTWVzc2FnZSwgY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1kY1RhYmxlID0gY29udHJvbCBhcyBNRENUYWJsZTtcblx0XHRjb25zdCBzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPSBtZGNUYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgc1RhYmxlUm93QmluZGluZyA9IChzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPyBgJHtzVGFibGVDb250ZXh0QmluZGluZ1BhdGh9L2AgOiBcIlwiKSArIG1kY1RhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIHNUYWJsZVJvd0JpbmRpbmcgPT09IG1lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZXZlbnQgaGFuZGxlcyB0aGUgRGF0YVN0YXRlIG9mIHRoZSBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIGZyb20gTURDIG9uIGEgdGFibGUuXG5cdCAqIEl0J3MgZmlyZWQgd2hlbiBuZXcgZXJyb3IgbWVzc2FnZXMgYXJlIHNlbnQgZnJvbSB0aGUgYmFja2VuZCB0byB1cGRhdGUgcm93IGhpZ2hsaWdodGluZy5cblx0ICogQHBhcmFtIGV2dCBFdmVudCBvYmplY3Rcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRhdGFTdGF0ZUNoYW5nZShldnQ6IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRhdGFTdGF0ZUluZGljYXRvciA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gZXZ0LmdldFBhcmFtZXRlcihcImZpbHRlcmVkTWVzc2FnZXNcIikgYXMgTWVzc2FnZVtdO1xuXHRcdGlmIChmaWx0ZXJlZE1lc3NhZ2VzKSB7XG5cdFx0XHRjb25zdCBoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzID0gZmlsdGVyZWRNZXNzYWdlc1xuXHRcdFx0XHQubWFwKChtc2cpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHtcblx0XHRcdFx0XHRcdHRhYmxlSWQ/OiBzdHJpbmc7XG5cdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuO1xuXHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbj86IHN0cmluZztcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHJldHVybiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSA9PT0gdHJ1ZSAmJiB0ZWNobmljYWxEZXRhaWxzLm1pc3NpbmdDb2x1bW47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGhpZGRlblByb3BlcnR5KSA9PiAhIWhpZGRlblByb3BlcnR5KTtcblx0XHRcdGlmIChoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlU3RyaXBFcnJvciA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdGhpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiXG5cdFx0XHRcdFx0XHQ6IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTl9QTFVSQUxcIixcblx0XHRcdFx0XHRbaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5qb2luKFwiLCBcIildXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRhdGFTdGF0ZUluZGljYXRvci5zaG93TWVzc2FnZShtZXNzYWdlU3RyaXBFcnJvciwgXCJFcnJvclwiKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiZmlsdGVyZWRNZXNzYWdlc1wiLCBmaWx0ZXJlZE1lc3NhZ2VzLCBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRyZXN1bWVCaW5kaW5nKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIGZhbHNlKTtcblx0XHRpZiAoKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiAhdGhpcy5nZXREYXRhSW5pdGlhbGl6ZWQoKSkgfHwgdGhpcy5nZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiKSkge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8ucmViaW5kKCk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb1RhYmxlKTtcblx0fVxuXG5cdHN1c3BlbmRCaW5kaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIHRydWUpO1xuXHR9XG5cblx0aW52YWxpZGF0ZUNvbnRlbnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCBmYWxzZSk7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZW5hYmxlbWVudCBvZiB0aGUgY3JlYXRpb24gcm93LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBmYXN0Q3JlYXRpb25Sb3cgPSB0YWJsZS5nZXRDcmVhdGlvblJvdygpO1xuXG5cdFx0aWYgKGZhc3RDcmVhdGlvblJvdyAmJiAhZmFzdENyZWF0aW9uUm93LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlQmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdGFibGVCaW5kaW5nLmdldENvbnRleHQoKTtcblxuXHRcdFx0aWYgKGJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRcdFRhYmxlSGVscGVyLmVuYWJsZUZhc3RDcmVhdGlvblJvdyhcblx0XHRcdFx0XHRmYXN0Q3JlYXRpb25Sb3csXG5cdFx0XHRcdFx0dGFibGVCaW5kaW5nLmdldFBhdGgoKSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgdGhlIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25NYXNzRWRpdEJ1dHRvblByZXNzZWQodWk1RXZlbnQ6IFVJNUV2ZW50LCBmb3JDb250ZXh0TWVudTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgbWFzc0VkaXRIZWxwZXIgPSBuZXcgTWFzc0VkaXREaWFsb2dIZWxwZXIoe1xuXHRcdFx0dGFibGU6IHRoaXMuY29udGVudCxcblx0XHRcdG9uQ29udGV4dE1lbnU6IGZvckNvbnRleHRNZW51LFxuXHRcdFx0b25DbG9zZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnNldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdEhlbHBlcik7XG5cdFx0bWFzc0VkaXRIZWxwZXIub3BlbigpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uU2VsZWN0aW9uQ2hhbmdlZCh1aTVldmVudDogVGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBUYWJsZVJ1bnRpbWUuc2V0Q29udGV4dHModWk1ZXZlbnQpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHsgLi4udWk1ZXZlbnQuZ2V0UGFyYW1ldGVycygpLCBzZWxlY3RlZENvbnRleHQ6IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIH0pO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQWN0aW9uUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4sXG5cdFx0cGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRtb2RlbDogT0RhdGFNb2RlbDtcblx0XHRcdG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0bGFiZWw6IHN0cmluZztcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGVudGl0eVNldE5hbWU6IHN0cmluZztcblx0XHR9XG5cdCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHBhcmFtZXRlcnMubW9kZWwgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGxldCBleGVjdXRlQWN0aW9uID0gdHJ1ZTtcblx0XHRpZiAocGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgJiYgcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gSWYgd2UgaGF2ZSBub24gYXBwbGljYWJsZSBjb250ZXh0cywgd2UgbmVlZCB0byBvcGVuIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlciBpZiBoZSB3YW50cyB0byBjb250aW51ZVxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMocGFyYW1ldGVycy5tb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGg8RW50aXR5VHlwZT4odGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lKS50YXJnZXQhO1xuXHRcdFx0Y29uc3QgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nID0gbmV3IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nKHtcblx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZSxcblx0XHRcdFx0bm90QXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLm5vdEFwcGxpY2FibGVDb250ZXh0cyxcblx0XHRcdFx0dGl0bGU6IHBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IGdldFJlc291cmNlTW9kZWwodGhpcyksXG5cdFx0XHRcdGVudGl0eVNldDogcGFyYW1ldGVycy5lbnRpdHlTZXROYW1lLFxuXHRcdFx0XHRhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuXHRcdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IHBhcmFtZXRlcnMuYXBwbGljYWJsZUNvbnRleHRzXG5cdFx0XHR9KTtcblx0XHRcdHBhcmFtZXRlcnMuY29udGV4dHMgPSBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0cztcblx0XHRcdGV4ZWN1dGVBY3Rpb24gPSBhd2FpdCBteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2cub3Blbih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKGV4ZWN1dGVBY3Rpb24pIHtcblx0XHRcdC8vIERpcmVjdCBleGVjdXRpb24gb2YgdGhlIGFjdGlvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHBhZ2VDb250cm9sbGVyLmVkaXRGbG93Lmludm9rZUFjdGlvbihhY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50OiBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIGludGVybmFsIHRhYmxlIGRlZmluaXRpb24gZm9yIGV4dGVybmFsIHVzYWdlIGluIHRoZSBkZWxlZ2F0ZS5cblx0ICogQHJldHVybnMgVGhlIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1hc3NFZGl0RGlhbG9nSGVscGVyXG5cdCAqL1xuXHRzZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdERpYWxvZ0hlbHBlcj86IE1hc3NFZGl0RGlhbG9nSGVscGVyKTogdm9pZCB7XG5cdFx0dGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlciA9IG1hc3NFZGl0RGlhbG9nSGVscGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cG9zZSB0aGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLCBpZiBhbnlcblx0ICovXG5cdGdldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBjb25uZWN0IHRoZSBmaWx0ZXIgdG8gdGhlIHRhYmxlQVBJIGlmIHJlcXVpcmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXG5cdHVwZGF0ZUZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhclJlZklkID0gdGhpcy5nZXRGaWx0ZXJCYXIoKTtcblx0XHRpZiAodGFibGUgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGUuZ2V0RmlsdGVyPy4oKSAhPT0gZmlsdGVyQmFyUmVmSWQpIHtcblx0XHRcdHRoaXMuX3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3RlbmVycyBvZiB0aGUgZmlsdGVyQmFyLlxuXHQgKi9cblx0ZGV0YWNoRmlsdGVyQmFyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdHRhYmxlPy5zZXRGaWx0ZXIoXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbnRyb2xcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdGdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vICdmaWx0ZXJCYXInIHByb3BlcnR5IG9mIG1hY3JvczpUYWJsZShwYXNzZWQgYXMgY3VzdG9tRGF0YSkgbWlnaHQgYmVcblx0XHQvLyAxLiBBIGxvY2FsSWQgd3J0IFZpZXcoRlBNIGV4cGxvcmVyIGV4YW1wbGUpLlxuXHRcdC8vIDIuIEFic29sdXRlIElkKHRoaXMgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gb2xkZXIgdmVyc2lvbnMpLlxuXHRcdC8vIDMuIEEgbG9jYWxJZCB3cnQgRnJhZ21lbnRJZCh3aGVuIGFuIFhNTENvbXBvc2l0ZSBvciBGcmFnbWVudCBpcyBpbmRlcGVuZGVudGx5IHByb2Nlc3NlZCkgaW5zdGVhZCBvZiBWaWV3SWQuXG5cdFx0Ly8gICAgJ2ZpbHRlckJhcicgd2FzIHN1cHBvcnRlZCBlYXJsaWVyIGFzIGFuICdhc3NvY2lhdGlvbicgdG8gdGhlICdtZGM6VGFibGUnIGNvbnRyb2wgaW5zaWRlICdtYWNyb3M6VGFibGUnIGluIHByaW9yIHZlcnNpb25zLlxuXHRcdC8vICAgIEluIG5ld2VyIHZlcnNpb25zICdmaWx0ZXJCYXInIGlzIHVzZWQgbGlrZSBhbiBhc3NvY2lhdGlvbiB0byAnbWFjcm9zOlRhYmxlQVBJJy5cblx0XHQvLyAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIElkIGlzIHJlbGF0aXZlIHRvICdtYWNyb3M6VGFibGVBUEknLlxuXHRcdC8vICAgIFRoaXMgc2NlbmFyaW8gaGFwcGVucyBpbiBjYXNlIG9mIEZpbHRlckJhciBhbmQgVGFibGUgaW4gYSBjdXN0b20gc2VjdGlvbnMgaW4gT1Agb2YgRkVWNC5cblxuXHRcdGNvbnN0IHRhYmxlQVBJSWQgPSB0aGlzPy5nZXRJZCgpO1xuXHRcdGNvbnN0IHRhYmxlQVBJTG9jYWxJZCA9IHRoaXMuZGF0YShcInRhYmxlQVBJTG9jYWxJZFwiKTtcblx0XHRjb25zdCBwb3RlbnRpYWxmaWx0ZXJCYXJJZCA9XG5cdFx0XHR0YWJsZUFQSUxvY2FsSWQgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGVBUElJZCAmJiB0YWJsZUFQSUlkLnJlcGxhY2UobmV3IFJlZ0V4cCh0YWJsZUFQSUxvY2FsSWQgKyBcIiRcIiksIGZpbHRlckJhclJlZklkKTsgLy8gM1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8XG5cdFx0XHRVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlckJhclJlZklkKSB8fFxuXHRcdFx0VUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChwb3RlbnRpYWxmaWx0ZXJCYXJJZClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpbHRlciBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZmlsdGVyQmFyLlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyUmVmSWQgSWQgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdF9zZXRGaWx0ZXJCYXIoZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5nZXRGaWx0ZXJCYXJDb250cm9sKGZpbHRlckJhclJlZklkKTtcblxuXHRcdGlmIChmaWx0ZXJCYXIpIHtcblx0XHRcdGlmIChmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckFQST4oXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5nZXRJZCgpfS1jb250ZW50YCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPEZpbHRlckJhckJCVjQ+KFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyXCIpICYmXG5cdFx0XHRcdGZpbHRlckJhcj8uY29udGVudD8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGAke2ZpbHRlckJhci5jb250ZW50LmdldElkKCl9LWNvbnRlbnRgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGZpbHRlckJhci5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpIHx8XG5cdFx0XHRcdGZpbHRlckJhci5pc0E8dHlwZW9mIEJhc2ljU2VhcmNoPihcInNhcC5mZS5tYWNyb3MudGFibGUuQmFzaWNTZWFyY2hcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0YWJsZS5zZXRGaWx0ZXIoZmlsdGVyQmFyLmdldElkKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIGhhbmRsZUNyZWF0ZUFjdGl2YXRlKGFjdGl2YXRlRXZlbnQ6IFVJNUV2ZW50PHsgY29udGV4dDogQ29udGV4dCB9LCBPRGF0YUxpc3RCaW5kaW5nPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRhd2FpdCB0aGlzLl9oYW5kbGVDcmVhdGVBY3RpdmF0ZShhY3RpdmF0ZUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZHJhZ2dlZCBlbGVtZW50IGVudGVycyBhIHRhYmxlIHJvdy5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25EcmFnRW50ZXJEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8eyBiaW5kaW5nQ29udGV4dDogQ29udGV4dDsgZHJhZ1NvdXJjZTogQ29udGV4dDsgZHJvcFBvc2l0aW9uOiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgXCJPblwiIH0sIERyYWdEcm9wSW5mbz5cblx0KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRHJhZ0VudGVyRG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0YXJ0cyB0aGUgZHJhZyBvZiB0aGUgZG9jdW1lbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRHJhZ1N0YXJ0RG9jdW1lbnQodWk1RXZlbnQ6IFVJNUV2ZW50PHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQgfSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25EcmFnU3RhcnREb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogRHJvcHMgdGhlIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICogQHJldHVybnMgVGhlIFByb21pc2Vcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkRyb3BEb2N1bWVudChcblx0XHR1aTVFdmVudDogVUk1RXZlbnQ8e1xuXHRcdFx0YmluZGluZ0NvbnRleHQ6IENvbnRleHQ7XG5cdFx0XHRkcmFnU291cmNlOiBDb250ZXh0O1xuXHRcdFx0ZHJvcFBvc2l0aW9uOiBzdHJpbmc7XG5cdFx0fT5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGF3YWl0IHRoaXMuX29uRHJvcERvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkNvbGxhcHNlRXhwYW5kTm9kZSh1aTVFdmVudDogVUk1RXZlbnQsIGV4cGFuZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAodWk1RXZlbnQuZ2V0U291cmNlKCkuZ2V0TWV0YWRhdGEoKS5pc0EoXCJzYXAubS5NZW51SXRlbVwiKSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Db2xsYXBzZUV4cGFuZE5vZGUodWk1RXZlbnQsIGV4cGFuZCk7XG5cdH1cblxuXHQvKipcblx0ICogSW50ZXJuYWwgbWV0aG9kIHRvIG1vdmUgYSByb3cgdXAgb3IgZG93biBpbiBhIFRyZWUgdGFibGUuXG5cdCAqIEBwYXJhbSB1aTVFdmVudFxuXHQgKiBAcGFyYW0gbW92ZVVwIFRydWUgZm9yIG1vdmUgdXAsIGZhbHNlIGZvciBtb3ZlIGRvd25cblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Nb3ZlVXBEb3duKHVpNUV2ZW50OiBVSTVFdmVudCwgbW92ZVVwOiBib29sZWFuLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5fb25Nb3ZlVXBEb3duKHVpNUV2ZW50LCBtb3ZlVXAsIGZvckNvbnRleHRNZW51KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGZyb20gdGhlIHRhYmxlLiBUaGlzIGZ1bmN0aW9uIGNvbnNpZGVycyBvbmx5IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBhcHBsaWVkIGF0IHRoZSBjb250cm9sIGxldmVsLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudCgpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuZ2V0U2VsZWN0aW9uVmFyaWFudCh0aGlzLmdldENvbnRlbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gYXBwbHkgdG8gdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIFNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudChzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2UpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCh0aGlzLmdldENvbnRlbnQoKSwgc2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIF9jcmVhdGVDb250ZW50VjJNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBwcmVwcm9jZXNzb3JDb250ZXh0ID0gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ7XG5cdFx0aWYgKG93bmVyICYmIHByZXByb2Nlc3NvckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5tZXRhUGF0aCkhO1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXG5cdFx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLm9yaWdpbmFsVGFibGVEZWZpbml0aW9uKTtcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBbXTsgLy8gQXMgd2UgaGF2ZSBhIG5ldyB0YWJsZSBkZWZpbml0aW9uLCB3ZSBjbGVhbiB0aGUgY2FjaGVkIHByb3BlcnR5SW5mb3MgdG8gcmVjcmVhdGUgdGhlbVxuXG5cdFx0XHRjb25zdCBjb252ZXJ0ZWRNZXRhZGF0YSA9IGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpO1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IGNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzXG5cdFx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0dGhpcy5jb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdGNvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgaGFuZGxlclByb3ZpZGVyID0gbmV3IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIodGhpcywgeyBjb2xsZWN0aW9uRW50aXR5LCBtZXRhTW9kZWwgfSk7XG5cblx0XHRcdGNvbnN0IGZyYWdtZW50ID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoXG5cdFx0XHRcdHBhcnNlWE1MU3RyaW5nKFxuXHRcdFx0XHRcdHhtbGA8cm9vdFxuXHRcdFx0eG1sbnM9XCJzYXAubVwiXG5cdFx0XHR4bWxuczptZGM9XCJzYXAudWkubWRjXCJcblx0XHRcdHhtbG5zOnBsdWdpbnM9XCJzYXAubS5wbHVnaW5zXCJcblx0XHRcdHhtbG5zOm1kY1RhYmxlPVwic2FwLnVpLm1kYy50YWJsZVwiXG5cdFx0XHR4bWxuczptYWNyb1RhYmxlPVwic2FwLmZlLm1hY3Jvcy50YWJsZVwiXG5cdFx0XHR4bWxuczptZGNhdD1cInNhcC51aS5tZGMuYWN0aW9udG9vbGJhclwiXG5cdFx0XHR4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcIlxuXHRcdFx0eG1sbnM6Y29udHJvbD1cInNhcC5mZS5jb3JlLmNvbnRyb2xzXCJcblx0XHRcdHhtbG5zOmR0PVwic2FwLnVpLmR0XCJcblx0XHRcdHhtbG5zOmZsPVwic2FwLnVpLmZsXCJcblx0XHRcdHhtbG5zOnZhcmlhbnQ9XCJzYXAudWkuZmwudmFyaWFudHNcIlxuXHRcdFx0eG1sbnM6cDEzbj1cInNhcC51aS5tZGMucDEzblwiXG5cdFx0XHR4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiPiR7anN4LnJlbmRlckFzWE1MKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIE1kY1RhYmxlVGVtcGxhdGUuZ2V0TURDVGFibGVUZW1wbGF0ZSh0aGlzLCB7XG5cdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHByZXByb2Nlc3NvckNvbnRleHQuZ2V0Q29udmVydGVkTWV0YWRhdGEoKSxcblx0XHRcdFx0XHRtZXRhTW9kZWwsXG5cdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdGFwcENvbXBvbmVudDogb3duZXIuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdFx0fSk7XG5cdFx0XHR9KX08L3Jvb3Q+YCxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdClbMF0sXG5cdFx0XHRcdHsgbW9kZWxzOiB7fSB9LFxuXHRcdFx0XHRwcmVwcm9jZXNzb3JDb250ZXh0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKGZyYWdtZW50LmZpcnN0RWxlbWVudENoaWxkKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgb2xkIE1EQyB0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIEZpbHRlckJhciBsaXN0ZW5lcnNcblx0XHRcdFx0dGhpcy5kZXRhY2hGaWx0ZXJCYXIoKTtcblxuXHRcdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblx0XHRcdFx0Y29uc3QgY29udGVudCA9IChhd2FpdCBGcmFnbWVudC5sb2FkKHtcblx0XHRcdFx0XHRkZWZpbml0aW9uOiBmcmFnbWVudC5maXJzdEVsZW1lbnRDaGlsZCxcblx0XHRcdFx0XHRjb250cm9sbGVyOiBvd25lci5nZXRSb290Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiBvd25lci5nZXRSb290Q29udHJvbCgpXG5cdFx0XHRcdH0pKSBhcyBUYWJsZTtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblxuXHRcdFx0XHR0aGlzLnVwZGF0ZUZpbHRlckJhcigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHVua25vd24sIGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHByb3BlcnR5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBbXCJpZ25vcmVkRmllbGRzXCIsIFwibWV0YVBhdGhcIl0uaW5jbHVkZXMocHJvcGVydHlLZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlLCBiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBkYXRhIG1vZGVsIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgZGF0YSBtb2RlbCBwYXRoIGFuZCBjb252ZXJ0ZWQgdGFyZ2V0IG9iamVjdC5cblx0ICovXG5cblx0Z2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0YU1vZGVsQ29udmVyc2lvbiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0YWJsZS5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRpZiAoIW1ldGFNb2RlbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlQYXRoID0gdGFibGUuZGF0YShcIm1ldGFQYXRoXCIpO1xuXHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gdGhpcy5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkuZmluZCgocHJvcGVydHlJbmZvKSA9PiBwcm9wZXJ0eUluZm8ubmFtZSA9PT0gcHJvcGVydHlOYW1lKVxuXHRcdFx0Py5hbm5vdGF0aW9uUGF0aDtcblx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSBtZXRhTW9kZWwuZ2V0Q29udGV4dCh0YXJnZXRNZXRhUGF0aCEpO1xuXHRcdGNvbnN0IGVudGl0eVNldCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KGVudGl0eVBhdGgpO1xuXHRcdGNvbnN0IGNvbnZlcnRlZHRhcmdldE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0TWV0YU1vZGVsQ29udGV4dCh0YXJnZXRPYmplY3QpIGFzXG5cdFx0XHR8IERhdGFGaWVsZEFic3RyYWN0VHlwZXNcblx0XHRcdHwgRGF0YVBvaW50VHlwZVR5cGVzO1xuXHRcdGxldCBkYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHk+KFxuXHRcdFx0dGFyZ2V0T2JqZWN0LFxuXHRcdFx0ZW50aXR5U2V0XG5cdFx0KTtcblx0XHRkYXRhTW9kZWxQYXRoID1cblx0XHRcdEZpZWxkVGVtcGxhdGluZy5nZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUoXG5cdFx0XHRcdGRhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzPlxuXHRcdFx0KSB8fCBkYXRhTW9kZWxQYXRoO1xuXHRcdHJldHVybiB7IGRhdGFNb2RlbFBhdGg6IGRhdGFNb2RlbFBhdGgsIGNvbnZlcnRlZHRhcmdldE9iamVjdDogY29udmVydGVkdGFyZ2V0T2JqZWN0IH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBiaW5kaW5nIGNvbnRleHQgZm9yIHRoZSBnaXZlbiBNb2RlQXNFeHByZXNzaW9uLlxuXHQgKiBAcGFyYW0gTW9kZUFzRXhwcmVzc2lvblxuXHQgKiBAcGFyYW0gcm93Q29udGV4dFxuXHQgKiBAcmV0dXJuc1xuXHQgKi9cblxuXHRjcmVhdGVBbnlDb250cm9sKE1vZGVBc0V4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCByb3dDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkKTogdHlwZW9mIEFueSB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBhbnlPYmplY3QgPSBuZXcgQW55KHsgYW55OiBNb2RlQXNFeHByZXNzaW9uIH0pO1xuXHRcdGFueU9iamVjdC5zZXRNb2RlbChyb3dDb250ZXh0Py5nZXRNb2RlbCgpKTtcblx0XHRhbnlPYmplY3Quc2V0TW9kZWwodGFibGUuZ2V0TW9kZWwoXCJ1aVwiKSwgXCJ1aVwiKTtcblx0XHRyZXR1cm4gYW55T2JqZWN0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZWRpdCBtb2RlIG9mIGEgUHJvcGVydHkuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSByb3dDb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSByb3cgY29udGFpbmluZyB0aGUgcHJvcGVydHlcblx0ICogQHJldHVybnMgVGhlIGVkaXQgbW9kZSBvZiB0aGUgZmllbGRcblx0ICovXG5cblx0Z2V0UHJvcGVydHlFZGl0TW9kZShwcm9wZXJ0eU5hbWU6IHN0cmluZywgcm93Q29udGV4dDogQ29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGFueU9iamVjdDogdHlwZW9mIEFueSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0pIHtcblx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWUpPy5kYXRhTW9kZWxQYXRoO1xuXHRcdFx0Y29uc3QgY29udmVydGVkdGFyZ2V0T2JqZWN0ID0gdGhpcy5nZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lKT8uY29udmVydGVkdGFyZ2V0T2JqZWN0O1xuXHRcdFx0aWYgKGRhdGFNb2RlbFBhdGggJiYgY29udmVydGVkdGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5Rm9yRmllbGRDb250cm9sID0gKGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdCBhcyB1bmtub3duIGFzIERhdGFGaWVsZFR5cGVzKT8uVmFsdWVcblx0XHRcdFx0XHQ/IChkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhRmllbGRUeXBlcykuVmFsdWVcblx0XHRcdFx0XHQ6IGRhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0XHRcdFx0Y29uc3QgZWRpdE1vZGVBc0V4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRVSUZvcm1hdHRlcnMuZ2V0RWRpdE1vZGUocHJvcGVydHlGb3JGaWVsZENvbnRyb2wsIGRhdGFNb2RlbFBhdGgsIGZhbHNlLCB0cnVlLCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFueU9iamVjdCA9IHRoaXMuY3JlYXRlQW55Q29udHJvbChlZGl0TW9kZUFzRXhwcmVzc2lvbiwgcm93Q29udGV4dCk7XG5cdFx0XHRcdHRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV0gPSBhbnlPYmplY3Q7XG5cdFx0XHRcdGFueU9iamVjdC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTsgLy8gd2UgbmVlZCB0byBzZXQgdGhlIGJpbmRpbmcgY29udGV4dCB0byBudWxsIG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIGFkZERlcGVuZGVudCB3aWxsIHNldCBpdCB0byB0aGUgY29udGV4dCBvZiB0aGUgdGFibGVcblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQoYW55T2JqZWN0KTsgLy8gdG8gZGVzdHJveSBpdCB3aGVuIHRoZSB0YWJsZUFQSSBpcyBkZXN0cm95ZWRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YW55T2JqZWN0ID0gdGhpcy5wcm9wZXJ0eUVkaXRNb2RlQ2FjaGVbcHJvcGVydHlOYW1lXTtcblx0XHR9XG5cdFx0YW55T2JqZWN0Py5zZXRCaW5kaW5nQ29udGV4dChyb3dDb250ZXh0KTtcblx0XHRjb25zdCBlZGl0TW9kZSA9IGFueU9iamVjdD8uZ2V0QW55KCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGFueU9iamVjdD8uc2V0QmluZGluZ0NvbnRleHQobnVsbCk7XG5cdFx0cmV0dXJuIGVkaXRNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3cgdGhlIGNvbHVtbnMgd2l0aCB0aGUgZ2l2ZW4gY29sdW1uIGtleXMgYnkgc2V0dGluZyB0aGVpciBhdmFpbGFiaWxpdHkgdG8gRGVmYXVsdC5cblx0ICogQHBhcmFtIGNvbHVtbktleXMgVGhlIGtleXMgZm9yIHRoZSBjb2x1bW5zIHRvIHNob3dcblx0ICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuXHQgKiBAcHVibGljXG5cdCAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBzaG93Q29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCB0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBoaWRlXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKi9cblx0YXN5bmMgaGlkZUNvbHVtbnMoY29sdW1uS2V5czogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRmb3IgKGNvbnN0IGNvbHVtbktleSBvZiBjb2x1bW5LZXlzKSB7XG5cdFx0XHR0aGlzLm1vZGlmeUR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uKGNvbHVtbktleSwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBpZ25vcmVkRmllbGRzIFRoZSBmaWVsZHMgdG8gaWdub3JlXG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGlzIGluIG9yZGVyIHRvIGFsbG93IG1ldGhvZCBjaGFpbmluZ1xuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldElnbm9yZWRGaWVsZHMoaWdub3JlZEZpZWxkczogc3RyaW5nKTogdGhpcyB7XG5cdFx0cmV0dXJuIHRoaXMuc2V0UHJvcGVydHkoXCJpZ25vcmVkRmllbGRzXCIsIGlnbm9yZWRGaWVsZHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBpZ25vcmVkRmllbGRzIHByb3BlcnR5XG5cdCAqIEBleHBlcmltZW50YWxcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0SWdub3JlZEZpZWxkcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldFByb3BlcnR5KFwiaWdub3JlZEZpZWxkc1wiKSA/PyB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIHN0YXRlIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250cm9sIHN0YXRlIGtleS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHJldHVybnMgLSBUaGUgZnVsbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHN0YXRlIGlmIGF2YWlsYWJsZS5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZnVsbFN0YXRlOiBjb250cm9sU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IGluaXRpYWxDb250cm9sU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGtleSB0byBiZSB1c2VkIGZvciBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIGNvbnRyb2wgdG8gZ2V0IHN0YXRlIGtleSBmb3Jcblx0ICogQHJldHVybnMgVGhlIGtleSB0byBiZSB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250cm9scyBzdGF0ZVxuXHQgKi9cblx0Z2V0U3RhdGVLZXkob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMuY29udGVudCk/LmdldExvY2FsSWQob0NvbnRyb2wuZ2V0SWQoKSkgfHwgb0NvbnRyb2wuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBkZWZpbml0aW9uIHdpdGggaWdub3JlZEZpZWxkcyBhbmQgZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zLlxuXHQgKiBAcGFyYW0gaWdub3JlZEZpZWxkc1xuXHQgKiBAcGFyYW0gZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zXG5cdCAqIEBwYXJhbSB0YWJsZURlZmluaXRpb25cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkoXG5cdFx0aWdub3JlZEZpZWxkczogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1uczogRHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5bXSxcblx0XHR0YWJsZURlZmluaXRpb246IFRhYmxlVmlzdWFsaXphdGlvblxuXHQpOiB2b2lkIHtcblx0XHRDb2x1bW5NYW5hZ2VtZW50LnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljKGlnbm9yZWRGaWVsZHMsIGR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucywgdGFibGVEZWZpbml0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBNREMgdGFibGUuXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgZm9yd2FyZGluZyBhZ2dyZWdhdGlvbiB0byBnZXQgdGhlIHRhcmdldCBvZiB0aGUgYWdncmVnYXRpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIFRoZSBtZGMgdGFibGVcblx0ICovXG5cdGdldE1EQ1RhYmxlKCk6IE1EQ1RhYmxlIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxlZCBieSB0aGUgTURDIHN0YXRlIHV0aWwgd2hlbiB0aGUgc3RhdGUgZm9yIHRoaXMgY29udHJvbCdzIGNoaWxkIGhhcyBjaGFuZ2VkLlxuXHQgKi9cblx0aGFuZGxlU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxzIHRoZSBhc3luY0NhbGwgZnVuY3Rpb24gb25seSBpZiB0aGUgbG9ja05hbWUgaXMgbm90IGFscmVhZHkgbG9ja2VkLlxuXHQgKiBAcGFyYW0gYXN5bmNDYWxsXG5cdCAqIEBwYXJhbSBsb2NrTmFtZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG5cdCAqL1xuXHRhc3luYyBhdm9pZFBhcmFsbGVsQ2FsbHMoYXN5bmNDYWxsOiBGdW5jdGlvbiwgbG9ja05hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmxvY2tbbG9ja05hbWVdKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSB0cnVlO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCBhc3luY0NhbGwoKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHRoaXMubG9ja1tsb2NrTmFtZV0gPSBmYWxzZTtcblx0XHR9XG5cdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IGZhbHNlO1xuXHR9XG5cblx0ZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0Ly8gV2UgcmVsZWFzZSBob2xkIG9uIG1lc3NhZ2VIYW5kbGVyIGJ5IHRoZSBjb250cm9sIGlmIHRoZXJlIGlzIG9uZS5cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8ubWVzc2FnZUhhbmRsZXI/LnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdHByaXZhdGUgZnVsbFNjcmVlbkRpYWxvZz86IERpYWxvZzsgLy8gVGhlIGRpYWxvZyB1c2VkIHRvIGRpc3BsYXkgdGhlIHRhYmxlIGluIGZ1bGwgc2NyZWVuIG1vZGVcblxuXHRzZXRGdWxsU2NyZWVuRGlhbG9nKGRpYWxvZzogRGlhbG9nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5mdWxsU2NyZWVuRGlhbG9nID0gZGlhbG9nO1xuXHR9XG5cblx0cHJpdmF0ZSBlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXG5cdHByaXZhdGUgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmV0Y2hlZCBwcm9wZXJ0eUluZm9zIGZyb20gdGhlIHRhYmxlIGRlbGVnYXRlIGNvbnRhaW5pbmcgaW50ZXJuYWwgcHJvcGVydGllcy5cblx0ICogQHBhcmFtIGVuaGFuY2VkUHJvcGVydHlJbmZvc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyhlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSk6IHZvaWQge1xuXHRcdHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zID0gZW5oYW5jZWRQcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm8gZW5oYW5jZWQgd2l0aCB0aGUgUHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBNREMgZXhwZWN0ZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgVGhlIFByb3BlcnR5SW5mb1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0UHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGVuaGFuY2VkUHJvcGVydHlJbmZvIG9mIHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zIGFzIFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdGtleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8ua2V5LFxuXHRcdFx0XHRsYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubGFiZWwsXG5cdFx0XHRcdHZpc2libGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc2libGUsXG5cdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0Y2xpcGJvYXJkU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNsaXBib2FyZFNldHRpbmdzLFxuXHRcdFx0XHR2aXN1YWxTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8udmlzdWFsU2V0dGluZ3MsXG5cdFx0XHRcdHRvb2x0aXA6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRvb2x0aXAsXG5cdFx0XHRcdGlzS2V5OiBlbmhhbmNlZFByb3BlcnR5SW5mby5pc0tleVxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKGVuaGFuY2VkUHJvcGVydHlJbmZvLnByb3BlcnR5SW5mb3MpIHtcblx0XHRcdFx0cHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRcdC4uLnByb3BlcnR5SW5mbyxcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zXG5cdFx0XHRcdH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZXh0ZW5zaW9uOiBQcm9wZXJ0eUluZm9bXCJleHRlbnNpb25cIl07XG5cdFx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24pIHtcblx0XHRcdFx0XHRleHRlbnNpb24gPSB7XG5cdFx0XHRcdFx0XHR0ZWNobmljYWxseUdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLnRlY2huaWNhbGx5R3JvdXBhYmxlLFxuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlBZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24uYWRkaXRpb25hbFByb3BlcnRpZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGV4dGVuc2lvbiA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhleHRlbnNpb24pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cGF0aDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucGF0aCxcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5tYXhDb25kaXRpb25zLFxuXHRcdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdFx0Y29uc3RyYWludHM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNvbnN0cmFpbnRzLFxuXHRcdFx0XHRcdGdyb3VwOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cCxcblx0XHRcdFx0XHRncm91cExhYmVsOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cExhYmVsLFxuXHRcdFx0XHRcdGNhc2VTZW5zaXRpdmU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNhc2VTZW5zaXRpdmUsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZmlsdGVyYWJsZSxcblx0XHRcdFx0XHRzb3J0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uc29ydGFibGUsXG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cGFibGUsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmRhdGFUeXBlLFxuXHRcdFx0XHRcdGFnZ3JlZ2F0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uYWdncmVnYXRhYmxlLFxuXHRcdFx0XHRcdHVuaXQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnVuaXQsXG5cdFx0XHRcdFx0dGV4dDogZW5oYW5jZWRQcm9wZXJ0eUluZm8udGV4dCxcblx0XHRcdFx0XHRleHRlbnNpb25cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHByb3BlcnR5SW5mb3MucHVzaChcblx0XHRcdFx0T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BlcnR5SW5mbykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkgYXMgUHJvcGVydHlJbmZvXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdHNldENhY2hlZFByb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBwcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0Z2V0Q2FjaGVkUHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0cmV0dXJuIHRoaXMucHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgdGFibGUgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIHBhdGhcblx0ICovXG5cdGdldFJvd0NvbGxlY3Rpb25QYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbGxlci5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbik7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoY29sbGVjdGlvbkNvbnRleHQhLCBjb250ZXh0UGF0aCk7XG5cdFx0cmV0dXJuIGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCkgfHwgZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBiaW5kaW5nIGluZm8gdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXN0IGJpbmRpbmcgZm9yIHRoZSBNREMgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0YWJsZSBiaW5kaW5nIGluZm9cblx0ICovXG5cdGdldFRhYmxlVGVtcGxhdGVCaW5kaW5nSW5mbygpOiBDb2xsZWN0aW9uQmluZGluZ0luZm8ge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhO1xuXHRcdGNvbnN0IHBhdGggPSB0aGlzLmdldFJvd0NvbGxlY3Rpb25QYXRoKCk7XG5cdFx0Y29uc3Qgcm93QmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mbyA9IHtcblx0XHRcdHN1c3BlbmRlZDogZmFsc2UsXG5cdFx0XHRwYXRoLFxuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHQkY291bnQ6IHRydWVcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmVuYWJsZSRzZWxlY3QpIHtcblx0XHRcdC8vIERvbid0IGFkZCAkc2VsZWN0IHBhcmFtZXRlciBpbiBjYXNlIG9mIGFuIGFuYWx5dGljYWwgcXVlcnksIHRoaXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoZSBtb2RlbFxuXHRcdFx0Y29uc3Qgc2VsZWN0ID0gT2JqZWN0LmtleXModGhpcy50YWJsZURlZmluaXRpb24ucmVxdWVzdEF0TGVhc3QpLmpvaW4oXCIsXCIpO1xuXHRcdFx0aWYgKHNlbGVjdCkge1xuXHRcdFx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kc2VsZWN0ID0gc2VsZWN0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5lbmFibGUkJGdldEtlZXBBbGl2ZUNvbnRleHQpIHtcblx0XHRcdC8vIHdlIGxhdGVyIGVuc3VyZSBpbiB0aGUgZGVsZWdhdGUgb25seSBvbmUgbGlzdCBiaW5kaW5nIGZvciBhIGdpdmVuIHRhcmdldENvbGxlY3Rpb25QYXRoIGhhcyB0aGUgZmxhZyAkJGdldEtlZXBBbGl2ZUNvbnRleHRcblx0XHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ2V0S2VlcEFsaXZlQ29udGV4dCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgYSBzZWFyY2gvZmlsdGVyXG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyID0gdHJ1ZTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkZ3JvdXBJZCA9IFwiJGF1dG8uV29ya2Vyc1wiO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkdXBkYXRlR3JvdXBJZCA9IFwiJGF1dG9cIjtcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJG93blJlcXVlc3QgPSB0cnVlO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMgPSB0cnVlO1xuXG5cdFx0Ly8gRXZlbnQgaGFuZGxlcnNcblx0XHRjb25zdCBlZGl0Rmxvd0V4dGVuc2lvbiA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0Y29uc3QgZXZlbnRIYW5kbGVyczogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaENvbXBsZXRlZCA9IHRoaXMub25JbnRlcm5hbFBhdGNoQ29tcGxldGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5kYXRhUmVjZWl2ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmRhdGFSZXF1ZXN0ZWQgPSB0aGlzLm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jaGFuZ2UgPSB0aGlzLm9uTGlzdEJpbmRpbmdDaGFuZ2UuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNyZWF0ZUFjdGl2YXRlID0gdGhpcy5oYW5kbGVDcmVhdGVBY3RpdmF0ZS5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY3JlYXRlU2VudCA9IGVkaXRGbG93RXh0ZW5zaW9uLmhhbmRsZUNyZWF0ZVNlbnQuYmluZChlZGl0Rmxvd0V4dGVuc2lvbik7XG5cdFx0ZXZlbnRIYW5kbGVycy5wYXRjaFNlbnQgPSB0aGlzLm9uSW50ZXJuYWxQYXRjaFNlbnQuYmluZCh0aGlzKTtcblxuXHRcdHJvd0JpbmRpbmdJbmZvLmV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7XG5cblx0XHRyZXR1cm4gcm93QmluZGluZ0luZm87XG5cdH1cblxuXHRwcm90ZWN0ZWQgc3RhdGljIGFkZFNldHRpbmcodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBtYW5pZmVzdC1mcmllbmRseSBzZXR0aW5ncyBmcm9tIHRhYmxlQVBJIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFNldHRpbmdzXG5cdCAqL1xuXHRnZXRTZXR0aW5nc0Zvck1hbmlmZXN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCB0YWJsZVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZnJvemVuQ29sdW1uQ291bnRcIiwgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50TW9kZVwiLCB0aGlzLnJvd0NvdW50TW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkXCIsIHRoaXMuZGlzYWJsZUNvcHlUb0NsaXBib2FyZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInBvcGluTGF5b3V0XCIsIHRoaXMucG9waW5MYXlvdXQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzXCIsIHRoaXMuZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiY29uZGVuc2VkVGFibGVMYXlvdXRcIiwgdGhpcy5jb25kZW5zZWRUYWJsZUxheW91dCk7XG5cblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUpIHtcblx0XHRcdGNvbnN0IGNyZWF0aW9uTW9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGVBdEVuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGVBdEVuZCk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiY3VzdG9tRnJhZ21lbnRcIiwgdGhpcy5tYXNzRWRpdC5jdXN0b21Db250ZW50KTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0Lmlnbm9yZWRGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInF1aWNrVmFyaWFudFNlbGVjdGlvblwiLCB7XG5cdFx0XHRcdHBhdGhzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24uc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRhYmxlU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogRmluZCBhbiBhY3Rpb24gZnJvbSBpdHMga2V5LlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gaWYgaXQgY2FuIGJlIGZvdW5kIChvciB1bmRlZmluZWQpXG5cdCAqL1xuXHRmaW5kU2xvdEFjdGlvbkZyb21LZXkoa2V5OiBzdHJpbmcpOiBBY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGxldCByZXN1bHQ6IEFjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9ucyA/PyBbXSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikgfHxcblx0XHRcdFx0YWN0aW9uLmlzQTxBY3Rpb25Hcm91cE92ZXJyaWRlPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJlc3VsdCA/Pz0gYWN0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikgJiYgYS5rZXkgPT09IGtleTtcblx0XHRcdFx0fSkgYXMgQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSAmJiBhY3Rpb24ua2V5ID09PSBrZXkpIHtcblx0XHRcdFx0cmVzdWx0ID0gYWN0aW9uO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHR0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0fVxuXG5cdGdldEZ1bGxNZXRhUGF0aCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLm1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRhUGF0aDtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0ke3RoaXMubWV0YVBhdGh9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuY29udGV4dFBhdGh9LyR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlQ29udGVudChmb3JjZUNyZWF0aW9uID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKCFvd25lcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuY29udGV4dFBhdGggPz89IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpIGFzIHN0cmluZztcblx0XHRjb25zdCBmdWxsTWV0YVBhdGggPSB0aGlzLmdldEZ1bGxNZXRhUGF0aCgpO1xuXHRcdGlmICghdGhpcy5jb250ZW50IHx8IGZvcmNlQ3JlYXRpb24pIHtcblx0XHRcdHRoaXMuZGV0YWNoRmlsdGVyQmFyKCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblxuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoZnVsbE1ldGFQYXRoKSE7XG5cblx0XHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMpO1xuXHRcdFx0dGhpcy51cGRhdGVQcm9wZXJ0aWVzRnJvbVRhYmxlRGVmaW5pdGlvbigpO1xuXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgdGhpcy50YWJsZURlZmluaXRpb24pO1xuXG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb250ZXh0T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcy5yZXNvbHZlUGF0aCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pXG5cdFx0XHRcdC50YXJnZXQgYXMgRW50aXR5U2V0IHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IChjb2xsZWN0aW9uRW50aXR5IGFzIEVudGl0eVNldCk/LmVudGl0eVR5cGUgPz8gKGNvbGxlY3Rpb25FbnRpdHkgYXMgTmF2aWdhdGlvblByb3BlcnR5KT8udGFyZ2V0VHlwZTtcblx0XHRcdHRoaXMuZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSA9IGVudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZTtcblxuXHRcdFx0Y29uc3QgaGFuZGxlclByb3ZpZGVyID0gbmV3IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIodGhpcywgeyBtZXRhTW9kZWwsIGNvbGxlY3Rpb25FbnRpdHkgfSwgdGhpcyk7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZU1EQ1RhYmxlKHtcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdFx0bWV0YVBhdGg6IG1ldGFQYXRoQ29udGV4dCxcblx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0VHlwZXMobWV0YU1vZGVsKSxcblx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRtZXRhTW9kZWxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZUZpbHRlckJhcigpO1xuXHRcdHRoaXMuc2V0dXBPcHRpbWlzdGljQmF0Y2goKTtcblx0XHR0aGlzLnNldFVwTm9EYXRhSW5mb3JtYXRpb24oKTtcblx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnNldE1ldGFQYXRoKGZ1bGxNZXRhUGF0aCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZU1EQ1RhYmxlKHBhcmFtZXRlcnM6IE1kY1RhYmxlVGVtcGxhdGUuVGFibGVUZW1wbGF0aW5nUGFyYW1ldGVycyk6IE1EQ1RhYmxlIHtcblx0XHRyZXR1cm4gTWRjVGFibGVUZW1wbGF0ZS5nZXRNRENUYWJsZVRlbXBsYXRlKHRoaXMsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVQcm9wZXJ0aWVzRnJvbVRhYmxlRGVmaW5pdGlvbigpOiB2b2lkIHtcblx0XHQvLyBJRCBmb3IgdGhlIGludGVybmFsIE1EQyB0YWJsZVxuXHRcdGlmIChNYW5hZ2VkT2JqZWN0TWV0YWRhdGEuaXNHZW5lcmF0ZWRJZCh0aGlzLmdldElkKCkpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jb250ZW50SWQgPz89IGAke3RoaXMuZ2V0SWQoKX0tY29udGVudGA7XG5cdFx0fVxuXG5cdFx0Ly8gQmFzaWMgc2VhcmNoIGZpZWxkIGlmIG5vIGZpbHRlciBiYXIgaXMgcHJvdmlkZWRcblx0XHRpZiAodGhpcy51c2VCYXNpY1NlYXJjaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJZiBubyBmaWx0ZXJiYXIgaXMgcHJvdmlkZWQsIHVzZSB0aGUgYmFzaWMgc2VhcmNoIGZpZWxkXG5cdFx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyKSB7XG5cdFx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0XHR0aGlzLnVzZUJhc2ljU2VhcmNoID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZWFkLW9ubHkgbW9kZVxuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIEVuYWJsZSBlbXB0eSByb3dzXG5cdFx0aWYgKHRoaXMuZW1wdHlSb3dzRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBlbmFibGVkID1cblx0XHRcdFx0dGhpcy5jcmVhdGlvbk1vZGU/Lm5hbWUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3Ncblx0XHRcdFx0XHQ/IHRoaXMudGFibGVEZWZpbml0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4gYS5rZXkgPT09IFN0YW5kYXJkQWN0aW9uS2V5cy5DcmVhdGUpPy5lbmFibGVkXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoZW5hYmxlZCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWQgIT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZW1wdHlSb3dzRW5hYmxlZFwiLCBlbmFibGVkKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXROb0RhdGFNZXNzYWdlTW9kZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1vZGUgPSB0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gXCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiO1xuXHRcdHJldHVybiBtb2RlID09PSBcInRleHRcIiA/IFwidGV4dFwiIDogbW9kZS5zcGxpdChcIi1cIilbMV07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmcgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgdGhlIHJvdyBiaW5kaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldENvdW50KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um93QmluZGluZygpPy5nZXRDb3VudCgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQVBJO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFkQSxJQXlCTUEsUUFBUSxJQUFBQyxJQUFBLEdBVGJDLGNBQWMsQ0FBQyw4QkFBOEIsRUFBRTtJQUFFQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0I7RUFBRSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUMzRkMsS0FBSyxDQUFDQyxvQkFBb0IsQ0FBQyxFQUFBQyxLQUFBLEdBQzNCRixLQUFLLENBQUNHLFdBQVcsQ0FBQyxFQUFBQyxLQUFBLEdBQ2xCSixLQUFLLENBQUNLLG9CQUFvQixDQUFDLEVB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