@sapui5/sap.fe.macros 1.142.0 → 1.142.1

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 (69) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Field.js +5 -5
  4. package/src/sap/fe/macros/Field.ts +5 -3
  5. package/src/sap/fe/macros/FooterContent.js +3 -2
  6. package/src/sap/fe/macros/FooterContent.tsx +2 -10
  7. package/src/sap/fe/macros/MessageButton.js +3 -3
  8. package/src/sap/fe/macros/MessageButton.tsx +3 -2
  9. package/src/sap/fe/macros/Page.js +8 -4
  10. package/src/sap/fe/macros/Page.tsx +13 -4
  11. package/src/sap/fe/macros/RichTextEditor.js +12 -14
  12. package/src/sap/fe/macros/RichTextEditor.tsx +10 -13
  13. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  14. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  15. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  16. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  17. package/src/sap/fe/macros/chart/Action.js +19 -7
  18. package/src/sap/fe/macros/chart/Action.ts +8 -0
  19. package/src/sap/fe/macros/chart/ChartDelegate.js +13 -2
  20. package/src/sap/fe/macros/chart/ChartDelegate.ts +20 -1
  21. package/src/sap/fe/macros/chart/MdcChartTemplate.js +8 -6
  22. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +13 -22
  23. package/src/sap/fe/macros/controls/FilterBar.js +1 -1
  24. package/src/sap/fe/macros/controls/FilterBar.ts +8 -1
  25. package/src/sap/fe/macros/controls/TextLink.js +15 -1
  26. package/src/sap/fe/macros/controls/TextLink.tsx +19 -0
  27. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +23 -18
  28. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +27 -25
  29. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +4 -2
  30. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +7 -7
  31. package/src/sap/fe/macros/field/FieldTemplating.js +8 -3
  32. package/src/sap/fe/macros/field/FieldTemplating.ts +7 -2
  33. package/src/sap/fe/macros/filterBar/FilterBar.block.js +10 -1
  34. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +10 -0
  35. package/src/sap/fe/macros/form/FormContainer.block.js +9 -8
  36. package/src/sap/fe/macros/form/FormContainer.block.ts +10 -7
  37. package/src/sap/fe/macros/internal/field/EditStyle.js +11 -6
  38. package/src/sap/fe/macros/internal/field/EditStyle.tsx +7 -3
  39. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +36 -7
  40. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +35 -6
  41. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +54 -1
  42. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +59 -0
  43. package/src/sap/fe/macros/library.js +5 -6
  44. package/src/sap/fe/macros/{library.ts → library.tsx} +1 -1
  45. package/src/sap/fe/macros/messagebundle.properties +6 -0
  46. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  47. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  48. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +4 -3
  49. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +5 -2
  50. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  51. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  52. package/src/sap/fe/macros/table/ActionsTemplating.js +6 -5
  53. package/src/sap/fe/macros/table/ActionsTemplating.tsx +4 -4
  54. package/src/sap/fe/macros/table/MdcTableTemplate.js +27 -10
  55. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +31 -4
  56. package/src/sap/fe/macros/table/Table.block.js +3 -1
  57. package/src/sap/fe/macros/table/Table.block.tsx +7 -4
  58. package/src/sap/fe/macros/table/TableAPI.js +49 -28
  59. package/src/sap/fe/macros/table/TableAPI.ts +58 -32
  60. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -4
  61. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +6 -3
  62. package/src/sap/fe/macros/table/delegates/TableDelegate.js +3 -3
  63. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +3 -4
  64. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  65. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  66. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +6 -6
  67. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +5 -5
  68. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +5 -3
  69. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +7 -4
@@ -525,7 +525,8 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
525
525
 
526
526
  constructor(
527
527
  props?: PropertiesOf<Field, "change" | "liveChange" | "focusin">,
528
- others?: PropertiesOf<Field, "change" | "liveChange" | "focusin">
528
+ others?: PropertiesOf<Field, "change" | "liveChange" | "focusin">,
529
+ scope?: never
529
530
  ) {
530
531
  let combinedProps;
531
532
 
@@ -533,7 +534,8 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
533
534
  if (typeof props === "string") {
534
535
  combinedProps = { ...others, id: props } as PropertiesOf<Field>;
535
536
  } else {
536
- combinedProps = { ...props, ...others } as PropertiesOf<Field>;
537
+ combinedProps = { ...props } as PropertiesOf<Field>;
538
+ scope = others as never;
537
539
  }
538
540
 
539
541
  const { _flexId, vhIdPrefix, idPrefix, id, _apiId } = combinedProps;
@@ -557,7 +559,7 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
557
559
  }
558
560
  }
559
561
  }
560
- super(combinedProps);
562
+ super(combinedProps, scope);
561
563
  }
562
564
 
563
565
  override applySettings(mSettings: PropertiesOf<Field, "change" | "liveChange" | "focusin">, oScope?: object): this {
@@ -10,6 +10,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
10
10
  var controllerExtensionHandler = HookSupport.controllerExtensionHandler;
11
11
  var UI = BindingHelper.UI;
12
12
  var Draft = BindingHelper.Draft;
13
+ var getCreateNextButtonVisibility = Action.getCreateNextButtonVisibility;
13
14
  var aiIcon = Action.aiIcon;
14
15
  var isActionWithDialog = DataField.isActionWithDialog;
15
16
  var getInvolvedDataModelObjects = MetaModelConverter.getInvolvedDataModelObjects;
@@ -240,7 +241,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
240
241
  text: "{sap.fe.i18n>C_COMMON_OBJECT_PAGE_CREATE_NEXT}",
241
242
  press: controller.editFlow.createNextDocument,
242
243
  type: emphasizedExpression,
243
- visible: ifElse(this._hiddenDraft === true, ifElse(viewData.fclEnabled === true, and(Draft.IsNewObject, equal(pathInModel("/showSaveAndCancelButton", "fclhelper"), true)), Draft.IsNewObject), Draft.IsNewObject),
244
+ visible: getCreateNextButtonVisibility(this._hiddenDraft, viewData.fclEnabled === true),
244
245
  enabled: true,
245
246
  "dt:designtime": "not-adaptable",
246
247
  children: {
@@ -452,4 +453,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
452
453
  _exports = FooterContent;
453
454
  return _exports;
454
455
  }, false);
455
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb290ZXJDb250ZW50IiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOCIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2hpZGVDcmVhdGVOZXh0IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiX2hpZGRlbkRyYWZ0IiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwidmlld0NvbnRleHQiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc05ld09iamVjdCIsImVkaXRGbG93IiwiaXNSb290Q29udGV4dE5ldyIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJpbml0aWFsaXplIiwib3duZXIiLCJzZXRNb2RlbCIsIkpTT05Nb2RlbCIsImFjdGlvbnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiYmluZGluZ0NvbnRleHRzIiwiY29udmVydGVyQ29udGV4dCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoVG9Vc2UiLCJmdWxsQ29udGV4dFBhdGgiLCJvRGF0YU1ldGFNb2RlbCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImRhdGFWaWV3TW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJpc0RyYWZ0VmFsaWRhdGlvbiIsIk1vZGVsSGVscGVyIiwiZ2V0RHJhZnRSb290IiwiUHJlcGFyYXRpb25BY3Rpb24iLCJlbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJNZXNzYWdlcyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImdldEFwcENvbXBvbmVudCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwiaGlkZUNyZWF0ZU5leHQiLCJnZXRBY3Rpb25Nb2RlbFBhdGgiLCJhY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImFjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidW5kZWZpbmVkIiwiZ2V0RHJhZnRJbmRpY2F0b3IiLCJlbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjb21tb25Bbm5vdGF0aW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2pzeCIsIkRyYWZ0SW5kaWNhdG9yIiwic3RhdGUiLCJ2aXNpYmxlIiwiZ2V0QXBwbHlCdXR0b24iLCJlbXBoYXNpemVkRXhwcmVzc2lvbiIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJpc0Rlc2t0b3AiLCJmY2xFbmFibGVkIiwiTWVudUJ1dHRvbiIsInRleHQiLCJkZWZhdWx0QWN0aW9uIiwiX2FwcGx5RG9jdW1lbnQiLCJ1c2VEZWZhdWx0QWN0aW9uT25seSIsImJ1dHRvbk1vZGUiLCJjaGlsZHJlbiIsIk1lbnUiLCJNZW51SXRlbSIsInByZXNzIiwiX3ZhbGlkYXRlRG9jdW1lbnQiLCJCdXR0b24iLCJpZCIsImNyZWF0ZUlkIiwiZ2V0UHJpbWFyeSIsImhpZGRlbkRyYWZ0IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsInJlZiIsImNtZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiX3NhdmVEb2N1bWVudCIsIm9yIiwiaWZFbHNlIiwiYW5kIiwiVUkiLCJJc0VkaXRhYmxlIiwiZXF1YWwiLCJwYXRoSW5Nb2RlbCIsImdldFRleHRTYXZlQnV0dG9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJsYXlvdXREYXRhIiwiT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSIsInByaW9yaXR5IiwiZ3JvdXAiLCJzYXZlQnV0dG9uVGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY3JlYXRlQnV0dG9uVGV4dCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldENhbmNlbEJ1dHRvbiIsIl9jYW5jZWxEb2N1bWVudCIsImNhbmNlbEJ1dHRvbiIsImlzRHJhZnRSb290IiwiYXJpYUhhc1BvcHVwIiwiY29uc3RhbnQiLCJjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbiIsImdldENyZWF0ZU5leHRCdXR0b24iLCJjcmVhdGVOZXh0RG9jdW1lbnQiLCJnZXRUb29sYmFyU2VwYXJhdG9yIiwiVG9vbGJhclNlcGFyYXRvciIsImdldERhdGFGaWVsZEZvckFjdGlvbkJ1dHRvbiIsInByZXNzRXZlbnQiLCJ2aWV3IiwiYW5ub3RhdGlvblBhdGhDb250ZXh0IiwiZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aCIsImRhdGFGaWVsZEZvckFjdGlvbiIsInRhcmdldE9iamVjdCIsImFjdGlvblBhcmFtZXRlcnMiLCJlbnRpdHlTZXROYW1lIiwibmFtZSIsImludm9jYXRpb25Hcm91cGluZyIsIkludm9jYXRpb25Hcm91cGluZyIsImxpYnJhcnkiLCJDaGFuZ2VTZXQiLCJJc29sYXRlZCIsImxhYmVsIiwiTGFiZWwiLCJ0b1N0cmluZyIsImlzTmF2aWdhYmxlIiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiZGlzYWJsZVN0cmljdEhhbmRsaW5nIiwiaGFuZGxlcnMiLCJvbkNhbGxBY3Rpb24iLCJBY3Rpb24iLCJjb250ZXh0cyIsIm1vZGVsIiwic3RhcnRzV2l0aCIsImlzQWN0aW9uV2l0aERpYWxvZyIsIkNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSIsImljb24iLCJpc0FJT3BlcmF0aW9uIiwiYWlJY29uIiwiYXJpYURlc2NyaWJlZEJ5IiwiZ2V0TWFuaWZlc3RCdXR0b24iLCJPYmplY3RQYWdlVGVtcGxhdGluZyIsImlzTWFuaWZlc3RBY3Rpb24iLCJldmVudCIsIkZQTUhlbHBlciIsImFjdGlvbldyYXBwZXIiLCJoYW5kbGVyTW9kdWxlIiwiaGFuZGxlck1ldGhvZCIsImNhdGNoIiwiZXJyb3IiLCJMb2ciLCJfanN4cyIsImdldEFjdGlvbkNvbnRyb2xzIiwiZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJidWlsZEVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uIiwibWFwIiwiQWN0aW9uVHlwZSIsIkRlZmF1bHRBcHBseSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsIlByaW1hcnkiLCJlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiU2Vjb25kYXJ5IiwiQ3JlYXRlTmV4dCIsIlNlcGFyYXRvciIsImZpbHRlciIsIm1lc3NhZ2VCdXR0b24iLCJNZXNzYWdlQnV0dG9uIiwibWVzc2FnZUNoYW5nZSIsIl9nZXRGb290ZXJWaXNpYmlsaXR5IiwiYXJpYUxhYmVsbGVkQnkiLCJmb290ZXJCYXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJhc3luY01vZGUiLCJJbnZpc2libGVUZXh0IiwiVG9vbGJhclNwYWNlciIsImZpcmVQcmVzcyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZvb3RlckNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZEZvckFjdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgaWZFbHNlLCBvciwgcGF0aEluTW9kZWwsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncywgSGlkZGVuRHJhZnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0FjdGlvbldpdGhEaWFsb2cgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGFpSWNvbiwgdHlwZSBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb3JlTGliIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBDcml0aWNhbGl0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJ1dHRvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZXNzYWdlcy9NZXNzYWdlQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IERyYWZ0SW5kaWNhdG9yIGZyb20gXCJzYXAvbS9EcmFmdEluZGljYXRvclwiO1xuaW1wb3J0IE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSW52aXNpYmxlVGV4dCBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0ICogYXMgT2JqZWN0UGFnZVRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhckxheW91dERhdGFcIjtcbmltcG9ydCBUb29sYmFyU2VwYXJhdG9yIGZyb20gXCJzYXAvbS9Ub29sYmFyU2VwYXJhdG9yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxudHlwZSBDb250cm9sbGVyV2l0aEFjdGlvbiA9IENvbnRyb2xsZXIgJiB7XG5cdGhhbmRsZXJzOiB7XG5cdFx0b25DYWxsQWN0aW9uOiBGdW5jdGlvbjtcblx0fTtcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRm9vdGVyQ29udGVudFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vdGVyQ29udGVudCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8T3ZlcmZsb3dUb29sYmFyPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5Ub29sYmFyXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfVG9vbGJhciA9IHRydWU7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5tLklCYXJcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JQmFyID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXTtcblxuXHRvRGF0YU1ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGRhdGFWaWV3TW9kZWxQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxFbnRpdHlTZXQ+O1xuXG5cdGlzRHJhZnRWYWxpZGF0aW9uITogYm9vbGVhbjtcblxuXHRfaGlkZGVuRHJhZnQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2hpZGVDcmVhdGVOZXh0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8Rm9vdGVyQ29udGVudD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdEBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcihcInJvdXRpbmdcIiwgXCJvbkFmdGVyQmluZGluZ1wiKVxuXHRwdWJsaWMgYXN5bmMgb25BZnRlckJpbmRpbmcodGhpczogRm9vdGVyQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCB2aWV3Q29udGV4dCA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRjb25zdCBpc05ld09iamVjdCA9IGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuaXNSb290Q29udGV4dE5ldyh2aWV3Q29udGV4dCk7XG5cdFx0XHQodGhpcy5nZXRNb2RlbChcImZvb3RlckludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXCIvcm9vdElzTmV3T2JqZWN0XCIsIGlzTmV3T2JqZWN0KTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHR0aGlzLnNldE1vZGVsKG5ldyBKU09OTW9kZWwoKSwgXCJmb290ZXJJbnRlcm5hbFwiKTtcblx0XHR0aGlzLmFjdGlvbnMgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uYmluZGluZ0NvbnRleHRzPy5jb252ZXJ0ZXJDb250ZXh0Py5nZXRPYmplY3QoXCJmb290ZXJBY3Rpb25zXCIpO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoVG9Vc2UgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdHRoaXMub0RhdGFNZXRhTW9kZWwgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHR0aGlzLmRhdGFWaWV3TW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLm1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlID8/IHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBzdGFydGluZ0VudGl0eVNldCA9IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0dGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiA9ICEhKFxuXHRcdFx0TW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290KHN0YXJ0aW5nRW50aXR5U2V0KT8uUHJlcGFyYXRpb25BY3Rpb24gJiYgc3RhcnRpbmdFbnRpdHlTZXQ/LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5NZXNzYWdlc1xuXHRcdCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHR0aGlzLl9oaWRlQ3JlYXRlTmV4dCA9XG5cdFx0XHQoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uaGlkZUNyZWF0ZU5leHQgPT09XG5cdFx0XHR0cnVlO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldEFjdGlvbk1vZGVsUGF0aChhY3Rpb246IEJhc2VBY3Rpb24pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0Y29uc3QgYWN0aW9uQ29udGV4dCA9IHRoaXMub0RhdGFNZXRhTW9kZWwuZ2V0Q29udGV4dChhbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZEZvckFjdGlvbj4oYWN0aW9uQ29udGV4dCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXREcmFmdEluZGljYXRvcigpOiBEcmFmdEluZGljYXRvciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gKHRoaXMuZGF0YVZpZXdNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0IHx8IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIGFzIEVudGl0eVNldDsgLy8gc3RhcnRpbmdFbnRpdHlTZXQgaXMgdXNlZCBvbiBjb250YWlubWVudCBzY2VuYXJpb1xuXHRcdGNvbnN0IGNvbW1vbkFubm90YXRpb24gPSBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRpZiAoKGNvbW1vbkFubm90YXRpb24/LkRyYWZ0Um9vdCB8fCBjb21tb25Bbm5vdGF0aW9uPy5EcmFmdE5vZGUpICYmICF0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0cmV0dXJuIDxEcmFmdEluZGljYXRvciBzdGF0ZT1cInt1aT4vZHJhZnRTdGF0dXN9XCIgdmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIiAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QXBwbHlCdXR0b24oZW1waGFzaXplZEV4cHJlc3Npb246IFByb3BlcnR5QmluZGluZ0luZm8pOiBCdXR0b24gfCBNZW51QnV0dG9uIHwgbnVsbCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGlmICgodmlld0RhdGE/LnZpZXdMZXZlbCAhPSBudWxsICYmIHZpZXdEYXRhPy52aWV3TGV2ZWwgPD0gMSkgfHwgdGhpcy5faGlkZGVuRHJhZnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wICYmICF2aWV3RGF0YS5mY2xFbmFibGVkKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl9hcHBseURvY3VtZW50KGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0dXNlRGVmYXVsdEFjdGlvbk9ubHk9XCJ0cnVlXCJcblx0XHRcdFx0XHRidXR0b25Nb2RlPVwiU3BsaXRcIlxuXHRcdFx0XHRcdHR5cGU9e2VtcGhhc2l6ZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9XCJub3QtYWRhcHRhYmxlXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51PlxuXHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfVkFMSURBVEVfRFJBRlR9XCJcblx0XHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl92YWxpZGF0ZURvY3VtZW50KCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9NZW51QnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6QXBwbHlcIil9XG5cdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fYXBwbHlEb2N1bWVudChjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFByaW1hcnkoZW1waGFzaXplZEV4cHJlc3Npb24/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvLCBhY3Rpb24/OiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgTWVudUJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IGhpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJTYXZlXCJcblx0XHRcdFx0XHRleGVjdXRlPXtjb250cm9sbGVyLl9zYXZlRG9jdW1lbnR9XG5cdFx0XHRcdFx0dmlzaWJsZT17b3IoXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIi9pc0lubGluZUVkaXRBY3RpdmVcIiwgXCJ1aVwiKSwgdHJ1ZSlcblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0XHRqc3g6Y29tbWFuZD1cImNtZDpTYXZlfGRlZmF1bHRBY3Rpb25cIlxuXHRcdFx0XHRcdHVzZURlZmF1bHRBY3Rpb25Pbmx5PVwidHJ1ZVwiXG5cdFx0XHRcdFx0YnV0dG9uTW9kZT1cIlNwbGl0XCJcblx0XHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR2aXNpYmxlPXtjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PE1lbnU+XG5cdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0dGV4dD1cIntzYXAuZmUuaTE4bj5UX0NPTU1PTl9PQkpFQ1RfUEFHRV9WQUxJREFURV9EUkFGVH1cIlxuXHRcdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNvbnRyb2xsZXIuX3ZhbGlkYXRlRG9jdW1lbnQoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L01lbnVCdXR0b24+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiU3RhbmRhcmRBY3Rpb246OlNhdmVcIil9XG5cdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOlNhdmV8cHJlc3NcIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24/Lmdyb3VwfT48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUZXh0U2F2ZUJ1dHRvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3Qgc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9TQVZFXCIpO1xuXHRcdGNvbnN0IGNyZWF0ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9DUkVBVEVcIik7XG5cdFx0Ly8gSWYgd2UncmUgaW4gc3RpY2t5IG1vZGUgIC0+IHRoZSB1aSBpcyBpbiBjcmVhdGUgbW9kZSwgc2hvdyBDcmVhdGUsIGVsc2Ugc2hvdyBTYXZlXG5cdFx0Ly8gSWYgbm90IC0+IHdlJ3JlIGluIGRyYWZ0IG9yIGhpZGRlbiBkcmFmdFxuXHRcdC8vIEluIGNhc2Ugb2YgZHJhZnQgaWYgaXQgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSksIHNob3cgY3JlYXRlLCBlbHNlIHNob3cgc2F2ZVxuXHRcdC8vIEluIGNhc2Ugb2YgaGlkZGVuIGRyYWZ0IHRoZSBidXR0b24gc2hvd3MgdXAgaW4gYWxsIHBhZ2VzIGFuZCBmb2xsb3dzIHRoZSBiZWxvdyBjcml0ZXJpYVxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vdCBvYmplY3QgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSkgdGhlbiBhbGwgcGFnZXMgc2hvdWxkIHNob3cgQ3JlYXRlLlxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vciBvYmplY3QgaXMgbm90IGEgbmV3IG9iamVjdCB0aGVuIGFsbCBwYWdlcyBzaG91bGQgc2hvdyBTYXZlLlxuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IGFzIEVudGl0eVNldCkuYW5ub3RhdGlvbnMuU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRVSS5Jc0NyZWF0ZU1vZGUsXG5cdFx0XHRcdGlmRWxzZSh0aGlzLl9oaWRkZW5EcmFmdCwgYW5kKHBhdGhJbk1vZGVsKFwiL3Jvb3RJc05ld09iamVjdFwiLCBcImZvb3RlckludGVybmFsXCIpKSwgRHJhZnQuSXNOZXdPYmplY3QpXG5cdFx0XHQpLFxuXHRcdFx0Y3JlYXRlQnV0dG9uVGV4dCxcblx0XHRcdHNhdmVCdXR0b25UZXh0XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q2FuY2VsQnV0dG9uKGFjdGlvbj86IEJhc2VBY3Rpb24pOiBCdXR0b24gfCBudWxsIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBoaWRkZW5EcmFmdCA9IChjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdGNvbW1hbmQ9XCJDYW5jZWxcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5fY2FuY2VsRG9jdW1lbnQoeyBjYW5jZWxCdXR0b246IFwiZmU6OkZvb3RlckJhcjo6U3RhbmRhcmRBY3Rpb246OkNhbmNlbFwiIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHR2aXNpYmxlPXtpZkVsc2UoXG5cdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHQpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdC8vIE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgc2V0dGluZyBpcyBuZWVkZWQgd2hlbiB0aGUgZGlzY2FyZCBidXR0b24gaXMgaW4gdGhlIG92ZXJmbG93XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6Q2FuY2VsXCIpfVxuXHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRNb2RlbEhlbHBlci5pc0RyYWZ0Um9vdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCkgJiYgIXRoaXMuX2hpZGRlbkRyYWZ0XG5cdFx0XHRcdFx0XHQ/IFwie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU0NBUkRfRFJBRlR9XCJcblx0XHRcdFx0XHRcdDogXCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fT0JKRUNUX1BBR0VfQ0FOQ0VMfVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0anN4OmNvbW1hbmQ9XCJjbWQ6Q2FuY2VsfHByZXNzXCJcblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0YXJpYUhhc1BvcHVwPXtpZkVsc2UocGF0aEluTW9kZWwoXCIvaXNEb2N1bWVudE1vZGlmaWVkXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRGlhbG9nXCIpLCBjb25zdGFudChcIk5vbmVcIikpfVxuXHRcdFx0XHRlbmFibGVkPXt0cnVlfVxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGFcblx0XHRcdFx0XHRcdFx0cHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9XG5cdFx0XHRcdFx0XHRcdGNsb3NlT3ZlcmZsb3dPbkludGVyYWN0aW9uPXtmYWxzZX1cblx0XHRcdFx0XHRcdD48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q3JlYXRlTmV4dEJ1dHRvbihlbXBoYXNpemVkRXhwcmVzc2lvbjogUHJvcGVydHlCaW5kaW5nSW5mbyk6IEJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIlN0YW5kYXJkQWN0aW9uOjpDcmVhdGVOZXh0XCIpfVxuXHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5DX0NPTU1PTl9PQkpFQ1RfUEFHRV9DUkVBVEVfTkVYVH1cIn1cblx0XHRcdFx0cHJlc3M9e2NvbnRyb2xsZXIuZWRpdEZsb3cuY3JlYXRlTmV4dERvY3VtZW50fVxuXHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmlzaWJsZT17aWZFbHNlKFxuXHRcdFx0XHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRhbmQoRHJhZnQuSXNOZXdPYmplY3QsIGVxdWFsKHBhdGhJbk1vZGVsKFwiL3Nob3dTYXZlQW5kQ2FuY2VsQnV0dG9uXCIsIFwiZmNsaGVscGVyXCIpLCB0cnVlKSksXG5cdFx0XHRcdFx0XHREcmFmdC5Jc05ld09iamVjdFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0RHJhZnQuSXNOZXdPYmplY3Rcblx0XHRcdFx0KX1cblx0XHRcdFx0ZW5hYmxlZD17dHJ1ZX1cblx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0PlxuXHRcdFx0XHR7eyBsYXlvdXREYXRhOiA8T3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbj17ZmFsc2V9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT4gfX1cblx0XHRcdDwvQnV0dG9uPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFRvb2xiYXJTZXBhcmF0b3IoYWN0aW9uOiBCYXNlQWN0aW9uKTogVG9vbGJhclNlcGFyYXRvciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxUb29sYmFyU2VwYXJhdG9yPlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0fX1cblx0XHRcdDwvVG9vbGJhclNlcGFyYXRvcj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24oYWN0aW9uOiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoYWN0aW9uLmFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGhDb250ZXh0ID0gdGhpcy5vRGF0YU1ldGFNb2RlbC5nZXRDb250ZXh0KGFubm90YXRpb25QYXRoKTtcblx0XHRcdGNvbnN0IGRhdGFGaWVsZENvbnRleHRNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkRm9yQWN0aW9uPihhbm5vdGF0aW9uUGF0aENvbnRleHQpO1xuXHRcdFx0Y29uc3QgZGF0YUZpZWxkRm9yQWN0aW9uID0gZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRpZiAoZGF0YUZpZWxkRm9yQWN0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvblBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0TmFtZTogdGhpcy5kYXRhVmlld01vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUsXG5cdFx0XHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nOlxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkRm9yQWN0aW9uLkludm9jYXRpb25Hcm91cGluZyA9PT0gXCJVSS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0PyAobGlicmFyeSBhcyBDb3JlTGliKS5JbnZvY2F0aW9uR3JvdXBpbmcuQ2hhbmdlU2V0XG5cdFx0XHRcdFx0XHRcdDogKGxpYnJhcnkgYXMgQ29yZUxpYikuSW52b2NhdGlvbkdyb3VwaW5nLklzb2xhdGVkLFxuXHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGRGb3JBY3Rpb24uTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGFjdGlvbi5pc05hdmlnYWJsZSxcblx0XHRcdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24sXG5cdFx0XHRcdFx0ZGlzYWJsZVN0cmljdEhhbmRsaW5nOiBhY3Rpb24uZGlzYWJsZVN0cmljdEhhbmRsaW5nXG5cdFx0XHRcdH07XG5cdFx0XHRcdGlmICghYWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdFx0XHRwcmVzc0V2ZW50ID0ge1xuXHRcdFx0XHRcdFx0cHJlc3M6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0KGNvbnRyb2xsZXIgYXMgQ29udHJvbGxlcldpdGhBY3Rpb24pLmhhbmRsZXJzLm9uQ2FsbEFjdGlvbih2aWV3LCBkYXRhRmllbGRGb3JBY3Rpb24uQWN0aW9uIGFzIHN0cmluZywge1xuXHRcdFx0XHRcdFx0XHRcdC4uLmFjdGlvblBhcmFtZXRlcnMsXG5cdFx0XHRcdFx0XHRcdFx0Li4ue1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGV4dHM6IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdFx0XHRcdFx0XHRcdG1vZGVsOiB2aWV3LmdldE1vZGVsKClcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gY29tbWFuZCBjb21pbmcgZnJvbSB0aGUgbWFuaWZlc3QgZG9lc24ndCBnZXQgdGhlIG1hbmRhdG9yeSBwcmVmaXggXCJjbWQ6XCIgc28gd2UgbmVlZCB0byBhZGQgaXRcblx0XHRcdFx0XHRpZiAoIWFjdGlvbi5jb21tYW5kLnN0YXJ0c1dpdGgoXCJjbWQ6XCIpKSB7XG5cdFx0XHRcdFx0XHRhY3Rpb24uY29tbWFuZCA9IGBjbWQ6JHthY3Rpb24uY29tbWFuZH1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwcmVzc0V2ZW50ID0geyBcImpzeDpjb21tYW5kXCI6IGAke2FjdGlvbi5jb21tYW5kfXxwcmVzc2AgYXMgQ29tbWFuZFByb3BlcnRpZXMgfTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKHRoaXMuZ2V0QWN0aW9uTW9kZWxQYXRoKGFjdGlvbikpfVxuXHRcdFx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGNvbnNpZGVycyBhY3Rpb25zIHdpdGggZHluYW1pYyB2aXNpYmlsaXR5LlxuXHRcdFx0XHRcdFx0Ly8gV2hlbiB3ZSBoYXZlIG90aGVyIHZhbHVlcyB0aGFuIHRydWUgb3IgZmFsc2UsIGkuZS4gYW4gZXhwcmVzc2lvbiwgd2UgZXhjbHVkZSB0aGUgYWN0aW9ucyBmcm9tIGFkYXB0aW5nIHRoZSB2aXNpYmlsaXR5LlxuXHRcdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT17YWN0aW9uLnZpc2libGUgPT09IFwidHJ1ZVwiIHx8IGFjdGlvbi52aXNpYmxlID09PSBcImZhbHNlXCIgPyB1bmRlZmluZWQgOiBcIm5vdC1hZGFwdGFibGUtdmlzaWJpbGl0eVwifVxuXHRcdFx0XHRcdFx0dGV4dD17YWN0aW9uUGFyYW1ldGVycy5sYWJlbH1cblx0XHRcdFx0XHRcdHsuLi5wcmVzc0V2ZW50fVxuXHRcdFx0XHRcdFx0YXJpYUhhc1BvcHVwPXtpc0FjdGlvbldpdGhEaWFsb2coZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aC50YXJnZXRPYmplY3QpfVxuXHRcdFx0XHRcdFx0dmlzaWJsZT17YWN0aW9uLnZpc2libGV9XG5cdFx0XHRcdFx0XHRlbmFibGVkPXthY3Rpb24uZW5hYmxlZH1cblx0XHRcdFx0XHRcdHR5cGU9e0NyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUoZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aCl9XG5cdFx0XHRcdFx0XHRpY29uPXthY3Rpb24/LmlzQUlPcGVyYXRpb24gPT09IHRydWUgPyBhaUljb24gOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0XHRhcmlhRGVzY3JpYmVkQnk9e2FjdGlvbj8uaXNBSU9wZXJhdGlvbiA9PT0gdHJ1ZSA/IFtcImZlOjpBaUFjdGlvbjo6QXJpYVRleHRcIl0gOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXthY3Rpb24ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldE1hbmlmZXN0QnV0dG9uKGFjdGlvbjogQmFzZUFjdGlvbik6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKE9iamVjdFBhZ2VUZW1wbGF0aW5nLmlzTWFuaWZlc3RBY3Rpb24oYWN0aW9uKSkge1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0aWYgKGFjdGlvbi5jb21tYW5kKSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYGNtZDoke2FjdGlvbi5jb21tYW5kfXxwcmVzc2AgfTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0cHJlc3M6IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdEZQTUhlbHBlci5hY3Rpb25XcmFwcGVyKGV2ZW50LCBhY3Rpb24uaGFuZGxlck1vZHVsZSwgYWN0aW9uLmhhbmRsZXJNZXRob2QsIHt9KS5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChhY3Rpb24uaWQpfVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9e2FjdGlvbi52aXNpYmxlID09PSBcInRydWVcIiB8fCBhY3Rpb24udmlzaWJsZSA9PT0gXCJmYWxzZVwiID8gdW5kZWZpbmVkIDogXCJub3QtYWRhcHRhYmxlLXZpc2liaWxpdHlcIn1cblx0XHRcdFx0XHR0ZXh0PXthY3Rpb24udGV4dCA/PyBcIlwifVxuXHRcdFx0XHRcdHsuLi5wcmVzc0V2ZW50fVxuXHRcdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0dmlzaWJsZT17YWN0aW9uLnZpc2libGV9XG5cdFx0XHRcdFx0ZW5hYmxlZD17YWN0aW9uLmVuYWJsZWR9XG5cdFx0XHRcdFx0aWNvbj17YWN0aW9uPy5pc0FJT3BlcmF0aW9uID09PSB0cnVlID8gYWlJY29uIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRcdGFyaWFEZXNjcmliZWRCeT17YWN0aW9uPy5pc0FJT3BlcmF0aW9uID09PSB0cnVlID8gW1wiZmU6OkFpQWN0aW9uOjpBcmlhVGV4dFwiXSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYXlvdXREYXRhOiA8T3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBwcmlvcml0eT17YWN0aW9uLnByaW9yaXR5fSBncm91cD17YWN0aW9uLmdyb3VwfT48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0XHTigJpcblx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGdldEFjdGlvbkNvbnRyb2xzKCk6IEJ1dHRvbltdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbiA9IE9iamVjdFBhZ2VUZW1wbGF0aW5nLmJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24odGhpcy5kYXRhVmlld01vZGVsUGF0aCk7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aW9uc1xuXHRcdFx0Py5tYXAoKGFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLkRlZmF1bHRBcHBseTpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldEFwcGx5QnV0dG9uKGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkRm9yQWN0aW9uQnV0dG9uKGFjdGlvbik7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLlByaW1hcnk6XG5cdFx0XHRcdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRcdFx0XHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRcdFx0XHRcdGNvbnN0IHZpZXdMZXZlbCA9IHZpZXdEYXRhPy52aWV3TGV2ZWwgPz8gMDtcblx0XHRcdFx0XHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCAmJiAhdGhpcy5faGlkZUNyZWF0ZU5leHQgJiYgdmlld0xldmVsID4gMSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCA9IGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyByZXNvbHZlQmluZGluZ1N0cmluZyhlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbilcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0UHJpbWFyeShjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoRHJhZnQuSXNOZXdPYmplY3QsIHVuZGVmaW5lZCwgZW1waGFzaXplZEJ1dHRvblRvb2xLaXRFeHApKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcmltYXJ5KGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uLCBhY3Rpb24pO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5TZWNvbmRhcnk6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRDYW5jZWxCdXR0b24oYWN0aW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuQ3JlYXRlTmV4dDpcblx0XHRcdFx0XHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCAmJiAhdGhpcy5faGlkZUNyZWF0ZU5leHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZW1waGFzaXplZEJ1dHRvblRvb2xLaXRFeHAgPSBlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvblxuXHRcdFx0XHRcdFx0XHRcdD8gcmVzb2x2ZUJpbmRpbmdTdHJpbmcoZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24pXG5cdFx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldENyZWF0ZU5leHRCdXR0b24oXG5cdFx0XHRcdFx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKERyYWZ0LklzTmV3T2JqZWN0LCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCwgdW5kZWZpbmVkKSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuU2VwYXJhdG9yOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VG9vbGJhclNlcGFyYXRvcihhY3Rpb24pO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRNYW5pZmVzdEJ1dHRvbihhY3Rpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigoYWN0aW9uKTogYWN0aW9uIGlzIEJ1dHRvbiA9PiAhIWFjdGlvbik7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE92ZXJmbG93VG9vbGJhciB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnN0IG1lc3NhZ2VCdXR0b246IE1lc3NhZ2VCdXR0b24gPSAoXG5cdFx0XHQ8TWVzc2FnZUJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIk1lc3NhZ2VCdXR0b25cIil9XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdG1lc3NhZ2VDaGFuZ2U9eygpOiB2b2lkID0+IGNvbnRyb2xsZXIuX2dldEZvb3RlclZpc2liaWxpdHkoKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmNyZWF0ZUlkKFwiTWVzc2FnZUJ1dHRvbjo6QXJpYVRleHRcIikgYXMgc3RyaW5nXX1cblx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRhcmlhSGFzUG9wdXA9XCJEaWFsb2dcIlxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdGNvbnN0IGZvb3RlckJhciA9IChcblx0XHRcdDxPdmVyZmxvd1Rvb2xiYXIgaWQ9e3RoaXMuY3JlYXRlSWQoXCJfZmNcIil9IGFzeW5jTW9kZT17dHJ1ZX0+XG5cdFx0XHRcdDxJbnZpc2libGVUZXh0XG5cdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJNZXNzYWdlQnV0dG9uOjpBcmlhVGV4dFwiKX1cblx0XHRcdFx0XHR0ZXh0PVwie3NhcC5mZS5pMThuPkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfQlVUVE9OX0FSSUFfVEVYVH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHR7bWVzc2FnZUJ1dHRvbn1cblx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0e3RoaXMuZ2V0RHJhZnRJbmRpY2F0b3IoKX1cblx0XHRcdFx0e3RoaXMuZ2V0QWN0aW9uQ29udHJvbHMoKX1cblx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdCk7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJPcGVuTWVzc2FnZUJ1dHRvbk1lbnVcIlxuXHRcdFx0XHRcdGV4ZWN1dGU9eygpOiBNZXNzYWdlQnV0dG9uID0+IG1lc3NhZ2VCdXR0b24uZmlyZVByZXNzKCl9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdHJldHVybiBmb290ZXJCYXI7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0NBO0VBR0E7RUFBQSxJQWFxQkEsYUFBYSxJQUFBQyxJQUFBLEdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUU1Q0Msa0JBQWtCLENBQUMscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUd6Q0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUFFLEtBQUEsR0FHaENDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdESCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFFLEtB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
456
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb290ZXJDb250ZW50IiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOCIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2hpZGVDcmVhdGVOZXh0IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiX2hpZGRlbkRyYWZ0IiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwidmlld0NvbnRleHQiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc05ld09iamVjdCIsImVkaXRGbG93IiwiaXNSb290Q29udGV4dE5ldyIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJpbml0aWFsaXplIiwib3duZXIiLCJzZXRNb2RlbCIsIkpTT05Nb2RlbCIsImFjdGlvbnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiYmluZGluZ0NvbnRleHRzIiwiY29udmVydGVyQ29udGV4dCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoVG9Vc2UiLCJmdWxsQ29udGV4dFBhdGgiLCJvRGF0YU1ldGFNb2RlbCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImRhdGFWaWV3TW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJpc0RyYWZ0VmFsaWRhdGlvbiIsIk1vZGVsSGVscGVyIiwiZ2V0RHJhZnRSb290IiwiUHJlcGFyYXRpb25BY3Rpb24iLCJlbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJNZXNzYWdlcyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImdldEFwcENvbXBvbmVudCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwiaGlkZUNyZWF0ZU5leHQiLCJnZXRBY3Rpb25Nb2RlbFBhdGgiLCJhY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImFjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidW5kZWZpbmVkIiwiZ2V0RHJhZnRJbmRpY2F0b3IiLCJlbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjb21tb25Bbm5vdGF0aW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2pzeCIsIkRyYWZ0SW5kaWNhdG9yIiwic3RhdGUiLCJ2aXNpYmxlIiwiZ2V0QXBwbHlCdXR0b24iLCJlbXBoYXNpemVkRXhwcmVzc2lvbiIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJpc0Rlc2t0b3AiLCJmY2xFbmFibGVkIiwiTWVudUJ1dHRvbiIsInRleHQiLCJkZWZhdWx0QWN0aW9uIiwiX2FwcGx5RG9jdW1lbnQiLCJ1c2VEZWZhdWx0QWN0aW9uT25seSIsImJ1dHRvbk1vZGUiLCJjaGlsZHJlbiIsIk1lbnUiLCJNZW51SXRlbSIsInByZXNzIiwiX3ZhbGlkYXRlRG9jdW1lbnQiLCJCdXR0b24iLCJpZCIsImNyZWF0ZUlkIiwiZ2V0UHJpbWFyeSIsImhpZGRlbkRyYWZ0IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsInJlZiIsImNtZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiX3NhdmVEb2N1bWVudCIsIm9yIiwiaWZFbHNlIiwiYW5kIiwiVUkiLCJJc0VkaXRhYmxlIiwiZXF1YWwiLCJwYXRoSW5Nb2RlbCIsImdldFRleHRTYXZlQnV0dG9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJsYXlvdXREYXRhIiwiT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSIsInByaW9yaXR5IiwiZ3JvdXAiLCJzYXZlQnV0dG9uVGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY3JlYXRlQnV0dG9uVGV4dCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldENhbmNlbEJ1dHRvbiIsIl9jYW5jZWxEb2N1bWVudCIsImNhbmNlbEJ1dHRvbiIsImlzRHJhZnRSb290IiwiYXJpYUhhc1BvcHVwIiwiY29uc3RhbnQiLCJjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbiIsImdldENyZWF0ZU5leHRCdXR0b24iLCJjcmVhdGVOZXh0RG9jdW1lbnQiLCJnZXRDcmVhdGVOZXh0QnV0dG9uVmlzaWJpbGl0eSIsImdldFRvb2xiYXJTZXBhcmF0b3IiLCJUb29sYmFyU2VwYXJhdG9yIiwiZ2V0RGF0YUZpZWxkRm9yQWN0aW9uQnV0dG9uIiwicHJlc3NFdmVudCIsInZpZXciLCJhbm5vdGF0aW9uUGF0aENvbnRleHQiLCJkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoIiwiZGF0YUZpZWxkRm9yQWN0aW9uIiwidGFyZ2V0T2JqZWN0IiwiYWN0aW9uUGFyYW1ldGVycyIsImVudGl0eVNldE5hbWUiLCJuYW1lIiwiaW52b2NhdGlvbkdyb3VwaW5nIiwiSW52b2NhdGlvbkdyb3VwaW5nIiwibGlicmFyeSIsIkNoYW5nZVNldCIsIklzb2xhdGVkIiwibGFiZWwiLCJMYWJlbCIsInRvU3RyaW5nIiwiaXNOYXZpZ2FibGUiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJkaXNhYmxlU3RyaWN0SGFuZGxpbmciLCJoYW5kbGVycyIsIm9uQ2FsbEFjdGlvbiIsIkFjdGlvbiIsImNvbnRleHRzIiwibW9kZWwiLCJzdGFydHNXaXRoIiwiaXNBY3Rpb25XaXRoRGlhbG9nIiwiQ3JpdGljYWxpdHlGb3JtYXR0ZXJzIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlIiwiaWNvbiIsImlzQUlPcGVyYXRpb24iLCJhaUljb24iLCJhcmlhRGVzY3JpYmVkQnkiLCJnZXRNYW5pZmVzdEJ1dHRvbiIsIk9iamVjdFBhZ2VUZW1wbGF0aW5nIiwiaXNNYW5pZmVzdEFjdGlvbiIsImV2ZW50IiwiRlBNSGVscGVyIiwiYWN0aW9uV3JhcHBlciIsImhhbmRsZXJNb2R1bGUiLCJoYW5kbGVyTWV0aG9kIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsIl9qc3hzIiwiZ2V0QWN0aW9uQ29udHJvbHMiLCJlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbiIsImJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJtYXAiLCJBY3Rpb25UeXBlIiwiRGVmYXVsdEFwcGx5IiwiRGF0YUZpZWxkRm9yQWN0aW9uIiwiUHJpbWFyeSIsImVtcGhhc2l6ZWRCdXR0b25Ub29sS2l0RXhwIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJTZWNvbmRhcnkiLCJDcmVhdGVOZXh0IiwiU2VwYXJhdG9yIiwiZmlsdGVyIiwibWVzc2FnZUJ1dHRvbiIsIk1lc3NhZ2VCdXR0b24iLCJtZXNzYWdlQ2hhbmdlIiwiX2dldEZvb3RlclZpc2liaWxpdHkiLCJhcmlhTGFiZWxsZWRCeSIsImZvb3RlckJhciIsIk92ZXJmbG93VG9vbGJhciIsImFzeW5jTW9kZSIsIkludmlzaWJsZVRleHQiLCJUb29sYmFyU3BhY2VyIiwiZmlyZVByZXNzIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRm9vdGVyQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkRm9yQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGVxdWFsLCBpZkVsc2UsIG9yLCBwYXRoSW5Nb2RlbCwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGRlZmluZVJlZmVyZW5jZSwgZGVmaW5lVUk1Q2xhc3MsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJvcGVydGllcywgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCBDb21tYW5kRXhlY3V0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9Db21tYW5kRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VNYW5pZmVzdFNldHRpbmdzLCBIaWRkZW5EcmFmdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGlzQWN0aW9uV2l0aERpYWxvZyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHsgYWlJY29uLCBnZXRDcmVhdGVOZXh0QnV0dG9uVmlzaWJpbGl0eSwgdHlwZSBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb3JlTGliIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBDcml0aWNhbGl0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJ1dHRvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZXNzYWdlcy9NZXNzYWdlQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IERyYWZ0SW5kaWNhdG9yIGZyb20gXCJzYXAvbS9EcmFmdEluZGljYXRvclwiO1xuaW1wb3J0IE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSW52aXNpYmxlVGV4dCBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0ICogYXMgT2JqZWN0UGFnZVRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhckxheW91dERhdGFcIjtcbmltcG9ydCBUb29sYmFyU2VwYXJhdG9yIGZyb20gXCJzYXAvbS9Ub29sYmFyU2VwYXJhdG9yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxudHlwZSBDb250cm9sbGVyV2l0aEFjdGlvbiA9IENvbnRyb2xsZXIgJiB7XG5cdGhhbmRsZXJzOiB7XG5cdFx0b25DYWxsQWN0aW9uOiBGdW5jdGlvbjtcblx0fTtcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRm9vdGVyQ29udGVudFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vdGVyQ29udGVudCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8T3ZlcmZsb3dUb29sYmFyPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5Ub29sYmFyXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfVG9vbGJhciA9IHRydWU7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5tLklCYXJcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JQmFyID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXTtcblxuXHRvRGF0YU1ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGRhdGFWaWV3TW9kZWxQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxFbnRpdHlTZXQ+O1xuXG5cdGlzRHJhZnRWYWxpZGF0aW9uITogYm9vbGVhbjtcblxuXHRfaGlkZGVuRHJhZnQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2hpZGVDcmVhdGVOZXh0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8Rm9vdGVyQ29udGVudD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdEBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcihcInJvdXRpbmdcIiwgXCJvbkFmdGVyQmluZGluZ1wiKVxuXHRwdWJsaWMgYXN5bmMgb25BZnRlckJpbmRpbmcodGhpczogRm9vdGVyQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCB2aWV3Q29udGV4dCA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRjb25zdCBpc05ld09iamVjdCA9IGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuaXNSb290Q29udGV4dE5ldyh2aWV3Q29udGV4dCk7XG5cdFx0XHQodGhpcy5nZXRNb2RlbChcImZvb3RlckludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXCIvcm9vdElzTmV3T2JqZWN0XCIsIGlzTmV3T2JqZWN0KTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHR0aGlzLnNldE1vZGVsKG5ldyBKU09OTW9kZWwoKSwgXCJmb290ZXJJbnRlcm5hbFwiKTtcblx0XHR0aGlzLmFjdGlvbnMgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uYmluZGluZ0NvbnRleHRzPy5jb252ZXJ0ZXJDb250ZXh0Py5nZXRPYmplY3QoXCJmb290ZXJBY3Rpb25zXCIpO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoVG9Vc2UgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdHRoaXMub0RhdGFNZXRhTW9kZWwgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHR0aGlzLmRhdGFWaWV3TW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLm1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlID8/IHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBzdGFydGluZ0VudGl0eVNldCA9IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0dGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiA9ICEhKFxuXHRcdFx0TW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290KHN0YXJ0aW5nRW50aXR5U2V0KT8uUHJlcGFyYXRpb25BY3Rpb24gJiYgc3RhcnRpbmdFbnRpdHlTZXQ/LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5NZXNzYWdlc1xuXHRcdCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHR0aGlzLl9oaWRlQ3JlYXRlTmV4dCA9XG5cdFx0XHQoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uaGlkZUNyZWF0ZU5leHQgPT09XG5cdFx0XHR0cnVlO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldEFjdGlvbk1vZGVsUGF0aChhY3Rpb246IEJhc2VBY3Rpb24pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0Y29uc3QgYWN0aW9uQ29udGV4dCA9IHRoaXMub0RhdGFNZXRhTW9kZWwuZ2V0Q29udGV4dChhbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZEZvckFjdGlvbj4oYWN0aW9uQ29udGV4dCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXREcmFmdEluZGljYXRvcigpOiBEcmFmdEluZGljYXRvciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gKHRoaXMuZGF0YVZpZXdNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0IHx8IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIGFzIEVudGl0eVNldDsgLy8gc3RhcnRpbmdFbnRpdHlTZXQgaXMgdXNlZCBvbiBjb250YWlubWVudCBzY2VuYXJpb1xuXHRcdGNvbnN0IGNvbW1vbkFubm90YXRpb24gPSBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRpZiAoKGNvbW1vbkFubm90YXRpb24/LkRyYWZ0Um9vdCB8fCBjb21tb25Bbm5vdGF0aW9uPy5EcmFmdE5vZGUpICYmICF0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0cmV0dXJuIDxEcmFmdEluZGljYXRvciBzdGF0ZT1cInt1aT4vZHJhZnRTdGF0dXN9XCIgdmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIiAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QXBwbHlCdXR0b24oZW1waGFzaXplZEV4cHJlc3Npb246IFByb3BlcnR5QmluZGluZ0luZm8pOiBCdXR0b24gfCBNZW51QnV0dG9uIHwgbnVsbCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGlmICgodmlld0RhdGE/LnZpZXdMZXZlbCAhPSBudWxsICYmIHZpZXdEYXRhPy52aWV3TGV2ZWwgPD0gMSkgfHwgdGhpcy5faGlkZGVuRHJhZnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wICYmICF2aWV3RGF0YS5mY2xFbmFibGVkKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl9hcHBseURvY3VtZW50KGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0dXNlRGVmYXVsdEFjdGlvbk9ubHk9XCJ0cnVlXCJcblx0XHRcdFx0XHRidXR0b25Nb2RlPVwiU3BsaXRcIlxuXHRcdFx0XHRcdHR5cGU9e2VtcGhhc2l6ZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9XCJub3QtYWRhcHRhYmxlXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51PlxuXHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfVkFMSURBVEVfRFJBRlR9XCJcblx0XHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl92YWxpZGF0ZURvY3VtZW50KCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9NZW51QnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6QXBwbHlcIil9XG5cdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fYXBwbHlEb2N1bWVudChjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFByaW1hcnkoZW1waGFzaXplZEV4cHJlc3Npb24/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvLCBhY3Rpb24/OiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgTWVudUJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IGhpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJTYXZlXCJcblx0XHRcdFx0XHRleGVjdXRlPXtjb250cm9sbGVyLl9zYXZlRG9jdW1lbnR9XG5cdFx0XHRcdFx0dmlzaWJsZT17b3IoXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIi9pc0lubGluZUVkaXRBY3RpdmVcIiwgXCJ1aVwiKSwgdHJ1ZSlcblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0XHRqc3g6Y29tbWFuZD1cImNtZDpTYXZlfGRlZmF1bHRBY3Rpb25cIlxuXHRcdFx0XHRcdHVzZURlZmF1bHRBY3Rpb25Pbmx5PVwidHJ1ZVwiXG5cdFx0XHRcdFx0YnV0dG9uTW9kZT1cIlNwbGl0XCJcblx0XHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR2aXNpYmxlPXtjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PE1lbnU+XG5cdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0dGV4dD1cIntzYXAuZmUuaTE4bj5UX0NPTU1PTl9PQkpFQ1RfUEFHRV9WQUxJREFURV9EUkFGVH1cIlxuXHRcdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNvbnRyb2xsZXIuX3ZhbGlkYXRlRG9jdW1lbnQoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L01lbnVCdXR0b24+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiU3RhbmRhcmRBY3Rpb246OlNhdmVcIil9XG5cdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOlNhdmV8cHJlc3NcIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24/Lmdyb3VwfT48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUZXh0U2F2ZUJ1dHRvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3Qgc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9TQVZFXCIpO1xuXHRcdGNvbnN0IGNyZWF0ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9DUkVBVEVcIik7XG5cdFx0Ly8gSWYgd2UncmUgaW4gc3RpY2t5IG1vZGUgIC0+IHRoZSB1aSBpcyBpbiBjcmVhdGUgbW9kZSwgc2hvdyBDcmVhdGUsIGVsc2Ugc2hvdyBTYXZlXG5cdFx0Ly8gSWYgbm90IC0+IHdlJ3JlIGluIGRyYWZ0IG9yIGhpZGRlbiBkcmFmdFxuXHRcdC8vIEluIGNhc2Ugb2YgZHJhZnQgaWYgaXQgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSksIHNob3cgY3JlYXRlLCBlbHNlIHNob3cgc2F2ZVxuXHRcdC8vIEluIGNhc2Ugb2YgaGlkZGVuIGRyYWZ0IHRoZSBidXR0b24gc2hvd3MgdXAgaW4gYWxsIHBhZ2VzIGFuZCBmb2xsb3dzIHRoZSBiZWxvdyBjcml0ZXJpYVxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vdCBvYmplY3QgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSkgdGhlbiBhbGwgcGFnZXMgc2hvdWxkIHNob3cgQ3JlYXRlLlxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vciBvYmplY3QgaXMgbm90IGEgbmV3IG9iamVjdCB0aGVuIGFsbCBwYWdlcyBzaG91bGQgc2hvdyBTYXZlLlxuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IGFzIEVudGl0eVNldCkuYW5ub3RhdGlvbnMuU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRVSS5Jc0NyZWF0ZU1vZGUsXG5cdFx0XHRcdGlmRWxzZSh0aGlzLl9oaWRkZW5EcmFmdCwgYW5kKHBhdGhJbk1vZGVsKFwiL3Jvb3RJc05ld09iamVjdFwiLCBcImZvb3RlckludGVybmFsXCIpKSwgRHJhZnQuSXNOZXdPYmplY3QpXG5cdFx0XHQpLFxuXHRcdFx0Y3JlYXRlQnV0dG9uVGV4dCxcblx0XHRcdHNhdmVCdXR0b25UZXh0XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q2FuY2VsQnV0dG9uKGFjdGlvbj86IEJhc2VBY3Rpb24pOiBCdXR0b24gfCBudWxsIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBoaWRkZW5EcmFmdCA9IChjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdGNvbW1hbmQ9XCJDYW5jZWxcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5fY2FuY2VsRG9jdW1lbnQoeyBjYW5jZWxCdXR0b246IFwiZmU6OkZvb3RlckJhcjo6U3RhbmRhcmRBY3Rpb246OkNhbmNlbFwiIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHR2aXNpYmxlPXtpZkVsc2UoXG5cdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHQpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdC8vIE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgc2V0dGluZyBpcyBuZWVkZWQgd2hlbiB0aGUgZGlzY2FyZCBidXR0b24gaXMgaW4gdGhlIG92ZXJmbG93XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6Q2FuY2VsXCIpfVxuXHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRNb2RlbEhlbHBlci5pc0RyYWZ0Um9vdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCkgJiYgIXRoaXMuX2hpZGRlbkRyYWZ0XG5cdFx0XHRcdFx0XHQ/IFwie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU0NBUkRfRFJBRlR9XCJcblx0XHRcdFx0XHRcdDogXCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fT0JKRUNUX1BBR0VfQ0FOQ0VMfVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0anN4OmNvbW1hbmQ9XCJjbWQ6Q2FuY2VsfHByZXNzXCJcblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0YXJpYUhhc1BvcHVwPXtpZkVsc2UocGF0aEluTW9kZWwoXCIvaXNEb2N1bWVudE1vZGlmaWVkXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRGlhbG9nXCIpLCBjb25zdGFudChcIk5vbmVcIikpfVxuXHRcdFx0XHRlbmFibGVkPXt0cnVlfVxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGFcblx0XHRcdFx0XHRcdFx0cHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9XG5cdFx0XHRcdFx0XHRcdGNsb3NlT3ZlcmZsb3dPbkludGVyYWN0aW9uPXtmYWxzZX1cblx0XHRcdFx0XHRcdD48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q3JlYXRlTmV4dEJ1dHRvbihlbXBoYXNpemVkRXhwcmVzc2lvbjogUHJvcGVydHlCaW5kaW5nSW5mbyk6IEJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIlN0YW5kYXJkQWN0aW9uOjpDcmVhdGVOZXh0XCIpfVxuXHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5DX0NPTU1PTl9PQkpFQ1RfUEFHRV9DUkVBVEVfTkVYVH1cIn1cblx0XHRcdFx0cHJlc3M9e2NvbnRyb2xsZXIuZWRpdEZsb3cuY3JlYXRlTmV4dERvY3VtZW50fVxuXHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmlzaWJsZT17Z2V0Q3JlYXRlTmV4dEJ1dHRvblZpc2liaWxpdHkodGhpcy5faGlkZGVuRHJhZnQsIHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUpfVxuXHRcdFx0XHRlbmFibGVkPXt0cnVlfVxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7IGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGNsb3NlT3ZlcmZsb3dPbkludGVyYWN0aW9uPXtmYWxzZX0+PC9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhPiB9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0VG9vbGJhclNlcGFyYXRvcihhY3Rpb246IEJhc2VBY3Rpb24pOiBUb29sYmFyU2VwYXJhdG9yIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRvb2xiYXJTZXBhcmF0b3I+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgZ3JvdXA9e2FjdGlvbi5ncm91cH0+PC9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Ub29sYmFyU2VwYXJhdG9yPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldERhdGFGaWVsZEZvckFjdGlvbkJ1dHRvbihhY3Rpb246IEJhc2VBY3Rpb24pOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmIChhY3Rpb24uYW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSBhY3Rpb24uYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRsZXQgcHJlc3NFdmVudDogeyBwcmVzczogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9IHwgeyBcImpzeDpjb21tYW5kXCI6IENvbW1hbmRQcm9wZXJ0aWVzIH07XG5cdFx0XHRjb25zdCB2aWV3ID0gY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aENvbnRleHQgPSB0aGlzLm9EYXRhTWV0YU1vZGVsLmdldENvbnRleHQoYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0Y29uc3QgZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRGb3JBY3Rpb24+KGFubm90YXRpb25QYXRoQ29udGV4dCk7XG5cdFx0XHRjb25zdCBkYXRhRmllbGRGb3JBY3Rpb24gPSBkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdGlmIChkYXRhRmllbGRGb3JBY3Rpb24pIHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRlbnRpdHlTZXROYW1lOiB0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVNldD8ubmFtZSxcblx0XHRcdFx0XHRpbnZvY2F0aW9uR3JvdXBpbmc6XG5cdFx0XHRcdFx0XHRkYXRhRmllbGRGb3JBY3Rpb24uSW52b2NhdGlvbkdyb3VwaW5nID09PSBcIlVJLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHQ/IChsaWJyYXJ5IGFzIENvcmVMaWIpLkludm9jYXRpb25Hcm91cGluZy5DaGFuZ2VTZXRcblx0XHRcdFx0XHRcdFx0OiAobGlicmFyeSBhcyBDb3JlTGliKS5JbnZvY2F0aW9uR3JvdXBpbmcuSXNvbGF0ZWQsXG5cdFx0XHRcdFx0bGFiZWw6IGRhdGFGaWVsZEZvckFjdGlvbi5MYWJlbD8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRpc05hdmlnYWJsZTogYWN0aW9uLmlzTmF2aWdhYmxlLFxuXHRcdFx0XHRcdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogYWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbixcblx0XHRcdFx0XHRkaXNhYmxlU3RyaWN0SGFuZGxpbmc6IGFjdGlvbi5kaXNhYmxlU3RyaWN0SGFuZGxpbmdcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKCFhY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHQoY29udHJvbGxlciBhcyBDb250cm9sbGVyV2l0aEFjdGlvbikuaGFuZGxlcnMub25DYWxsQWN0aW9uKHZpZXcsIGRhdGFGaWVsZEZvckFjdGlvbi5BY3Rpb24gYXMgc3RyaW5nLCB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uYWN0aW9uUGFyYW1ldGVycyxcblx0XHRcdFx0XHRcdFx0XHQuLi57XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IHZpZXcuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBjb21tYW5kIGNvbWluZyBmcm9tIHRoZSBtYW5pZmVzdCBkb2Vzbid0IGdldCB0aGUgbWFuZGF0b3J5IHByZWZpeCBcImNtZDpcIiBzbyB3ZSBuZWVkIHRvIGFkZCBpdFxuXHRcdFx0XHRcdGlmICghYWN0aW9uLmNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdFx0XHRcdGFjdGlvbi5jb21tYW5kID0gYGNtZDoke2FjdGlvbi5jb21tYW5kfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYCR7YWN0aW9uLmNvbW1hbmR9fHByZXNzYCBhcyBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQodGhpcy5nZXRBY3Rpb25Nb2RlbFBhdGgoYWN0aW9uKSl9XG5cdFx0XHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gY29uc2lkZXJzIGFjdGlvbnMgd2l0aCBkeW5hbWljIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHQvLyBXaGVuIHdlIGhhdmUgb3RoZXIgdmFsdWVzIHRoYW4gdHJ1ZSBvciBmYWxzZSwgaS5lLiBhbiBleHByZXNzaW9uLCB3ZSBleGNsdWRlIHRoZSBhY3Rpb25zIGZyb20gYWRhcHRpbmcgdGhlIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHRkdDpkZXNpZ250aW1lPXthY3Rpb24udmlzaWJsZSA9PT0gXCJ0cnVlXCIgfHwgYWN0aW9uLnZpc2libGUgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IFwibm90LWFkYXB0YWJsZS12aXNpYmlsaXR5XCJ9XG5cdFx0XHRcdFx0XHR0ZXh0PXthY3Rpb25QYXJhbWV0ZXJzLmxhYmVsfVxuXHRcdFx0XHRcdFx0ey4uLnByZXNzRXZlbnR9XG5cdFx0XHRcdFx0XHRhcmlhSGFzUG9wdXA9e2lzQWN0aW9uV2l0aERpYWxvZyhkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoLnRhcmdldE9iamVjdCl9XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXthY3Rpb24udmlzaWJsZX1cblx0XHRcdFx0XHRcdGVuYWJsZWQ9e2FjdGlvbi5lbmFibGVkfVxuXHRcdFx0XHRcdFx0dHlwZT17Q3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZShkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoKX1cblx0XHRcdFx0XHRcdGljb249e2FjdGlvbj8uaXNBSU9wZXJhdGlvbiA9PT0gdHJ1ZSA/IGFpSWNvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHRcdGFyaWFEZXNjcmliZWRCeT17YWN0aW9uPy5pc0FJT3BlcmF0aW9uID09PSB0cnVlID8gW1wiZmU6OkFpQWN0aW9uOjpBcmlhVGV4dFwiXSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRsYXlvdXREYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbi5wcmlvcml0eX0gZ3JvdXA9e2FjdGlvbi5ncm91cH0+PC9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhPlxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0TWFuaWZlc3RCdXR0b24oYWN0aW9uOiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoT2JqZWN0UGFnZVRlbXBsYXRpbmcuaXNNYW5pZmVzdEFjdGlvbihhY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHJlc3NFdmVudDogeyBwcmVzczogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9IHwgeyBcImpzeDpjb21tYW5kXCI6IENvbW1hbmRQcm9wZXJ0aWVzIH07XG5cdFx0XHRpZiAoYWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdFx0cHJlc3NFdmVudCA9IHsgXCJqc3g6Y29tbWFuZFwiOiBgY21kOiR7YWN0aW9uLmNvbW1hbmR9fHByZXNzYCB9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHJlc3NFdmVudCA9IHtcblx0XHRcdFx0XHRwcmVzczogKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0RlBNSGVscGVyLmFjdGlvbldyYXBwZXIoZXZlbnQsIGFjdGlvbi5oYW5kbGVyTW9kdWxlLCBhY3Rpb24uaGFuZGxlck1ldGhvZCwge30pLmNhdGNoKChlcnJvcjogdW5rbm93bikgPT5cblx0XHRcdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yIGFzIHN0cmluZylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKGFjdGlvbi5pZCl9XG5cdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT17YWN0aW9uLnZpc2libGUgPT09IFwidHJ1ZVwiIHx8IGFjdGlvbi52aXNpYmxlID09PSBcImZhbHNlXCIgPyB1bmRlZmluZWQgOiBcIm5vdC1hZGFwdGFibGUtdmlzaWJpbGl0eVwifVxuXHRcdFx0XHRcdHRleHQ9e2FjdGlvbi50ZXh0ID8/IFwiXCJ9XG5cdFx0XHRcdFx0ey4uLnByZXNzRXZlbnR9XG5cdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHR2aXNpYmxlPXthY3Rpb24udmlzaWJsZX1cblx0XHRcdFx0XHRlbmFibGVkPXthY3Rpb24uZW5hYmxlZH1cblx0XHRcdFx0XHRpY29uPXthY3Rpb24/LmlzQUlPcGVyYXRpb24gPT09IHRydWUgPyBhaUljb24gOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0YXJpYURlc2NyaWJlZEJ5PXthY3Rpb24/LmlzQUlPcGVyYXRpb24gPT09IHRydWUgPyBbXCJmZTo6QWlBY3Rpb246OkFyaWFUZXh0XCJdIDogdW5kZWZpbmVkfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXthY3Rpb24ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdOKAmlxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0QWN0aW9uQ29udHJvbHMoKTogQnV0dG9uW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uID0gT2JqZWN0UGFnZVRlbXBsYXRpbmcuYnVpbGRFbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbih0aGlzLmRhdGFWaWV3TW9kZWxQYXRoKTtcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25zXG5cdFx0XHQ/Lm1hcCgoYWN0aW9uOiBCYXNlQWN0aW9uKSA9PiB7XG5cdFx0XHRcdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuRGVmYXVsdEFwcGx5OlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0QXBwbHlCdXR0b24oZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24pO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24oYWN0aW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuUHJpbWFyeTpcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0XHRcdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdFx0XHRcdFx0Y29uc3Qgdmlld0xldmVsID0gdmlld0RhdGE/LnZpZXdMZXZlbCA/PyAwO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuX2hpZGRlbkRyYWZ0ICYmICF0aGlzLl9oaWRlQ3JlYXRlTmV4dCAmJiB2aWV3TGV2ZWwgPiAxKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVtcGhhc2l6ZWRCdXR0b25Ub29sS2l0RXhwID0gZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb25cblx0XHRcdFx0XHRcdFx0XHQ/IHJlc29sdmVCaW5kaW5nU3RyaW5nKGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uKVxuXHRcdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcmltYXJ5KGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShEcmFmdC5Jc05ld09iamVjdCwgdW5kZWZpbmVkLCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCkpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFByaW1hcnkoZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24sIGFjdGlvbik7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLlNlY29uZGFyeTpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldENhbmNlbEJ1dHRvbihhY3Rpb24pO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5DcmVhdGVOZXh0OlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuX2hpZGRlbkRyYWZ0ICYmICF0aGlzLl9oaWRlQ3JlYXRlTmV4dCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCA9IGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyByZXNvbHZlQmluZGluZ1N0cmluZyhlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbilcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0Q3JlYXRlTmV4dEJ1dHRvbihcblx0XHRcdFx0XHRcdFx0XHRjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoRHJhZnQuSXNOZXdPYmplY3QsIGVtcGhhc2l6ZWRCdXR0b25Ub29sS2l0RXhwLCB1bmRlZmluZWQpKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5TZXBhcmF0b3I6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUb29sYmFyU2VwYXJhdG9yKGFjdGlvbik7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldE1hbmlmZXN0QnV0dG9uKGFjdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChhY3Rpb24pOiBhY3Rpb24gaXMgQnV0dG9uID0+ICEhYWN0aW9uKTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogT3ZlcmZsb3dUb29sYmFyIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgbWVzc2FnZUJ1dHRvbjogTWVzc2FnZUJ1dHRvbiA9IChcblx0XHRcdDxNZXNzYWdlQnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiTWVzc2FnZUJ1dHRvblwiKX1cblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dGhpcy5faGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0bWVzc2FnZUNoYW5nZT17KCk6IHZvaWQgPT4gY29udHJvbGxlci5fZ2V0Rm9vdGVyVmlzaWJpbGl0eSgpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuY3JlYXRlSWQoXCJNZXNzYWdlQnV0dG9uOjpBcmlhVGV4dFwiKSBhcyBzdHJpbmddfVxuXHRcdFx0XHR0eXBlPVwiRW1waGFzaXplZFwiXG5cdFx0XHRcdGFyaWFIYXNQb3B1cD1cIkRpYWxvZ1wiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0Y29uc3QgZm9vdGVyQmFyID0gKFxuXHRcdFx0PE92ZXJmbG93VG9vbGJhciBpZD17dGhpcy5jcmVhdGVJZChcIl9mY1wiKX0gYXN5bmNNb2RlPXt0cnVlfT5cblx0XHRcdFx0PEludmlzaWJsZVRleHRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIk1lc3NhZ2VCdXR0b246OkFyaWFUZXh0XCIpfVxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9CVVRUT05fQVJJQV9URVhUfVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRcdHttZXNzYWdlQnV0dG9ufVxuXHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHR7dGhpcy5nZXREcmFmdEluZGljYXRvcigpfVxuXHRcdFx0XHR7dGhpcy5nZXRBY3Rpb25Db250cm9scygpfVxuXHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0KTtcblx0XHRjb250cm9sbGVyXG5cdFx0XHQuZ2V0VmlldygpXG5cdFx0XHQuYWRkRGVwZW5kZW50KFxuXHRcdFx0XHQ8Q29tbWFuZEV4ZWN1dGlvblxuXHRcdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdFx0Y29tbWFuZD1cIk9wZW5NZXNzYWdlQnV0dG9uTWVudVwiXG5cdFx0XHRcdFx0ZXhlY3V0ZT17KCk6IE1lc3NhZ2VCdXR0b24gPT4gbWVzc2FnZUJ1dHRvbi5maXJlUHJlc3MoKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0cmV0dXJuIGZvb3RlckJhcjtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0NBO0VBR0E7RUFBQSxJQWFxQkEsYUFBYSxJQUFBQyxJQUFBLEdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUU1Q0Msa0JBQWtCLENBQUMscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUd6Q0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUFFLEtBQUEsR0FHaENDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdESCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHREosUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBRzVCQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBbUJqQkMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLEVBQUFkLElBQUEsQ0FBQWUsTUFBQSxJ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
@@ -11,7 +11,7 @@ import type { BaseManifestSettings, HiddenDraft } from "sap/fe/core/converters/M
11
11
  import { ActionType } from "sap/fe/core/converters/ManifestSettings";
12
12
  import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
13
13
  import { isActionWithDialog } from "sap/fe/core/converters/annotations/DataField";
14
- import { aiIcon, type BaseAction } from "sap/fe/core/converters/controls/Common/Action";
14
+ import { aiIcon, getCreateNextButtonVisibility, type BaseAction } from "sap/fe/core/converters/controls/Common/Action";
15
15
  import { Draft, UI } from "sap/fe/core/helpers/BindingHelper";
16
16
  import FPMHelper from "sap/fe/core/helpers/FPMHelper";
17
17
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
@@ -367,15 +367,7 @@ export default class FooterContent extends BuildingBlock<OverflowToolbar> {
367
367
  text={"{sap.fe.i18n>C_COMMON_OBJECT_PAGE_CREATE_NEXT}"}
368
368
  press={controller.editFlow.createNextDocument}
369
369
  type={emphasizedExpression}
370
- visible={ifElse(
371
- this._hiddenDraft === true,
372
- ifElse(
373
- viewData.fclEnabled === true,
374
- and(Draft.IsNewObject, equal(pathInModel("/showSaveAndCancelButton", "fclhelper"), true)),
375
- Draft.IsNewObject
376
- ),
377
- Draft.IsNewObject
378
- )}
370
+ visible={getCreateNextButtonVisibility(this._hiddenDraft, viewData.fclEnabled === true)}
379
371
  enabled={true}
380
372
  dt:designtime="not-adaptable"
381
373
  >
@@ -78,8 +78,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
78
78
  // get bound messages.
79
79
  const messageDetails = messages.reduce((reducedMessages, message) => {
80
80
  const isBound = message.getTargets().length > 0;
81
- const isMessageTechnical = message.getTechnical();
82
- if (isBound) {
81
+ const isCustomMessageFromExtensionAPI = message.getTechnicalDetails()?.isCustomMessageFromExtensionAPI === true;
82
+ if (isBound && !isCustomMessageFromExtensionAPI) {
83
83
  reducedMessages.push({
84
84
  message
85
85
  });
@@ -260,4 +260,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
260
260
  _exports = MessageButton;
261
261
  return _exports;
262
262
  }, false);
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIFByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL1Byb3BlcnR5QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvbWVzc2FnZS9NZXNzYWdlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gc2hvdyBib3VuZCBtZXNzYWdlcy5cbiAqXG4gKiBUaGUgTWVzc2FnZSBCdXR0b24gQnVpbGRpbmcgQmxvY2sgZ2V0cyB0aGUgYm91bmQgbWVzc2FnZXMgZnJvbSB0aGUgTWVzc2FnZU1vZGVsLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6TWVzc2FnZUJ1dHRvbiB2aXNpYmlsaXR5Q2hhbmdlPVwiLmhhbmRsZXIub25NZXNzYWdlQnV0dG9uVmlzaWJpbGl0eUNoYW5nZVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NZXNzYWdlQnV0dG9uXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXNzYWdlQnV0dG9uIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxCdXR0b24+IHtcblx0LyoqXG5cdCAqIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgbWVzc2FnZSBidXR0b24ncyB2aXNpYmlsaXR5IGNoYW5nZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHZpc2liaWxpdHlDaGFuZ2UhOiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0sIE1lc3NhZ2VCdXR0b24+PjtcblxuXHRfbWVzc2FnZU1vZGVsITogTWVzc2FnZU1vZGVsO1xuXG5cdF9tZXNzYWdlUG9wb3ZlciE6IE1lc3NhZ2VQb3BvdmVyO1xuXG5cdF9tbVByb3BlcnR5QmluZGluZyE6IFByb3BlcnR5QmluZGluZztcblxuXHRfbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwOiBSZWNvcmQ8c3RyaW5nLCBNZXNzYWdlRGV0YWlsPiA9IHt9O1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JTZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPiwgc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8TWVzc2FnZUJ1dHRvbj4pIHtcblx0XHRzdXBlcihpZE9yU2V0dGluZ3MsIHNldHRpbmdzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCkge1xuXHRcdFx0XHRyZWR1Y2VkTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2UgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVkdWNlZE1lc3NhZ2VzO1xuXHRcdH0sIFtdKTtcblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhd2FpdCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24obWVzc2FnZURldGFpbHMpO1xuXHRcdH1cblx0XHR0aGlzLmFkanVzdE1lc3NhZ2VCdXR0b25Qcm9wZXJ0aWVzKG1lc3NhZ2VEZXRhaWxzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSBtZXNzYWdlIGJ1dHRvbiBwcm9wZXJ0aWVzIGFuZCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBTZXRzIHRoZSBtZXNzYWdlcyBidXR0b25zIHByb3BlcnRpZXMgb24gdGhlIGJhc2lzIG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgbWVzc2FnZXMgYnV0dG9uIGlzIGRldGVybWluZWQgb24gdGhlIGJhc2lzIG9mIHRoZSBwcmlvcml0eSBvZiBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICogQWRkaXRpb25hbGx5LCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKiBAcGFyYW0gbWVzc2FnZURldGFpbHMgTWVzc2FnZSBkZXRhaWxzIHVzZWQgdG8gcmVuZGVyIGVhY2ggbWVzc2FnZSBpdGVtLlxuXHQgKi9cblx0YWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHM6IE1lc3NhZ2VEZXRhaWxbXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcCA9IHt9O1xuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlUHJpb3JpdHlNYXAgPSB7XG5cdFx0XHRcdEVycm9yOiAwLFxuXHRcdFx0XHRXYXJuaW5nOiAxLFxuXHRcdFx0XHRTdWNjZXNzOiAyLFxuXHRcdFx0XHRJbmZvcm1hdGlvbjogMyxcblx0XHRcdFx0Tm9uZTogNFxuXHRcdFx0fTtcblxuXHRcdFx0bGV0IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcC5Ob25lOyAvLyB3ZSBzdGFydCBmcm9tIHRoZSBsb3dlc3Rcblx0XHRcdGxldCBlcnJvckNvdW50ID0gMDtcblx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZXNzYWdlRGV0YWlsIG9mIG1lc3NhZ2VEZXRhaWxzKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2U7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VUeXBlID0gbWVzc2FnZS5nZXRUeXBlKCk7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcFttZXNzYWdlVHlwZV07XG5cdFx0XHRcdGlmIChtZXNzYWdlUHJpb3JpdHkgPCBhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkpIHtcblx0XHRcdFx0XHRhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkgPSBtZXNzYWdlUHJpb3JpdHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG1lc3NhZ2VUeXBlID09PSBNZXNzYWdlVHlwZS5FcnJvcikge1xuXHRcdFx0XHRcdGVycm9yQ291bnQrKztcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlSXRlbXMucHVzaCh0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWwpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHByb3BlcnRpZXMgb24gdGhlIG1lc3NhZ2UgYnV0dG9uc1xuXG5cdFx0XHQvLyBzZXRUZXh0XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VGV4dChtZXNzYWdlRGV0YWlscy5sZW5ndGgudG9TdHJpbmcoKSk7XG5cblx0XHRcdC8vIHNldFR5cGVcblx0XHRcdGNvbnN0IHByaW9yaXRpemVkQnV0dG9uVHlwZSA9IFtcblx0XHRcdFx0QnV0dG9uVHlwZS5OZWdhdGl2ZSxcblx0XHRcdFx0QnV0dG9uVHlwZS5Dcml0aWNhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5TdWNjZXNzLFxuXHRcdFx0XHRCdXR0b25UeXBlLk5ldXRyYWwsXG5cdFx0XHRcdEJ1dHRvblR5cGUuRGVmYXVsdFxuXHRcdFx0XTtcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUeXBlKHByaW9yaXRpemVkQnV0dG9uVHlwZVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldKTtcblxuXHRcdFx0Ly8gc2V0VG9vbHRpcFxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRUb29sVGlwS2V5ID0gW1xuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIixcblx0XHRcdFx0XCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1dBUk5JTkdfVE9PTFRJUFwiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX1NVQ0NFU1NcIixcblx0XHRcdFx0XCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9JTkZPXCIsXG5cdFx0XHRcdFwiXCJcblx0XHRcdF07XG5cdFx0XHRjb25zdCB0b29sdGlwS2V5ID1cblx0XHRcdFx0ZXJyb3JDb3VudCA+IDFcblx0XHRcdFx0XHQ/IFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9NVUxUSVBMRV9FUlJPUl9UT09MVElQXCJcblx0XHRcdFx0XHQ6IHByaW9yaXRpemVkVG9vbFRpcEtleVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldO1xuXHRcdFx0bGV0IHRvb2x0aXBUZXh0ID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dCh0b29sdGlwS2V5KTtcblx0XHRcdGlmIChlcnJvckNvdW50ID4gMSkge1xuXHRcdFx0XHR0b29sdGlwVGV4dCA9IGAke2Vycm9yQ291bnR9ICAke3Rvb2x0aXBUZXh0fWA7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VG9vbHRpcCh0b29sdGlwVGV4dCk7XG5cblx0XHRcdC8vIHNldFZpc2libGVcblx0XHRcdGlmICghdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYWxzbyBzaG93IHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRcdHRoaXMuY3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zKTtcblx0XHR9XG5cblx0XHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAodGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwidmlzaWJpbGl0eUNoYW5nZVwiLCB7IHZpc2libGU6IHRoaXMuZ2V0Q29udGVudCgpPy5nZXRWaXNpYmxlKCkgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIEl0ZW0uXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlsIE1lc3NhZ2UgZGV0YWlsIHJlbGV2YW50IGZvciBjcmVhdGluZyB0aGUgbWVzc2FnZSBpdGVtLlxuXHQgKiBAcmV0dXJucyBNZXNzYWdlSXRlbSBjcmVhdGVkIGZyb20gTWVzc2FnZSBEZXRhaWxcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWw6IE1lc3NhZ2VEZXRhaWwpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRjb25zdCBtZXNzYWdlSXRlbSA9IChcblx0XHRcdDxNZXNzYWdlSXRlbVxuXHRcdFx0XHR0aXRsZT17bWVzc2FnZS5nZXRNZXNzYWdlKCl9XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXttZXNzYWdlLmdldERlc2NyaXB0aW9uKCl9XG5cdFx0XHRcdHR5cGU9e21lc3NhZ2UuZ2V0VHlwZSgpfVxuXHRcdFx0XHRtYXJrdXBEZXNjcmlwdGlvbj17dHJ1ZX1cblx0XHRcdFx0bG9uZ3RleHRVcmw9e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKX1cblx0XHRcdFx0c3VidGl0bGU9e21lc3NhZ2UuZ2V0QWRkaXRpb25hbFRleHQoKX1cblx0XHRcdFx0Z3JvdXBOYW1lPXttZXNzYWdlRGV0YWlsLmdyb3VwTmFtZSB8fCB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9NRVNTQUdFX0JVVFRPTl9TQVBGRV9NRVNTQUdFX0dST1VQX0dFTkVSQUxcIil9XG5cdFx0XHRcdGFjdGl2ZVRpdGxlPXttZXNzYWdlLmdldENvbnRyb2xJZHMoKS5sZW5ndGggPiAwIHx8IHR5cGVvZiBtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlciA9PT0gXCJmdW5jdGlvblwifVxuXHRcdFx0Lz5cblx0XHQpIGFzIE1lc3NhZ2VJdGVtO1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcFttZXNzYWdlSXRlbS5nZXRJZCgpXSA9IG1lc3NhZ2VEZXRhaWw7XG5cdFx0cmV0dXJuIG1lc3NhZ2VJdGVtO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIFBvcG92ZXIuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbXNcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIgPSAoXG5cdFx0XHQ8TWVzc2FnZVBvcG92ZXJcblx0XHRcdFx0Z3JvdXBJdGVtcz17dHJ1ZX1cblx0XHRcdFx0YWN0aXZlVGl0bGVQcmVzcz17KHByZXNzRXZlbnQ6IE1lc3NhZ2VQb3BvdmVyJEFjdGl2ZVRpdGxlUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJpdGVtXCIpO1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbSk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0aXRlbXM6IG1lc3NhZ2VJdGVtc1xuXHRcdFx0XHR9fVxuXHRcdFx0PC9NZXNzYWdlUG9wb3Zlcj5cblx0XHQpIGFzIE1lc3NhZ2VQb3BvdmVyO1xuXHRcdHRoaXMuZ2V0Q29udGVudCgpPy5hZGREZXBlbmRlbnQodGhpcy5fbWVzc2FnZVBvcG92ZXIpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIub3BlbkJ5KHRoaXMuZ2V0Q29udGVudCgpIGFzIEJ1dHRvbik7XG5cdFx0fSwgMCk7XG5cdH1cblx0LyoqXG5cdCAqIEhhbmRsZXMgYWN0aXZlIHRpdGxlIHByZXNzLlxuXHQgKlxuXHQgKiBJZiBhbiBhY3RpdmVUaXRsZUhhbmRsZXIgaXMgcHJvdmlkZWQgYnkgdGhlIGNvbnN1bWVyIHZpYSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdGhlbiBpdCBpcyBjYWxsZWQuXG5cdCAqIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZvY3VzIG9uIHRoZSBjb250cm9sIGlmIGEgY29udHJvbCBJZCBpbiB0aGUgbWVzc2FnZSBpcyBhdmFpbGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbVxuXHQgKi9cblx0aGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbT86IE1lc3NhZ2VJdGVtKTogdm9pZCB7XG5cdFx0aWYgKG1lc3NhZ2VJdGVtKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlRGV0YWlsID0gdGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtPy5nZXRJZCgpXTtcblx0XHRcdGlmIChtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcikge1xuXHRcdFx0XHRtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcihtZXNzYWdlRGV0YWlsLm1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbElkID0gbWVzc2FnZURldGFpbC5tZXNzYWdlLmdldENvbnRyb2xJZCgpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChjb250cm9sSWQpO1xuXHRcdFx0XHRpZiAoY29udHJvbCkge1xuXHRcdFx0XHRcdGNvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJtZXNzYWdlIGl0ZW0gbm90IGZvdW5kIVwiKTtcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmRlc3Ryb3koKTtcblx0fVxuXHQvKipcblx0ICogVG9nZ2xlIGhhbmRsZXIgZm9yIHRoZSBtZXNzYWdlIHBvcG92ZXIuXG5cdCAqL1xuXHR0b2dnbGVNZXNzYWdlUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci50b2dnbGUodGhpcy5jb250ZW50IGFzIEJ1dHRvbik7XG5cdH1cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQgZm9yIHRoZSBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29udGVudCBjb250cm9sLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBCdXR0b24ge1xuXHRcdHJldHVybiA8QnV0dG9uIHZpc2libGU9XCJmYWxzZVwiIHByZXNzPXt0aGlzLnRvZ2dsZU1lc3NhZ2VQb3BvdmVyLmJpbmQodGhpcyl9IC8+O1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBYXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBTTVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBSCxJQUFBLENBQUFJLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQVdSLFNBQUFQLGNBQVlRLFlBQW1ELEVBQUVDLFFBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3hHQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxZQUFZLEVBQUVDLFFBQVEsQ0FBQztNQWhCOUI7QUFDRDtBQUNBO0FBQ0E7TUFIQ0csMEJBQUEsQ0FBQUYsS0FBQSxzQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FhQUksNEJBQTRCLEdBQWtDLENBQUMsQ0FBQztNQUFBLE9BQUFKLEtBQUE7SUFJaEU7O0lBRUE7QUFDRDtBQUNBO0lBRkNLLFFBQUEsR0FBQWYsYUFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsYUFBQSxFQUFBTyxjQUFB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
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc0N1c3RvbU1lc3NhZ2VGcm9tRXh0ZW5zaW9uQVBJIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsInB1c2giLCJnZXRQYWdlQ29udHJvbGxlciIsIm1lc3NhZ2VIYW5kbGVyIiwiYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24iLCJhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyIsIm1lc3NhZ2VQcmlvcml0eU1hcCIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkiLCJlcnJvckNvdW50IiwibWVzc2FnZUl0ZW1zIiwibWVzc2FnZURldGFpbCIsIm1lc3NhZ2VUeXBlIiwiZ2V0VHlwZSIsIm1lc3NhZ2VQcmlvcml0eSIsIk1lc3NhZ2VUeXBlIiwiY3JlYXRlTWVzc2FnZUl0ZW0iLCJnZXRDb250ZW50Iiwic2V0VGV4dCIsInRvU3RyaW5nIiwicHJpb3JpdGl6ZWRCdXR0b25UeXBlIiwiQnV0dG9uVHlwZSIsIk5lZ2F0aXZlIiwiQ3JpdGljYWwiLCJOZXV0cmFsIiwiRGVmYXVsdCIsInNldFR5cGUiLCJwcmlvcml0aXplZFRvb2xUaXBLZXkiLCJ0b29sdGlwS2V5IiwidG9vbHRpcFRleHQiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInNldFRvb2x0aXAiLCJnZXRWaXNpYmxlIiwic2V0VmlzaWJsZSIsImZpcmVFdmVudCIsInZpc2libGUiLCJjcmVhdGVNZXNzYWdlUG9wb3ZlciIsIm1lc3NhZ2VJdGVtIiwiX2pzeCIsIk1lc3NhZ2VJdGVtIiwidGl0bGUiLCJnZXRNZXNzYWdlIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInR5cGUiLCJtYXJrdXBEZXNjcmlwdGlvbiIsImxvbmd0ZXh0VXJsIiwiZ2V0RGVzY3JpcHRpb25VcmwiLCJzdWJ0aXRsZSIsImdldEFkZGl0aW9uYWxUZXh0IiwiZ3JvdXBOYW1lIiwiYWN0aXZlVGl0bGUiLCJnZXRDb250cm9sSWRzIiwiYWN0aXZlVGl0bGVIYW5kbGVyIiwiZ2V0SWQiLCJfbWVzc2FnZVBvcG92ZXIiLCJkZXN0cm95IiwiTWVzc2FnZVBvcG92ZXIiLCJncm91cEl0ZW1zIiwiYWN0aXZlVGl0bGVQcmVzcyIsInByZXNzRXZlbnQiLCJnZXRQYXJhbWV0ZXIiLCJoYW5kbGVBY3RpdmVUaXRsZVByZXNzIiwiY2hpbGRyZW4iLCJpdGVtcyIsImFkZERlcGVuZGVudCIsInNldFRpbWVvdXQiLCJvcGVuQnkiLCJjb250cm9sSWQiLCJnZXRDb250cm9sSWQiLCJjb250cm9sIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZm9jdXMiLCJMb2ciLCJlcnJvciIsInRvZ2dsZU1lc3NhZ2VQb3BvdmVyIiwidG9nZ2xlIiwiQnV0dG9uIiwicHJlc3MiLCJiaW5kIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWVzc2FnZUJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2VEZXRhaWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IE1lc3NhZ2VJdGVtIGZyb20gXCJzYXAvbS9NZXNzYWdlSXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlUG9wb3ZlciRBY3RpdmVUaXRsZVByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vTWVzc2FnZVBvcG92ZXJcIjtcbmltcG9ydCBNZXNzYWdlUG9wb3ZlciBmcm9tIFwic2FwL20vTWVzc2FnZVBvcG92ZXJcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9tZXNzYWdlL01lc3NhZ2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHZpc2libGU6IGJvb2xlYW4gfSwgTWVzc2FnZUJ1dHRvbj4+O1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHRcdC8vIGdldCB0aGUgbWVzc2FnZSBtb2RlbCBhbmQgYXR0YWNoIHRvIGl0J3MgY2hhbmdlIGV2ZW50LlxuXHRcdHRoaXMuX21lc3NhZ2VNb2RlbCA9IE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZyA9IHRoaXMuX21lc3NhZ2VNb2RlbC5iaW5kUHJvcGVydHkoXCIvXCIpO1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmF0dGFjaENoYW5nZSh0aGlzLnByb2Nlc3NNZXNzYWdlcywgdGhpcyk7XG5cdFx0Y29uc3QgZXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMucHJvY2Vzc01lc3NhZ2VzKCk7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRXZlbnREZWxlZ2F0ZShldmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuYWRkRXZlbnREZWxlZ2F0ZShldmVudERlbGVnYXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqXG5cdCAqIEZpbHRlcnMgb3V0IHRoZSBib3VuZCBhbmQgbm9uIHRlY2huaWNhbCBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsXG5cdCAqIEFuZCBjYWxscyB0aGUgTWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24gY29udHJvbGxlciBleHRlbnNpb24gdG8gYWxsb3cgY29uc3VtZXJzIHRvIGFkYXB0IHRoZSBtZXNzYWdlcyB0aGF0IHdpbGwgYmUgc2hvd24uXG5cdCAqXG5cdCAqIEFkZGl0aW9uYWxseSwgaXQgYWRqdXN0cyB0aGUgbWVzc2FnZSBidXR0b24ncyBwcm9lcHJ0aWVzIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICovXG5cdGFzeW5jIHByb2Nlc3NNZXNzYWdlcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBtZXNzYWdlczogTWVzc2FnZVtdID0gdGhpcy5fbWVzc2FnZU1vZGVsPy5nZXREYXRhKCk7XG5cblx0XHQvLyBnZXQgYm91bmQgbWVzc2FnZXMuXG5cdFx0Y29uc3QgbWVzc2FnZURldGFpbHMgPSBtZXNzYWdlcy5yZWR1Y2UoKHJlZHVjZWRNZXNzYWdlczogTWVzc2FnZURldGFpbFtdLCBtZXNzYWdlKTogTWVzc2FnZURldGFpbFtdID0+IHtcblx0XHRcdGNvbnN0IGlzQm91bmQgPSBtZXNzYWdlLmdldFRhcmdldHMoKS5sZW5ndGggPiAwO1xuXHRcdFx0Y29uc3QgaXNDdXN0b21NZXNzYWdlRnJvbUV4dGVuc2lvbkFQSSA9XG5cdFx0XHRcdChtZXNzYWdlLmdldFRlY2huaWNhbERldGFpbHMoKSBhcyB1bmRlZmluZWQgfCB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSk/LmlzQ3VzdG9tTWVzc2FnZUZyb21FeHRlbnNpb25BUEkgPT09IHRydWU7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNDdXN0b21NZXNzYWdlRnJvbUV4dGVuc2lvbkFQSSkge1xuXHRcdFx0XHRyZWR1Y2VkTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2UgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVkdWNlZE1lc3NhZ2VzO1xuXHRcdH0sIFtdKTtcblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhd2FpdCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24obWVzc2FnZURldGFpbHMpO1xuXHRcdH1cblx0XHR0aGlzLmFkanVzdE1lc3NhZ2VCdXR0b25Qcm9wZXJ0aWVzKG1lc3NhZ2VEZXRhaWxzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSBtZXNzYWdlIGJ1dHRvbiBwcm9wZXJ0aWVzIGFuZCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBTZXRzIHRoZSBtZXNzYWdlcyBidXR0b25zIHByb3BlcnRpZXMgb24gdGhlIGJhc2lzIG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgbWVzc2FnZXMgYnV0dG9uIGlzIGRldGVybWluZWQgb24gdGhlIGJhc2lzIG9mIHRoZSBwcmlvcml0eSBvZiBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICogQWRkaXRpb25hbGx5LCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKiBAcGFyYW0gbWVzc2FnZURldGFpbHMgTWVzc2FnZSBkZXRhaWxzIHVzZWQgdG8gcmVuZGVyIGVhY2ggbWVzc2FnZSBpdGVtLlxuXHQgKi9cblx0YWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHM6IE1lc3NhZ2VEZXRhaWxbXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcCA9IHt9O1xuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlUHJpb3JpdHlNYXAgPSB7XG5cdFx0XHRcdEVycm9yOiAwLFxuXHRcdFx0XHRXYXJuaW5nOiAxLFxuXHRcdFx0XHRTdWNjZXNzOiAyLFxuXHRcdFx0XHRJbmZvcm1hdGlvbjogMyxcblx0XHRcdFx0Tm9uZTogNFxuXHRcdFx0fTtcblxuXHRcdFx0bGV0IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcC5Ob25lOyAvLyB3ZSBzdGFydCBmcm9tIHRoZSBsb3dlc3Rcblx0XHRcdGxldCBlcnJvckNvdW50ID0gMDtcblx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZXNzYWdlRGV0YWlsIG9mIG1lc3NhZ2VEZXRhaWxzKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2U7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VUeXBlID0gbWVzc2FnZS5nZXRUeXBlKCk7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcFttZXNzYWdlVHlwZV07XG5cdFx0XHRcdGlmIChtZXNzYWdlUHJpb3JpdHkgPCBhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkpIHtcblx0XHRcdFx0XHRhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkgPSBtZXNzYWdlUHJpb3JpdHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG1lc3NhZ2VUeXBlID09PSBNZXNzYWdlVHlwZS5FcnJvcikge1xuXHRcdFx0XHRcdGVycm9yQ291bnQrKztcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlSXRlbXMucHVzaCh0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWwpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHByb3BlcnRpZXMgb24gdGhlIG1lc3NhZ2UgYnV0dG9uc1xuXG5cdFx0XHQvLyBzZXRUZXh0XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VGV4dChtZXNzYWdlRGV0YWlscy5sZW5ndGgudG9TdHJpbmcoKSk7XG5cblx0XHRcdC8vIHNldFR5cGVcblx0XHRcdGNvbnN0IHByaW9yaXRpemVkQnV0dG9uVHlwZSA9IFtcblx0XHRcdFx0QnV0dG9uVHlwZS5OZWdhdGl2ZSxcblx0XHRcdFx0QnV0dG9uVHlwZS5Dcml0aWNhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5TdWNjZXNzLFxuXHRcdFx0XHRCdXR0b25UeXBlLk5ldXRyYWwsXG5cdFx0XHRcdEJ1dHRvblR5cGUuRGVmYXVsdFxuXHRcdFx0XTtcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUeXBlKHByaW9yaXRpemVkQnV0dG9uVHlwZVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldKTtcblxuXHRcdFx0Ly8gc2V0VG9vbHRpcFxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRUb29sVGlwS2V5ID0gW1xuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIixcblx0XHRcdFx0XCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1dBUk5JTkdfVE9PTFRJUFwiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX1NVQ0NFU1NcIixcblx0XHRcdFx0XCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9JTkZPXCIsXG5cdFx0XHRcdFwiXCJcblx0XHRcdF07XG5cdFx0XHRjb25zdCB0b29sdGlwS2V5ID1cblx0XHRcdFx0ZXJyb3JDb3VudCA+IDFcblx0XHRcdFx0XHQ/IFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9NVUxUSVBMRV9FUlJPUl9UT09MVElQXCJcblx0XHRcdFx0XHQ6IHByaW9yaXRpemVkVG9vbFRpcEtleVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldO1xuXHRcdFx0bGV0IHRvb2x0aXBUZXh0ID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dCh0b29sdGlwS2V5KTtcblx0XHRcdGlmIChlcnJvckNvdW50ID4gMSkge1xuXHRcdFx0XHR0b29sdGlwVGV4dCA9IGAke2Vycm9yQ291bnR9ICAke3Rvb2x0aXBUZXh0fWA7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VG9vbHRpcCh0b29sdGlwVGV4dCk7XG5cblx0XHRcdC8vIHNldFZpc2libGVcblx0XHRcdGlmICghdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYWxzbyBzaG93IHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRcdHRoaXMuY3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zKTtcblx0XHR9XG5cblx0XHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAodGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwidmlzaWJpbGl0eUNoYW5nZVwiLCB7IHZpc2libGU6IHRoaXMuZ2V0Q29udGVudCgpPy5nZXRWaXNpYmxlKCkgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIEl0ZW0uXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlsIE1lc3NhZ2UgZGV0YWlsIHJlbGV2YW50IGZvciBjcmVhdGluZyB0aGUgbWVzc2FnZSBpdGVtLlxuXHQgKiBAcmV0dXJucyBNZXNzYWdlSXRlbSBjcmVhdGVkIGZyb20gTWVzc2FnZSBEZXRhaWxcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWw6IE1lc3NhZ2VEZXRhaWwpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRjb25zdCBtZXNzYWdlSXRlbSA9IChcblx0XHRcdDxNZXNzYWdlSXRlbVxuXHRcdFx0XHR0aXRsZT17bWVzc2FnZS5nZXRNZXNzYWdlKCl9XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXttZXNzYWdlLmdldERlc2NyaXB0aW9uKCl9XG5cdFx0XHRcdHR5cGU9e21lc3NhZ2UuZ2V0VHlwZSgpfVxuXHRcdFx0XHRtYXJrdXBEZXNjcmlwdGlvbj17dHJ1ZX1cblx0XHRcdFx0bG9uZ3RleHRVcmw9e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKX1cblx0XHRcdFx0c3VidGl0bGU9e21lc3NhZ2UuZ2V0QWRkaXRpb25hbFRleHQoKX1cblx0XHRcdFx0Z3JvdXBOYW1lPXttZXNzYWdlRGV0YWlsLmdyb3VwTmFtZSB8fCB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9NRVNTQUdFX0JVVFRPTl9TQVBGRV9NRVNTQUdFX0dST1VQX0dFTkVSQUxcIil9XG5cdFx0XHRcdGFjdGl2ZVRpdGxlPXttZXNzYWdlLmdldENvbnRyb2xJZHMoKS5sZW5ndGggPiAwIHx8IHR5cGVvZiBtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlciA9PT0gXCJmdW5jdGlvblwifVxuXHRcdFx0Lz5cblx0XHQpIGFzIE1lc3NhZ2VJdGVtO1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcFttZXNzYWdlSXRlbS5nZXRJZCgpXSA9IG1lc3NhZ2VEZXRhaWw7XG5cdFx0cmV0dXJuIG1lc3NhZ2VJdGVtO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIFBvcG92ZXIuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbXNcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIgPSAoXG5cdFx0XHQ8TWVzc2FnZVBvcG92ZXJcblx0XHRcdFx0Z3JvdXBJdGVtcz17dHJ1ZX1cblx0XHRcdFx0YWN0aXZlVGl0bGVQcmVzcz17KHByZXNzRXZlbnQ6IE1lc3NhZ2VQb3BvdmVyJEFjdGl2ZVRpdGxlUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJpdGVtXCIpO1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbSk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0aXRlbXM6IG1lc3NhZ2VJdGVtc1xuXHRcdFx0XHR9fVxuXHRcdFx0PC9NZXNzYWdlUG9wb3Zlcj5cblx0XHQpIGFzIE1lc3NhZ2VQb3BvdmVyO1xuXHRcdHRoaXMuZ2V0Q29udGVudCgpPy5hZGREZXBlbmRlbnQodGhpcy5fbWVzc2FnZVBvcG92ZXIpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIub3BlbkJ5KHRoaXMuZ2V0Q29udGVudCgpIGFzIEJ1dHRvbik7XG5cdFx0fSwgMCk7XG5cdH1cblx0LyoqXG5cdCAqIEhhbmRsZXMgYWN0aXZlIHRpdGxlIHByZXNzLlxuXHQgKlxuXHQgKiBJZiBhbiBhY3RpdmVUaXRsZUhhbmRsZXIgaXMgcHJvdmlkZWQgYnkgdGhlIGNvbnN1bWVyIHZpYSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdGhlbiBpdCBpcyBjYWxsZWQuXG5cdCAqIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZvY3VzIG9uIHRoZSBjb250cm9sIGlmIGEgY29udHJvbCBJZCBpbiB0aGUgbWVzc2FnZSBpcyBhdmFpbGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbVxuXHQgKi9cblx0aGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbT86IE1lc3NhZ2VJdGVtKTogdm9pZCB7XG5cdFx0aWYgKG1lc3NhZ2VJdGVtKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlRGV0YWlsID0gdGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtPy5nZXRJZCgpXTtcblx0XHRcdGlmIChtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcikge1xuXHRcdFx0XHRtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcihtZXNzYWdlRGV0YWlsLm1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbElkID0gbWVzc2FnZURldGFpbC5tZXNzYWdlLmdldENvbnRyb2xJZCgpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChjb250cm9sSWQpO1xuXHRcdFx0XHRpZiAoY29udHJvbCkge1xuXHRcdFx0XHRcdGNvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJtZXNzYWdlIGl0ZW0gbm90IGZvdW5kIVwiKTtcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmRlc3Ryb3koKTtcblx0fVxuXHQvKipcblx0ICogVG9nZ2xlIGhhbmRsZXIgZm9yIHRoZSBtZXNzYWdlIHBvcG92ZXIuXG5cdCAqL1xuXHR0b2dnbGVNZXNzYWdlUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci50b2dnbGUodGhpcy5jb250ZW50IGFzIEJ1dHRvbik7XG5cdH1cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQgZm9yIHRoZSBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29udGVudCBjb250cm9sLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBCdXR0b24ge1xuXHRcdHJldHVybiA8QnV0dG9uIHZpc2libGU9XCJmYWxzZVwiIHByZXNzPXt0aGlzLnRvZ2dsZU1lc3NhZ2VQb3BvdmVyLmJpbmQodGhpcyl9IC8+O1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBYXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBTTVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBSCxJQUFBLENBQUFJLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQVdSLFNBQUFQLGNBQVlRLFlBQW1ELEVBQUVDLFFBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3hHQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxZQUFZLEVBQUVDLFFBQVEsQ0FBQztNQWhCOUI7QUFDRDtBQUNBO0FBQ0E7TUFIQ0csMEJB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
@@ -85,8 +85,9 @@ export default class MessageButton extends BuildingBlock<Button> {
85
85
  // get bound messages.
86
86
  const messageDetails = messages.reduce((reducedMessages: MessageDetail[], message): MessageDetail[] => {
87
87
  const isBound = message.getTargets().length > 0;
88
- const isMessageTechnical = message.getTechnical();
89
- if (isBound) {
88
+ const isCustomMessageFromExtensionAPI =
89
+ (message.getTechnicalDetails() as undefined | { [key: string]: unknown })?.isCustomMessageFromExtensionAPI === true;
90
+ if (isBound && !isCustomMessageFromExtensionAPI) {
90
91
  reducedMessages.push({ message });
91
92
  }
92
93
  return reducedMessages;