@sapui5/sap.fe.templates 1.112.0 → 1.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
  4. package/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +3 -1
  5. package/src/sap/fe/templates/ListReport/ExtensionAPI.js.map +1 -1
  6. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +2 -0
  7. package/src/sap/fe/templates/ListReport/ListReport.view.xml +1 -1
  8. package/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +23 -14
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  10. package/src/sap/fe/templates/ListReport/ListReportController.controller.js.map +1 -1
  11. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +24 -11
  12. package/src/sap/fe/templates/ListReport/ListReportTemplating-dbg.js +7 -7
  13. package/src/sap/fe/templates/ListReport/ListReportTemplating.js.map +1 -1
  14. package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +8 -6
  15. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl-dbg.js +3 -3
  16. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +1 -1
  17. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js.map +1 -1
  18. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +1 -2
  19. package/src/sap/fe/templates/ListReport/manifest.json +1 -1
  20. package/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +14 -39
  21. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  22. package/src/sap/fe/templates/ListReport/overrides/ViewState.js.map +1 -1
  23. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +14 -42
  24. package/src/sap/fe/templates/ListReport/view/fragments/MacroChart.fragment.xml +1 -1
  25. package/src/sap/fe/templates/ObjectPage/Component-dbg.js +2 -2
  26. package/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  27. package/src/sap/fe/templates/ObjectPage/Component.js.map +1 -1
  28. package/src/sap/fe/templates/ObjectPage/Component.ts +1 -1
  29. package/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +21 -6
  30. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +1 -1
  31. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js.map +1 -1
  32. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +21 -9
  33. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  34. package/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +149 -87
  35. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js.map +1 -1
  37. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +166 -95
  38. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating-dbg.js +12 -1
  39. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +1 -1
  40. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js.map +1 -1
  41. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +11 -0
  42. package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
  43. package/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +7 -2
  44. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
  45. package/src/sap/fe/templates/ObjectPage/overrides/Share.js.map +1 -1
  46. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +5 -1
  47. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +3 -1
  48. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block-dbg.js +7 -6
  49. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.js +1 -1
  50. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.js.map +1 -1
  51. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.tsx +8 -7
  52. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +1 -1
  53. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +93 -45
  54. package/src/sap/fe/templates/library-dbg.js +1 -1
  55. package/src/sap/fe/templates/library-preload.js +20 -20
  56. package/src/sap/fe/templates/library-preload.js.map +1 -1
  57. package/src/sap/fe/templates/library.js +1 -1
  58. package/src/sap/fe/templates/manifest.json +1 -1
  59. package/src/sap/fe/templates/messagebundle.properties +6 -0
  60. package/src/sap/fe/templates/messagebundle_ar.properties +2 -0
  61. package/src/sap/fe/templates/messagebundle_bg.properties +3 -1
  62. package/src/sap/fe/templates/messagebundle_ca.properties +2 -0
  63. package/src/sap/fe/templates/messagebundle_cs.properties +2 -0
  64. package/src/sap/fe/templates/messagebundle_cy.properties +2 -0
  65. package/src/sap/fe/templates/messagebundle_da.properties +2 -0
  66. package/src/sap/fe/templates/messagebundle_de.properties +4 -2
  67. package/src/sap/fe/templates/messagebundle_el.properties +2 -0
  68. package/src/sap/fe/templates/messagebundle_en.properties +2 -2
  69. package/src/sap/fe/templates/messagebundle_en_GB.properties +3 -1
  70. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -0
  71. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -0
  72. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -0
  73. package/src/sap/fe/templates/messagebundle_es.properties +2 -0
  74. package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -0
  75. package/src/sap/fe/templates/messagebundle_et.properties +2 -0
  76. package/src/sap/fe/templates/messagebundle_fi.properties +2 -0
  77. package/src/sap/fe/templates/messagebundle_fr.properties +2 -0
  78. package/src/sap/fe/templates/messagebundle_fr_CA.properties +3 -1
  79. package/src/sap/fe/templates/messagebundle_hi.properties +3 -1
  80. package/src/sap/fe/templates/messagebundle_hr.properties +2 -0
  81. package/src/sap/fe/templates/messagebundle_hu.properties +2 -0
  82. package/src/sap/fe/templates/messagebundle_id.properties +3 -1
  83. package/src/sap/fe/templates/messagebundle_it.properties +2 -0
  84. package/src/sap/fe/templates/messagebundle_iw.properties +2 -0
  85. package/src/sap/fe/templates/messagebundle_ja.properties +2 -0
  86. package/src/sap/fe/templates/messagebundle_kk.properties +2 -0
  87. package/src/sap/fe/templates/messagebundle_ko.properties +3 -1
  88. package/src/sap/fe/templates/messagebundle_lt.properties +2 -0
  89. package/src/sap/fe/templates/messagebundle_lv.properties +3 -1
  90. package/src/sap/fe/templates/messagebundle_ms.properties +2 -0
  91. package/src/sap/fe/templates/messagebundle_nl.properties +2 -0
  92. package/src/sap/fe/templates/messagebundle_no.properties +2 -0
  93. package/src/sap/fe/templates/messagebundle_pl.properties +3 -1
  94. package/src/sap/fe/templates/messagebundle_pt.properties +2 -0
  95. package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -0
  96. package/src/sap/fe/templates/messagebundle_ro.properties +3 -1
  97. package/src/sap/fe/templates/messagebundle_ru.properties +3 -1
  98. package/src/sap/fe/templates/messagebundle_sh.properties +2 -0
  99. package/src/sap/fe/templates/messagebundle_sk.properties +2 -0
  100. package/src/sap/fe/templates/messagebundle_sl.properties +2 -0
  101. package/src/sap/fe/templates/messagebundle_sv.properties +3 -1
  102. package/src/sap/fe/templates/messagebundle_th.properties +2 -0
  103. package/src/sap/fe/templates/messagebundle_tr.properties +2 -0
  104. package/src/sap/fe/templates/messagebundle_uk.properties +2 -0
  105. package/src/sap/fe/templates/messagebundle_vi.properties +2 -0
  106. package/src/sap/fe/templates/messagebundle_zh_CN.properties +3 -1
  107. package/src/sap/fe/templates/messagebundle_zh_TW.properties +3 -1
@@ -16,7 +16,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
16
16
  applyInitialStateOnly: function () {
17
17
  return true;
18
18
  },
19
- onBeforeStateApplied: function (aPromises) {
19
+ onBeforeStateApplied: function (aPromises, navigationType) {
20
20
  const oView = this.getView(),
21
21
  oController = oView.getController(),
22
22
  oFilterBar = oController._getFilterBarControl(),
@@ -24,6 +24,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
24
24
  if (oFilterBar) {
25
25
  oFilterBar.setSuspendSelection(true);
26
26
  aPromises.push(oFilterBar.waitForInitialization());
27
+ //This is required to remove any existing or default filter conditions before restoring the filter bar state in hybrid navigation mode.
28
+ if (navigationType === NavType.hybrid) {
29
+ this._clearFilterConditions(oFilterBar);
30
+ }
27
31
  }
28
32
  aTables.forEach(function (oTable) {
29
33
  aPromises.push(oTable.initialized());
@@ -453,7 +457,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
453
457
  return oPropertyInfo.path !== "$editState" && oPropertyInfo.path !== "$search";
454
458
  }).forEach(oPropertyInfo => {
455
459
  if (oPropertyInfo.path in oConditions) {
456
- mFilter[oPropertyInfo.path] = this._fnDecodeConditionsValues(oConditions[oPropertyInfo.path]);
460
+ mFilter[oPropertyInfo.path] = oConditions[oPropertyInfo.path];
457
461
  if (!oPropertyInfo.hiddenFilter) {
458
462
  aItems.push({
459
463
  name: oPropertyInfo.path
@@ -476,46 +480,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
476
480
  });
477
481
  });
478
482
  },
479
- _isEncoded: function (str) {
480
- return decodeURI(str) !== str;
481
- },
482
- /*
483
- * Decode the value as many times as necessary to get the decoded value
484
- *
485
- * @param value
486
- * @returns the decoded value
487
- * @private
488
- */
489
- _decodeValue: function (value) {
490
- let decodedValue = value;
491
- let previousValue = "";
492
- while (this._isEncoded(decodedValue) && decodedValue !== previousValue) {
493
- previousValue = decodedValue;
494
- decodedValue = decodeURI(decodedValue);
495
- }
496
- return decodedValue;
497
- },
498
- /*
499
- * Decode the conditions values when necessary
500
- *
501
- * @param object conditions
502
- * @returns the object conditions with all the values decoded
503
- * @private
504
- */
505
- _fnDecodeConditionsValues: function (conditions) {
506
- const values = conditions.filter(condition => condition.values);
507
- values.forEach(item => {
508
- item.values = item.values.map(value => {
509
- if (typeof value === "string") {
510
- return this._decodeValue(value);
511
- } else {
512
- return value;
513
- }
483
+ _clearFilterConditions: async function (oFilterBar) {
484
+ const aItems = [];
485
+ return oFilterBar.waitForInitialization().then(async () => {
486
+ const oClearConditions = await this._fnClearStateBeforexAppNav(oFilterBar);
487
+ return StateUtil.applyExternalState(oFilterBar, {
488
+ filter: oClearConditions,
489
+ items: aItems
514
490
  });
515
491
  });
516
- return conditions;
517
492
  }
518
493
  };
519
494
  return ViewStateOverride;
520
495
  }, false);
521
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiQ09ORElUSU9OX1BBVEhfVE9fUFJPUEVSVFlfUEFUSF9SRUdFWCIsIlZpZXdTdGF0ZU92ZXJyaWRlIiwiX2JTZWFyY2hUcmlnZ2VyZWQiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJvbkJlZm9yZVN0YXRlQXBwbGllZCIsImFQcm9taXNlcyIsIm9WaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsIm9GaWx0ZXJCYXIiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbCIsImFUYWJsZXMiLCJfZ2V0Q29udHJvbHMiLCJzZXRTdXNwZW5kU2VsZWN0aW9uIiwicHVzaCIsIndhaXRGb3JJbml0aWFsaXphdGlvbiIsImZvckVhY2giLCJvVGFibGUiLCJpbml0aWFsaXplZCIsIm9uQWZ0ZXJTdGF0ZUFwcGxpZWQiLCJfaXNGaWx0ZXJCYXJIaWRkZW4iLCJvSW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInNldFByb3BlcnR5IiwiX2lzTXVsdGlNb2RlIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsImFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyIsImFDb250cm9scyIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJvUXVpY2tGaWx0ZXIiLCJnZXRRdWlja0ZpbHRlciIsImdldFZhcmlhbnQiLCJvQ2hhcnQiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsIl9nZXRTZWdtZW50ZWRCdXR0b24iLCJDaGFydCIsIlRhYmxlIiwiYnlJZCIsInJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyIsIm1BZGRpdGlvbmFsU3RhdGVzIiwiYlBlbmRpbmdGaWx0ZXIiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwidHJpZ2dlclNlYXJjaCIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsImdldFBhdGgiLCJfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyIiwib05hdmlnYXRpb25QYXJhbWV0ZXIiLCJhUmVzdWx0cyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzdGFydHVwUGFyYW1ldGVycyIsIm9WYXJpYW50UHJvbWlzZSIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImJGaWx0ZXJWYXJpYW50QXBwbGllZCIsInRoZW4iLCJhVmFyaWFudHMiLCJsZW5ndGgiLCJfYXBwbHlTZWxlY3Rpb25WYXJpYW50Iiwib0R5bmFtaWNQYWdlIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsIm9GaWx0ZXJCYXJDb250cm9sIiwibmF2aWdhdGlvblR5cGUiLCJpbml0aWFsIiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJpbml0aWFsTG9hZCIsIkVuYWJsZWQiLCJfc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2giLCJfcHJldmVudEluaXRpYWxTZWFyY2giLCJzZXRIZWFkZXJFeHBhbmRlZCIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJvVXJsUGFyYW1zIiwiYVBhZ2VWYXJpYW50SWQiLCJhRmlsdGVyQmFyVmFyaWFudElkIiwiYVRhYmxlVmFyaWFudElkIiwiYUNoYXJ0VmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJzUGFnZVZhcmlhbnRJZCIsInNGaWx0ZXJCYXJWYXJpYW50SWQiLCJzVGFibGVWYXJpYW50SWQiLCJzQ2hhcnRWYXJpYW50SWQiLCJfaGFuZGxlQ29udHJvbFZhcmlhbnRJZCIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsIl9oYW5kbGVQYWdlVmFyaWFudElkIiwiX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sIiwiX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQiLCJfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkIiwiX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZCIsIlByb21pc2UiLCJhbGwiLCJnZXRWYXJpYW50cyIsIm9WYXJpYW50IiwiX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZSIsIm9UYWJsZVZhcmlhbnQiLCJhQ2hhcnRzIiwib0NoYXJ0VmFyaWFudCIsInNWYXJpYW50SWQiLCJrZXkiLCJfYXBwbHlDb250cm9sVmFyaWFudCIsInNWYXJpYW50SUQiLCJzVmFyaWFudFJlZmVyZW5jZSIsIl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJDb250cm9sVmFyaWFudEFwcGx5QVBJIiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJQYWdlIiwiTm9uZSIsIkVycm9yIiwib1ZhcmlhbnRNYW5hZ2VtZW50Iiwib0N1cnJlbnRWYXJpYW50IiwiZmluZCIsIm9JdGVtIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJleGVjdXRlT25TZWxlY3QiLCJvU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwicmVzb2x2ZSIsIm9Db25kaXRpb25zIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsInNDb250ZXh0UGF0aCIsImNvbnRleHRQYXRoIiwiZW50aXR5U2V0IiwiYU1hbmRhdG9yeUZpbHRlckZpZWxkcyIsIkNvbW1vblV0aWxzIiwiZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiYlVzZVNlbWFudGljRGF0ZVJhbmdlIiwiZGF0YSIsImJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJJc0ZMUFZhbHVlUHJlc2VudCIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZ2V0RGVmYXVsdFZhcmlhbnRLZXkiLCJiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5IiwiZ2V0Q29uZGl0aW9ucyIsImFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3kiLCJhZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zIiwiX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudCIsIm9Qcm9taXNlIiwib1ZhcmlhbnRLZXkiLCJnZXRJZCIsImJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGUiLCJfZm5BcHBseUNvbmRpdGlvbnMiLCJfZm5DbGVhclN0YXRlQmVmb3JleEFwcE5hdiIsIlN0YXRlVXRpbCIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsIm9FeHRlcm5hbFN0YXRlIiwib0NvbmRpdGlvbiIsImZpbHRlciIsImZpZWxkIiwiY29uZGl0aW9uIiwib0Vycm9yIiwibUZpbHRlciIsImFJdGVtcyIsImZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uIiwidmFsaWRhdGVkIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiVmFsaWRhdGVkIiwib3BlcmF0b3IiLCJ2YWx1ZXMiLCJpc0VtcHR5IiwiZm5HZXRQcm9wZXJ0eUluZm8iLCJvRmlsdGVyQ29udHJvbCIsInNFbnRpdHlUeXBlUGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRFbnRpdHlTZXRQYXRoIiwib0ZSIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwiYU5vbkZpbHRlcmFibGVQcm9wcyIsIk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzIiwibUZpbHRlckZpZWxkcyIsIkZpbHRlclV0aWxzIiwiZ2V0Q29udmVydGVkRmlsdGVyRmllbGRzIiwiYVByb3BlcnR5SW5mbyIsIm9Db252ZXJ0ZWRQcm9wZXJ0eSIsInNQcm9wZXJ0eVBhdGgiLCJjb25kaXRpb25QYXRoIiwicmVwbGFjZSIsImluZGV4T2YiLCJzQW5ub3RhdGlvblBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsIm9Qcm9wZXJ0eUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInBhdGgiLCJoaWRkZW5GaWx0ZXIiLCJhdmFpbGFiaWxpdHkiLCJoYXNWYWx1ZUhlbHAiLCJQcm9wZXJ0eUZvcm1hdHRlcnMiLCJnZXRPYmplY3QiLCJjb250ZXh0IiwiRGVsZWdhdGVVdGlsIiwiZ2V0Q3VzdG9tRGF0YSIsIm9DbGVhckNvbmRpdGlvbnMiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyIsIm9Qcm9wZXJ0eUluZm8iLCJfZm5EZWNvZGVDb25kaXRpb25zVmFsdWVzIiwibmFtZSIsImZpbHRlcmVkIiwiTm90VmFsaWRhdGVkIiwiX2lzRW5jb2RlZCIsInN0ciIsImRlY29kZVVSSSIsIl9kZWNvZGVWYWx1ZSIsInZhbHVlIiwiZGVjb2RlZFZhbHVlIiwicHJldmlvdXNWYWx1ZSIsImNvbmRpdGlvbnMiLCJpdGVtIiwibWFwIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaWV3U3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5Rm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUZvcm1hdHRlcnNcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgTmF2TGlicmFyeSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBzeXN0ZW0gfSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBTdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBTdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IFN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogU3RyaW5nO1xuXHR0aXRsZTogU3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xufTtcblxudHlwZSBWYXJpYW50SURzID0ge1xuXHRzUGFnZVZhcmlhbnRJZDogU3RyaW5nO1xuXHRzRmlsdGVyQmFyVmFyaWFudElkOiBTdHJpbmc7XG5cdHNUYWJsZVZhcmlhbnRJZDogU3RyaW5nO1xuXHRzQ2hhcnRWYXJpYW50SWQ6IFN0cmluZztcbn07XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlLFxuXHRDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYID0gL1xcK3xcXCovZztcblxuY29uc3QgVmlld1N0YXRlT3ZlcnJpZGU6IGFueSA9IHtcblx0X2JTZWFyY2hUcmlnZ2VyZWQ6IGZhbHNlLFxuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0b25CZWZvcmVTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFQcm9taXNlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdH1cblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChvVGFibGUuaW5pdGlhbGl6ZWQoKSk7XG5cdFx0fSk7XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0b25BZnRlclN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSkge1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2xsZXIuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIiwgZmFsc2UpO1xuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRcdG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YVZpZXdDb250cm9scyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scygpLFxuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaChvVmlldywgYVZpZXdDb250cm9scyk7XG5cblx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhQ29udHJvbHMsIGFDb250cm9sc1RvUmVmcmVzaCk7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCksXG5cdFx0XHRiQ29udHJvbFZNID0gb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDtcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRpZiAob0ZpbHRlckJhclZNKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpKTtcblx0XHR9XG5cdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIikuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUpO1xuXHRcdH0pO1xuXHRcdGlmIChvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKSkge1xuXHRcdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikuZm9yRWFjaChmdW5jdGlvbiAob0NoYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydC5nZXRWYXJpYW50KCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NoYXJ0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQpKTtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldFNlZ21lbnRlZEJ1dHRvbihUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlKSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9GaWx0ZXJCYXIpO1xuXHRcdH1cblx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9WaWV3LmJ5SWQoXCJmZTo6TGlzdFJlcG9ydFwiKSk7XG5cdH0sXG5cdHJldHJpZXZlQWRkaXRpb25hbFN0YXRlczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgbUFkZGl0aW9uYWxTdGF0ZXM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdGJQZW5kaW5nRmlsdGVyID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLmdldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIik7XG5cblx0XHRtQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID0gIWJQZW5kaW5nRmlsdGVyIHx8ICEhdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0XHRpZiAob0NvbnRyb2xsZXIuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0Y29uc3Qgc0FscENvbnRlbnRWaWV3ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKS5nZXRQcm9wZXJ0eShcImFscENvbnRlbnRWaWV3XCIpO1xuXHRcdFx0bUFkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPSBzQWxwQ29udGVudFZpZXc7XG5cdFx0fVxuXG5cdFx0ZGVsZXRlIHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdH0sXG5cdGFwcGx5QWRkaXRpb25hbFN0YXRlczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb0FkZGl0aW9uYWxTdGF0ZXM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXG5cdFx0aWYgKG9BZGRpdGlvbmFsU3RhdGVzKSB7XG5cdFx0XHQvLyBleHBsaWNpdCBjaGVjayBmb3IgYm9vbGVhbiB2YWx1ZXMgLSAndW5kZWZpbmVkJyBzaG91bGQgbm90IGFsdGVyIHRoZSB0cmlnZ2VyZWQgc2VhcmNoIHByb3BlcnR5XG5cdFx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMuZGF0YUxvYWRlZCA9PT0gZmFsc2UgJiYgb0ZpbHRlckJhcikge1xuXHRcdFx0XHQvLyB3aXRob3V0IHRoaXMsIHRoZSBkYXRhIGlzIGxvYWRlZCBvbiBuYXZpZ2F0aW5nIGJhY2tcblx0XHRcdFx0KG9GaWx0ZXJCYXIgYXMgYW55KS5fYlNlYXJjaFRyaWdnZXJlZCA9IGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSB0cnVlKSB7XG5cdFx0XHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdFx0b0ZpbHRlckJhci50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fYlNlYXJjaFRyaWdnZXJlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRpZiAoIXN5c3RlbS5kZXNrdG9wICYmIG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3ID09IFRlbXBsYXRlQ29udGVudFZpZXcuSHlicmlkKSB7XG5cdFx0XHRcdFx0b0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPSBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dFxuXHRcdFx0XHRcdC5nZXRNb2RlbCgpXG5cdFx0XHRcdFx0LnNldFByb3BlcnR5KGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2FscENvbnRlbnRWaWV3YCwgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0X2FwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnNUb0ZpbHRlcmJhcjogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYVJlc3VsdHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IG9Db250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gb0FwcENvbXBvbmVudC5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0Y29uc3Qgb1N0YXJ0dXBQYXJhbWV0ZXJzID0gKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fTtcblx0XHRjb25zdCBvVmFyaWFudFByb21pc2UgPSB0aGlzLmhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyhvU3RhcnR1cFBhcmFtZXRlcnMpO1xuXHRcdGxldCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGJvb2xlYW47XG5cdFx0YVJlc3VsdHMucHVzaChcblx0XHRcdG9WYXJpYW50UHJvbWlzZVxuXHRcdFx0XHQudGhlbigoYVZhcmlhbnRzOiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhVmFyaWFudHMgJiYgYVZhcmlhbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGlmIChhVmFyaWFudHNbMF0gPT09IHRydWUgfHwgYVZhcmlhbnRzWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9hcHBseVNlbGVjdGlvblZhcmlhbnQob1ZpZXcsIG9OYXZpZ2F0aW9uUGFyYW1ldGVyLCBiRmlsdGVyVmFyaWFudEFwcGxpZWQpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0R5bmFtaWNQYWdlID0gb0NvbnRyb2xsZXIuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhckNvbnRyb2wgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0XHRcdGlmIChvRmlsdGVyQmFyQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCkgfHxcblx0XHRcdFx0XHRcdFx0KCFvRmlsdGVyQmFyVk0gJiYgb1ZpZXcuZ2V0Vmlld0RhdGEoKS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHx8XG5cdFx0XHRcdFx0XHRcdG9Db250cm9sbGVyLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaChvRmlsdGVyQmFyVk0pXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0b0ZpbHRlckJhckNvbnRyb2wudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2gob0ZpbHRlckJhclZNKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIHJlc2V0IHRoZSBzdXNwZW5kIHNlbGVjdGlvbiBvbiBmaWx0ZXIgYmFyIHRvIGFsbG93IGxvYWRpbmcgb2YgZGF0YSB3aGVuIG5lZWRlZCAod2FzIHNldCBvbiBMUiBJbml0KVxuXHRcdFx0XHRcdFx0b0ZpbHRlckJhckNvbnRyb2wuc2V0U3VzcGVuZFNlbGVjdGlvbihmYWxzZSk7XG5cdFx0XHRcdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gIWJQcmV2ZW50SW5pdGlhbFNlYXJjaDtcblx0XHRcdFx0XHRcdG9EeW5hbWljUGFnZS5zZXRIZWFkZXJFeHBhbmRlZChzeXN0ZW0uZGVza3RvcCB8fCBiUHJldmVudEluaXRpYWxTZWFyY2gpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJWYXJpYW50IElEIGNhbm5vdCBiZSBhcHBsaWVkXCIpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0aGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvVXJsUGFyYW1zOiBhbnkpIHtcblx0XHRjb25zdCBhUGFnZVZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtdmFyaWFudC1pZFwiXSxcblx0XHRcdGFGaWx0ZXJCYXJWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWZpbHRlcmJhci12YXJpYW50LWlkXCJdLFxuXHRcdFx0YVRhYmxlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS10YWJsZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUNoYXJ0VmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS1jaGFydC12YXJpYW50LWlkXCJdO1xuXHRcdGxldCBvVmFyaWFudElEcztcblx0XHRpZiAoYVBhZ2VWYXJpYW50SWQgfHwgYUZpbHRlckJhclZhcmlhbnRJZCB8fCBhVGFibGVWYXJpYW50SWQgfHwgYUNoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRvVmFyaWFudElEcyA9IHtcblx0XHRcdFx0c1BhZ2VWYXJpYW50SWQ6IGFQYWdlVmFyaWFudElkICYmIGFQYWdlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzRmlsdGVyQmFyVmFyaWFudElkOiBhRmlsdGVyQmFyVmFyaWFudElkICYmIGFGaWx0ZXJCYXJWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNUYWJsZVZhcmlhbnRJZDogYVRhYmxlVmFyaWFudElkICYmIGFUYWJsZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0NoYXJ0VmFyaWFudElkOiBhQ2hhcnRWYXJpYW50SWQgJiYgYUNoYXJ0VmFyaWFudElkWzBdXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5faGFuZGxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcyk7XG5cdH0sXG5cblx0X2hhbmRsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9WYXJpYW50SURzOiBWYXJpYW50SURzKSB7XG5cdFx0bGV0IG9WTTogVmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXSA9IFtdO1xuXHRcdGNvbnN0IHNWYXJpYW50TWFuYWdlbWVudCA9IG9WaWV3LmdldFZpZXdEYXRhKCkudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0aWYgKG9WYXJpYW50SURzICYmIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkICYmIHNWYXJpYW50TWFuYWdlbWVudCA9PT0gXCJQYWdlXCIpIHtcblx0XHRcdG9WTSA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0dGhpcy5faGFuZGxlUGFnZVZhcmlhbnRJZChvVmFyaWFudElEcywgb1ZNLCBhUHJvbWlzZXMpO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0Lypcblx0ICogSGFuZGxlcyBwYWdlIGxldmVsIHZhcmlhbnQgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9WTSBjb250YWlucyB0aGUgdmFpcmFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIHBhZ2UgdmFyaWFudFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZVBhZ2VWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0b1ZNLmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHR9KTtcblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgZmlsdGVyIGJhciBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblxuXHRfaGFuZGxlRmlsdGVyQmFyVmFyaWFudENvbnRyb2xJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRpZiAob1ZNKSB7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgdGFibGUgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIGhhcyB0aGUgbGlzdCByZXBvcnQgY29udHJvbGxlciBvYmplY3Rcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b0NvbnRyb2xsZXI6IExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRjb25zdCBhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0YVRhYmxlcy5mb3JFYWNoKChvVGFibGU6IFRhYmxlKSA9PiB7XG5cdFx0XHRjb25zdCBvVGFibGVWYXJpYW50ID0gb1RhYmxlLmdldFZhcmlhbnQoKTtcblx0XHRcdGlmIChvVGFibGUgJiYgb1RhYmxlVmFyaWFudCkge1xuXHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCwgb1RhYmxlVmFyaWFudCwgYVByb21pc2VzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIGNoYXJ0IGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBoYXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ2hhcnRDb250cm9sVmFyaWFudElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0Y29uc3QgYUNoYXJ0cyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXHRcdGFDaGFydHMuZm9yRWFjaCgob0NoYXJ0OiBDaGFydCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NoYXJ0VmFyaWFudCA9IG9DaGFydC5nZXRWYXJpYW50KCk7XG5cdFx0XHRjb25zdCBhVmFyaWFudHMgPSBvQ2hhcnRWYXJpYW50LmdldFZhcmlhbnRzKCk7XG5cdFx0XHRpZiAoYVZhcmlhbnRzKSB7XG5cdFx0XHRcdGFWYXJpYW50cy5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkLCBvQ2hhcnRWYXJpYW50LCBhUHJvbWlzZXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0Lypcblx0ICogTWF0Y2hlcyB0aGUgdmFyaWFudCBJRCBwcm92aWRlZCBpbiB0aGUgdXJsIHRvIHRoZSBhdmFpbGFibGUgdmFpcmFudCBJRHMgYW5kIHB1c2hlcyB0aGUgYXBwcm9wcmlhdGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmlhbnQgaXMgYW4gb2JqZWN0IGZvciBhIHNwZWNpZmljIHZhcmlhbnRcblx0ICogQHBhcmFtIHNWYXJpYW50SWQgaXMgdGhlIHZhcmlhbnQgSUQgcHJvdmlkZWQgaW4gdGhlIHVybFxuXHQgKiBAcGFyYW0gb1ZNIGlzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgc3BlY2ZpYyB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgcHJvbWlzZXNcblx0ICogQHBhcmFtIGJGaWx0ZXJWYXJpYW50QXBwbGllZCBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgc2V0IHRvIHR1cmUgaW4gY2FzZSB0aGUgZmlsdGVyIHZhcmlhbnQgaXMgYXBwbGllZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZTogZnVuY3Rpb24gKFxuXHRcdC8vVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3VpdGFibGUgdmFyaWFudCBmb3IgdGhlIHZhcmlhbnRJRCBwcm92aWRlZCBpbiB0aGUgdXJsIGFuZCBwdXNoZXMgdGhlbSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudDogVmFyaWFudE9iamVjdCxcblx0XHRzVmFyaWFudElkOiBTdHJpbmcsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W10sXG5cdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkPzogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBzVmFyaWFudElkKSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9WTSwgc1ZhcmlhbnRJZCwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hcHBseUNvbnRyb2xWYXJpYW50OiBmdW5jdGlvbiAob1ZhcmlhbnQ6IGFueSwgc1ZhcmlhbnRJRDogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WYXJpYW50LCBzVmFyaWFudElEKSA/IHNWYXJpYW50SUQgOiBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRjb25zdCBvVk0gPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRlbGVtZW50OiBvVmFyaWFudCxcblx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9WTS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBiRmlsdGVyVmFyaWFudEFwcGxpZWQ7XG5cdFx0fSk7XG5cdH0sXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHByaXZhdGUgaGVscGVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdF9nZXRGaWx0ZXJCYXJWTTogZnVuY3Rpb24gKG9WaWV3OiBhbnkpIHtcblx0XHRjb25zdCBvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdHN3aXRjaCAob1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5QYWdlOlxuXHRcdFx0XHRyZXR1cm4gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Db250cm9sOlxuXHRcdFx0XHRyZXR1cm4gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHVuaGFuZGxlZCB2YXJpYW50IHNldHRpbmc6ICR7b1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50fWApO1xuXHRcdH1cblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5rZXkgPT09IG9WYXJpYW50TWFuYWdlbWVudC5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiAhb0N1cnJlbnRWYXJpYW50LmV4ZWN1dGVPblNlbGVjdDtcblx0fSxcblxuXHRfYXBwbHlTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudERlZmF1bHRzO1xuXHRcdGlmICghb0ZpbHRlckJhciB8fCAhb1NlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0bGV0IG9Db25kaXRpb25zID0ge307XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvVmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke29WaWV3RGF0YS5lbnRpdHlTZXR9YDtcblx0XHRjb25zdCBhTWFuZGF0b3J5RmlsdGVyRmllbGRzID0gQ29tbW9uVXRpbHMuZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzKG9NZXRhTW9kZWwsIHNDb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgYlVzZVNlbWFudGljRGF0ZVJhbmdlID0gb0ZpbHRlckJhci5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIik7XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdHN3aXRjaCAob1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5QYWdlOlxuXHRcdFx0XHRvVmFyaWFudCA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdG9WYXJpYW50ID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y29uc3QgYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50ID0gb05hdmlnYXRpb25QYXJhbWV0ZXIucmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ7XG5cdFx0Ly8gY2hlY2sgaWYgRkxQIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGVyZSBhbmQgaXMgaXQgc3RhbmRhcmQgdmFyaWFudFxuXHRcdGNvbnN0IGJJc0ZMUFZhbHVlUHJlc2VudDogYm9vbGVhbiA9XG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzICYmXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCkubGVuZ3RoID4gMCAmJlxuXHRcdFx0b1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCkgJiZcblx0XHRcdG9OYXZpZ2F0aW9uUGFyYW1ldGVyLmJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk7XG5cblx0XHQvLyBnZXQgY29uZGl0aW9ucyB3aGVuIEZMUCB2YWx1ZSBpcyBwcmVzZW50XG5cdFx0aWYgKGJGaWx0ZXJWYXJpYW50QXBwbGllZCB8fCBiSXNGTFBWYWx1ZVByZXNlbnQpIHtcblx0XHRcdG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdFx0fVxuXHRcdENvbW1vblV0aWxzLmFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3koYU1hbmRhdG9yeUZpbHRlckZpZWxkcywgb1NlbGVjdGlvblZhcmlhbnQsIG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMpO1xuXHRcdENvbW1vblV0aWxzLmFkZFNlbGVjdGlvblZhcmlhbnRUb0NvbmRpdGlvbnMoXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdG9Db25kaXRpb25zLFxuXHRcdFx0b01ldGFNb2RlbCxcblx0XHRcdHNDb250ZXh0UGF0aCxcblx0XHRcdGJJc0ZMUFZhbHVlUHJlc2VudCxcblx0XHRcdGJVc2VTZW1hbnRpY0RhdGVSYW5nZSxcblx0XHRcdG9WaWV3RGF0YVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gdGhpcy5fYWN0aXZhdGVTZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0b0ZpbHRlckJhcixcblx0XHRcdG9Db25kaXRpb25zLFxuXHRcdFx0b1ZhcmlhbnQsXG5cdFx0XHRiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQsXG5cdFx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQsXG5cdFx0XHRiSXNGTFBWYWx1ZVByZXNlbnRcblx0XHQpO1xuXHR9LFxuXHRfYWN0aXZhdGVTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAoXG5cdFx0b0ZpbHRlckJhcjogYW55LFxuXHRcdG9Db25kaXRpb25zOiBhbnksXG5cdFx0b1ZhcmlhbnQ6IGFueSxcblx0XHRiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IGFueSxcblx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSxcblx0XHRiSXNGTFBWYWx1ZVByZXNlbnQ/OiBib29sZWFuXG5cdCkge1xuXHRcdGxldCBvUHJvbWlzZTtcblxuXHRcdGlmIChvVmFyaWFudCAmJiAhYkZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgb1ZhcmlhbnRLZXkgPSBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgPyBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IG9WYXJpYW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAob1ZhcmlhbnRLZXkgPT09IG51bGwpIHtcblx0XHRcdFx0b1ZhcmlhbnRLZXkgPSBvVmFyaWFudC5nZXRJZCgpO1xuXHRcdFx0fVxuXHRcdFx0b1Byb21pc2UgPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBvVmFyaWFudEtleVxuXHRcdFx0fSkudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgfHwgb1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvUHJvbWlzZS50aGVuKChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdGlmIChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9mbkFwcGx5Q29uZGl0aW9ucyhvRmlsdGVyQmFyLCBvQ29uZGl0aW9ucywgYklzRkxQVmFsdWVQcmVzZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHQvKlxuXHQgKiBTZXRzIGZpbHRlcmVkOiBmYWxzZSBmbGFnIHRvIGV2ZXJ5IGZpZWxkIHNvIHRoYXQgaXQgY2FuIGJlIGNsZWFyZWQgb3V0XG5cdCAqXG5cdCAqIEBwYXJhbSBvRmlsdGVyQmFyIGZpbHRlcmJhciBjb250cm9sIGlzIHVzZWQgdG8gZGlzcGxheSBmaWx0ZXIgcHJvcGVydGllcyBpbiBhIHVzZXItZnJpZW5kbHkgbWFubmVyIHRvIHBvcHVsYXRlIHZhbHVlcyBmb3IgYSBxdWVyeVxuXHQgKiBAcmV0dXJucyBwcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gb2JqZWN0XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZm5DbGVhclN0YXRlQmVmb3JleEFwcE5hdjogYXN5bmMgZnVuY3Rpb24gKG9GaWx0ZXJCYXI6IEZpbHRlckJhcikge1xuXHRcdHJldHVybiBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIpXG5cdFx0XHQudGhlbigob0V4dGVybmFsU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29uZGl0aW9uID0gb0V4dGVybmFsU3RhdGUuZmlsdGVyO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGZpZWxkIGluIG9Db25kaXRpb24pIHtcblx0XHRcdFx0XHRpZiAoZmllbGQgIT09IFwiJGVkaXRTdGF0ZVwiICYmIGZpZWxkICE9PSBcIiRzZWFyY2hcIiAmJiBvQ29uZGl0aW9uW2ZpZWxkXSkge1xuXHRcdFx0XHRcdFx0b0NvbmRpdGlvbltmaWVsZF0uZm9yRWFjaCgoY29uZGl0aW9uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25bXCJmaWx0ZXJlZFwiXSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUob0NvbmRpdGlvbik7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZVwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0sXG5cblx0X2ZuQXBwbHlDb25kaXRpb25zOiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogYW55LCBvQ29uZGl0aW9uczogYW55LCBiSXNGTFBWYWx1ZVByZXNlbnQ/OiBib29sZWFuKSB7XG5cdFx0Y29uc3QgbUZpbHRlcjogYW55ID0ge30sXG5cdFx0XHRhSXRlbXM6IGFueVtdID0gW10sXG5cdFx0XHRmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbiA9IGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSB0aGUgY29uZGl0aW9uIGlzIG1lYW50IGZvciBhIGZpZWxkIGhhdmluZyBhIFZILCB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IE1EQyBkaWZmZXJzXG5cdFx0XHRcdG9Db25kaXRpb24udmFsaWRhdGVkID0gQ29uZGl0aW9uVmFsaWRhdGVkLlZhbGlkYXRlZDtcblx0XHRcdFx0aWYgKG9Db25kaXRpb24ub3BlcmF0b3IgPT09IFwiRW1wdHlcIikge1xuXHRcdFx0XHRcdG9Db25kaXRpb24ub3BlcmF0b3IgPSBcIkVRXCI7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi52YWx1ZXMgPSBbXCJcIl07XG5cdFx0XHRcdH0gZWxzZSBpZiAob0NvbmRpdGlvbi5vcGVyYXRvciA9PT0gXCJOb3RFbXB0eVwiKSB7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi5vcGVyYXRvciA9IFwiTkVcIjtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbHVlcyA9IFtcIlwiXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWxldGUgb0NvbmRpdGlvbi5pc0VtcHR5O1xuXHRcdFx0fTtcblx0XHRjb25zdCBmbkdldFByb3BlcnR5SW5mbyA9IGZ1bmN0aW9uIChvRmlsdGVyQ29udHJvbDogYW55LCBzRW50aXR5VHlwZVBhdGg6IGFueSkge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKHNFbnRpdHlUeXBlUGF0aCksXG5cdFx0XHRcdG9NZXRhTW9kZWwgPSBvRmlsdGVyQ29udHJvbC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRvRlIgPSBDb21tb25VdGlscy5nZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgoc0VudGl0eVNldFBhdGgsIG9NZXRhTW9kZWwpLFxuXHRcdFx0XHRhTm9uRmlsdGVyYWJsZVByb3BzID0gb0ZSLk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzLFxuXHRcdFx0XHRtRmlsdGVyRmllbGRzID0gRmlsdGVyVXRpbHMuZ2V0Q29udmVydGVkRmlsdGVyRmllbGRzKG9GaWx0ZXJDb250cm9sLCBzRW50aXR5VHlwZVBhdGgpLFxuXHRcdFx0XHRhUHJvcGVydHlJbmZvOiBhbnlbXSA9IFtdO1xuXHRcdFx0bUZpbHRlckZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChvQ29udmVydGVkUHJvcGVydHkpIHtcblx0XHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IG9Db252ZXJ0ZWRQcm9wZXJ0eS5jb25kaXRpb25QYXRoLnJlcGxhY2UoQ09ORElUSU9OX1BBVEhfVE9fUFJPUEVSVFlfUEFUSF9SRUdFWCwgXCJcIik7XG5cdFx0XHRcdGlmIChhTm9uRmlsdGVyYWJsZVByb3BzLmluZGV4T2Yoc1Byb3BlcnR5UGF0aCkgPT09IC0xKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gb0NvbnZlcnRlZFByb3BlcnR5LmFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdGNvbnN0IG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNBbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRcdFx0YVByb3BlcnR5SW5mby5wdXNoKHtcblx0XHRcdFx0XHRcdHBhdGg6IG9Db252ZXJ0ZWRQcm9wZXJ0eS5jb25kaXRpb25QYXRoLFxuXHRcdFx0XHRcdFx0aGlkZGVuRmlsdGVyOiBvQ29udmVydGVkUHJvcGVydHkuYXZhaWxhYmlsaXR5ID09PSBcIkhpZGRlblwiLFxuXHRcdFx0XHRcdFx0aGFzVmFsdWVIZWxwOiAhc0Fubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0XHRcdD8gZmFsc2Vcblx0XHRcdFx0XHRcdFx0OiBQcm9wZXJ0eUZvcm1hdHRlcnMuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eUNvbnRleHQuZ2V0T2JqZWN0KCksIHsgY29udGV4dDogb1Byb3BlcnR5Q29udGV4dCB9KVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBhUHJvcGVydHlJbmZvO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gb0ZpbHRlckJhci53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKS50aGVuKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHNFbnRpdHlUeXBlUGF0aCA9IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhKG9GaWx0ZXJCYXIsIFwiZW50aXR5VHlwZVwiKTtcblx0XHRcdC8vIER1cmluZyBleHRlcm5hbCBhcHAgbmF2aWdhdGlvbiwgd2UgaGF2ZSB0byBjbGVhciB0aGUgZXhpc3RpbmcgY29uZGl0aW9ucyB0byBhdm9pZCBtZXJnaW5nIG9mIHZhbHVlcyBjb21pbmcgZnJvbSBhbm5vdGF0aW9uIGFuZCBjb250ZXh0XG5cdFx0XHQvLyBDb25kaXRpb24gIWJJc0ZMUFZhbHVlUHJlc2VudCBpbmRpY2F0ZXMgaXQncyBleHRlcm5hbCBhcHAgbmF2aWdhdGlvblxuXHRcdFx0aWYgKCFiSXNGTFBWYWx1ZVByZXNlbnQpIHtcblx0XHRcdFx0Y29uc3Qgb0NsZWFyQ29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYob0ZpbHRlckJhcik7XG5cdFx0XHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUob0ZpbHRlckJhciwge1xuXHRcdFx0XHRcdGZpbHRlcjogb0NsZWFyQ29uZGl0aW9ucyxcblx0XHRcdFx0XHRpdGVtczogYUl0ZW1zXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYVByb3BlcnR5SW5mbyA9IGZuR2V0UHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIsIHNFbnRpdHlUeXBlUGF0aCk7XG5cdFx0XHRhUHJvcGVydHlJbmZvXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Qcm9wZXJ0eUluZm86IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBvUHJvcGVydHlJbmZvLnBhdGggIT09IFwiJGVkaXRTdGF0ZVwiICYmIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkc2VhcmNoXCI7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKChvUHJvcGVydHlJbmZvOiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAob1Byb3BlcnR5SW5mby5wYXRoIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSB0aGlzLl9mbkRlY29kZUNvbmRpdGlvbnNWYWx1ZXMob0NvbmRpdGlvbnNbb1Byb3BlcnR5SW5mby5wYXRoXSk7XG5cdFx0XHRcdFx0XHRpZiAoIW9Qcm9wZXJ0eUluZm8uaGlkZGVuRmlsdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGFJdGVtcy5wdXNoKHsgbmFtZTogb1Byb3BlcnR5SW5mby5wYXRoIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG9Qcm9wZXJ0eUluZm8uaGFzVmFsdWVIZWxwKSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbGlkYXRlZCA9IG9Db25kaXRpb24uZmlsdGVyZWQgPyBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkIDogb0NvbmRpdGlvbi52YWxpZGF0ZWQ7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUob0ZpbHRlckJhciwgeyBmaWx0ZXI6IG1GaWx0ZXIsIGl0ZW1zOiBhSXRlbXMgfSk7XG5cdFx0fSk7XG5cdH0sXG5cblx0X2lzRW5jb2RlZDogZnVuY3Rpb24gKHN0cjogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSShzdHIpICE9PSBzdHI7XG5cdH0sXG5cblx0Lypcblx0ICogRGVjb2RlIHRoZSB2YWx1ZSBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGRlY29kZWQgdmFsdWVcblx0ICpcblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqIEByZXR1cm5zIHRoZSBkZWNvZGVkIHZhbHVlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZGVjb2RlVmFsdWU6IGZ1bmN0aW9uICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgZGVjb2RlZFZhbHVlID0gdmFsdWU7XG5cdFx0bGV0IHByZXZpb3VzVmFsdWUgPSBcIlwiO1xuXHRcdHdoaWxlICh0aGlzLl9pc0VuY29kZWQoZGVjb2RlZFZhbHVlKSAmJiBkZWNvZGVkVmFsdWUgIT09IHByZXZpb3VzVmFsdWUpIHtcblx0XHRcdHByZXZpb3VzVmFsdWUgPSBkZWNvZGVkVmFsdWU7XG5cdFx0XHRkZWNvZGVkVmFsdWUgPSBkZWNvZGVVUkkoZGVjb2RlZFZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGRlY29kZWRWYWx1ZTtcblx0fSxcblxuXHQvKlxuXHQgKiBEZWNvZGUgdGhlIGNvbmRpdGlvbnMgdmFsdWVzIHdoZW4gbmVjZXNzYXJ5XG5cdCAqXG5cdCAqIEBwYXJhbSBvYmplY3QgY29uZGl0aW9uc1xuXHQgKiBAcmV0dXJucyB0aGUgb2JqZWN0IGNvbmRpdGlvbnMgd2l0aCBhbGwgdGhlIHZhbHVlcyBkZWNvZGVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZm5EZWNvZGVDb25kaXRpb25zVmFsdWVzOiBmdW5jdGlvbiAoY29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgdmFsdWVzID0gY29uZGl0aW9ucy5maWx0ZXIoKGNvbmRpdGlvbjogYW55KSA9PiBjb25kaXRpb24udmFsdWVzKTtcblx0XHR2YWx1ZXMuZm9yRWFjaCgoaXRlbTogeyB2YWx1ZXM6IChzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyKVtdIH0pID0+IHtcblx0XHRcdGl0ZW0udmFsdWVzID0gaXRlbS52YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2RlY29kZVZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHJldHVybiBj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
496
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiQ09ORElUSU9OX1BBVEhfVE9fUFJPUEVSVFlfUEFUSF9SRUdFWCIsIlZpZXdTdGF0ZU92ZXJyaWRlIiwiX2JTZWFyY2hUcmlnZ2VyZWQiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJvbkJlZm9yZVN0YXRlQXBwbGllZCIsImFQcm9taXNlcyIsIm5hdmlnYXRpb25UeXBlIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiYVRhYmxlcyIsIl9nZXRDb250cm9scyIsInNldFN1c3BlbmRTZWxlY3Rpb24iLCJwdXNoIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiaHlicmlkIiwiX2NsZWFyRmlsdGVyQ29uZGl0aW9ucyIsImZvckVhY2giLCJvVGFibGUiLCJpbml0aWFsaXplZCIsIm9uQWZ0ZXJTdGF0ZUFwcGxpZWQiLCJfaXNGaWx0ZXJCYXJIaWRkZW4iLCJvSW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInNldFByb3BlcnR5IiwiX2lzTXVsdGlNb2RlIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsImFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyIsImFDb250cm9scyIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJvUXVpY2tGaWx0ZXIiLCJnZXRRdWlja0ZpbHRlciIsImdldFZhcmlhbnQiLCJvQ2hhcnQiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsIl9nZXRTZWdtZW50ZWRCdXR0b24iLCJDaGFydCIsIlRhYmxlIiwiYnlJZCIsInJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyIsIm1BZGRpdGlvbmFsU3RhdGVzIiwiYlBlbmRpbmdGaWx0ZXIiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwidHJpZ2dlclNlYXJjaCIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsImdldFBhdGgiLCJfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyIiwib05hdmlnYXRpb25QYXJhbWV0ZXIiLCJhUmVzdWx0cyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzdGFydHVwUGFyYW1ldGVycyIsIm9WYXJpYW50UHJvbWlzZSIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImJGaWx0ZXJWYXJpYW50QXBwbGllZCIsInRoZW4iLCJhVmFyaWFudHMiLCJsZW5ndGgiLCJfYXBwbHlTZWxlY3Rpb25WYXJpYW50Iiwib0R5bmFtaWNQYWdlIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsIm9GaWx0ZXJCYXJDb250cm9sIiwiaW5pdGlhbCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX3ByZXZlbnRJbml0aWFsU2VhcmNoIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwib1VybFBhcmFtcyIsImFQYWdlVmFyaWFudElkIiwiYUZpbHRlckJhclZhcmlhbnRJZCIsImFUYWJsZVZhcmlhbnRJZCIsImFDaGFydFZhcmlhbnRJZCIsIm9WYXJpYW50SURzIiwic1BhZ2VWYXJpYW50SWQiLCJzRmlsdGVyQmFyVmFyaWFudElkIiwic1RhYmxlVmFyaWFudElkIiwic0NoYXJ0VmFyaWFudElkIiwiX2hhbmRsZUNvbnRyb2xWYXJpYW50SWQiLCJvVk0iLCJzVmFyaWFudE1hbmFnZW1lbnQiLCJfaGFuZGxlUGFnZVZhcmlhbnRJZCIsIl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCIsIl9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkIiwiX2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZCIsIl9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0VmFyaWFudHMiLCJvVmFyaWFudCIsIl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2UiLCJvVGFibGVWYXJpYW50IiwiYUNoYXJ0cyIsIm9DaGFydFZhcmlhbnQiLCJzVmFyaWFudElkIiwia2V5IiwiX2FwcGx5Q29udHJvbFZhcmlhbnQiLCJzVmFyaWFudElEIiwic1ZhcmlhbnRSZWZlcmVuY2UiLCJfY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlIiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsImFjdGl2YXRlVmFyaWFudCIsImVsZW1lbnQiLCJ2YXJpYW50UmVmZXJlbmNlIiwiUGFnZSIsIk5vbmUiLCJFcnJvciIsIm9WYXJpYW50TWFuYWdlbWVudCIsIm9DdXJyZW50VmFyaWFudCIsImZpbmQiLCJvSXRlbSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwiZXhlY3V0ZU9uU2VsZWN0Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsInNlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsInJlc29sdmUiLCJvQ29uZGl0aW9ucyIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJzQ29udGV4dFBhdGgiLCJjb250ZXh0UGF0aCIsImVudGl0eVNldCIsImFNYW5kYXRvcnlGaWx0ZXJGaWVsZHMiLCJDb21tb25VdGlscyIsImdldE1hbmRhdG9yeUZpbHRlckZpZWxkcyIsImJVc2VTZW1hbnRpY0RhdGVSYW5nZSIsImRhdGEiLCJiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJiSXNGTFBWYWx1ZVByZXNlbnQiLCJnZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcyIsImdldERlZmF1bHRWYXJpYW50S2V5IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsImdldENvbmRpdGlvbnMiLCJhZGREZWZhdWx0RGlzcGxheUN1cnJlbmN5IiwiYWRkU2VsZWN0aW9uVmFyaWFudFRvQ29uZGl0aW9ucyIsIl9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQiLCJvUHJvbWlzZSIsIm9WYXJpYW50S2V5IiwiZ2V0SWQiLCJiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlIiwiX2ZuQXBwbHlDb25kaXRpb25zIiwiX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYiLCJTdGF0ZVV0aWwiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJvRXh0ZXJuYWxTdGF0ZSIsIm9Db25kaXRpb24iLCJmaWx0ZXIiLCJmaWVsZCIsImNvbmRpdGlvbiIsIm9FcnJvciIsIm1GaWx0ZXIiLCJhSXRlbXMiLCJmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbiIsInZhbGlkYXRlZCIsIkNvbmRpdGlvblZhbGlkYXRlZCIsIlZhbGlkYXRlZCIsIm9wZXJhdG9yIiwidmFsdWVzIiwiaXNFbXB0eSIsImZuR2V0UHJvcGVydHlJbmZvIiwib0ZpbHRlckNvbnRyb2wiLCJzRW50aXR5VHlwZVBhdGgiLCJzRW50aXR5U2V0UGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0RW50aXR5U2V0UGF0aCIsIm9GUiIsImdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aCIsImFOb25GaWx0ZXJhYmxlUHJvcHMiLCJOb25GaWx0ZXJhYmxlUHJvcGVydGllcyIsIm1GaWx0ZXJGaWVsZHMiLCJGaWx0ZXJVdGlscyIsImdldENvbnZlcnRlZEZpbHRlckZpZWxkcyIsImFQcm9wZXJ0eUluZm8iLCJvQ29udmVydGVkUHJvcGVydHkiLCJzUHJvcGVydHlQYXRoIiwiY29uZGl0aW9uUGF0aCIsInJlcGxhY2UiLCJpbmRleE9mIiwic0Fubm90YXRpb25QYXRoIiwiYW5ub3RhdGlvblBhdGgiLCJvUHJvcGVydHlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwYXRoIiwiaGlkZGVuRmlsdGVyIiwiYXZhaWxhYmlsaXR5IiwiaGFzVmFsdWVIZWxwIiwiUHJvcGVydHlGb3JtYXR0ZXJzIiwiZ2V0T2JqZWN0IiwiY29udGV4dCIsIkRlbGVnYXRlVXRpbCIsImdldEN1c3RvbURhdGEiLCJvQ2xlYXJDb25kaXRpb25zIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiaXRlbXMiLCJvUHJvcGVydHlJbmZvIiwibmFtZSIsImZpbHRlcmVkIiwiTm90VmFsaWRhdGVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaWV3U3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5Rm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUZvcm1hdHRlcnNcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwsIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgTmF2TGlicmFyeSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBzeXN0ZW0gfSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBTdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBTdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IFN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogU3RyaW5nO1xuXHR0aXRsZTogU3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xufTtcblxudHlwZSBWYXJpYW50SURzID0ge1xuXHRzUGFnZVZhcmlhbnRJZDogU3RyaW5nO1xuXHRzRmlsdGVyQmFyVmFyaWFudElkOiBTdHJpbmc7XG5cdHNUYWJsZVZhcmlhbnRJZDogU3RyaW5nO1xuXHRzQ2hhcnRWYXJpYW50SWQ6IFN0cmluZztcbn07XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlLFxuXHRDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYID0gL1xcK3xcXCovZztcblxuY29uc3QgVmlld1N0YXRlT3ZlcnJpZGU6IGFueSA9IHtcblx0X2JTZWFyY2hUcmlnZ2VyZWQ6IGZhbHNlLFxuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0b25CZWZvcmVTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFQcm9taXNlczogYW55LCBuYXZpZ2F0aW9uVHlwZT86IHN0cmluZykge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpLFxuXHRcdFx0YVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCgob0ZpbHRlckJhciBhcyBhbnkpLndhaXRGb3JJbml0aWFsaXphdGlvbigpKTtcblx0XHRcdC8vVGhpcyBpcyByZXF1aXJlZCB0byByZW1vdmUgYW55IGV4aXN0aW5nIG9yIGRlZmF1bHQgZmlsdGVyIGNvbmRpdGlvbnMgYmVmb3JlIHJlc3RvcmluZyB0aGUgZmlsdGVyIGJhciBzdGF0ZSBpbiBoeWJyaWQgbmF2aWdhdGlvbiBtb2RlLlxuXHRcdFx0aWYgKG5hdmlnYXRpb25UeXBlID09PSBOYXZUeXBlLmh5YnJpZCkge1xuXHRcdFx0XHR0aGlzLl9jbGVhckZpbHRlckNvbmRpdGlvbnMob0ZpbHRlckJhcik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGFUYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGFQcm9taXNlcy5wdXNoKG9UYWJsZS5pbml0aWFsaXplZCgpKTtcblx0XHR9KTtcblxuXHRcdGRlbGV0ZSB0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHR9LFxuXHRvbkFmdGVyU3RhdGVBcHBsaWVkOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbihmYWxzZSk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbGxlci5faXNGaWx0ZXJCYXJIaWRkZW4oKSkge1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCBmYWxzZSk7XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdFx0b0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKS5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRhVmlld0NvbnRyb2xzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKCksXG5cdFx0XHRhQ29udHJvbHNUb1JlZnJlc2ggPSBLZWVwQWxpdmVIZWxwZXIuZ2V0Q29udHJvbHNGb3JSZWZyZXNoKG9WaWV3LCBhVmlld0NvbnRyb2xzKTtcblxuXHRcdEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFDb250cm9scywgYUNvbnRyb2xzVG9SZWZyZXNoKTtcblx0fSxcblx0YWRhcHRTdGF0ZUNvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBhU3RhdGVDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKSxcblx0XHRcdGJDb250cm9sVk0gPSBvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQgPT09IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Db250cm9sO1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckJhclZNID0gdGhpcy5fZ2V0RmlsdGVyQmFyVk0ob1ZpZXcpO1xuXHRcdGlmIChvRmlsdGVyQmFyVk0pIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhclZNKTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCkpO1xuXHRcdH1cblx0XHRvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0Y29uc3Qgb1F1aWNrRmlsdGVyID0gb1RhYmxlLmdldFF1aWNrRmlsdGVyKCk7XG5cdFx0XHRpZiAob1F1aWNrRmlsdGVyKSB7XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1F1aWNrRmlsdGVyKTtcblx0XHRcdH1cblx0XHRcdGlmIChiQ29udHJvbFZNKSB7XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlLmdldFZhcmlhbnQoKSk7XG5cdFx0XHR9XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZSk7XG5cdFx0fSk7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpKSB7XG5cdFx0XHRvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvQ2hhcnQ6IGFueSkge1xuXHRcdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NoYXJ0LmdldFZhcmlhbnQoKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRvRmlsdGVyQmFyLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdGlmICghc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuc2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLCBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50Vmlldyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvRHluYW1pY1BhZ2UgPSBvQ29udHJvbGxlci5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCk7XG5cdFx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyQ29udHJvbCA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRcdFx0aWYgKG9GaWx0ZXJCYXJDb250cm9sKSB7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdChvTmF2aWdhdGlvblBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSAhPT0gTmF2VHlwZS5pbml0aWFsICYmIG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnJlcXVpcmVzU3RhbmRhcmRWYXJpYW50KSB8fFxuXHRcdFx0XHRcdFx0XHQoIW9GaWx0ZXJCYXJWTSAmJiBvVmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdFx0b0NvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9GaWx0ZXJCYXJWTSlcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRiUHJldmVudEluaXRpYWxTZWFyY2ggPSB0aGlzLl9wcmV2ZW50SW5pdGlhbFNlYXJjaChvRmlsdGVyQmFyVk0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gcmVzZXQgdGhlIHN1c3BlbmQgc2VsZWN0aW9uIG9uIGZpbHRlciBiYXIgdG8gYWxsb3cgbG9hZGluZyBvZiBkYXRhIHdoZW4gbmVlZGVkICh3YXMgc2V0IG9uIExSIEluaXQpXG5cdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSAhYlByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdFx0XHRcdFx0b0R5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHN5c3RlbS5kZXNrdG9wIHx8IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhQ2hhcnRWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWNoYXJ0LXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50SURzO1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCB8fCBhQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdG9WYXJpYW50SURzID0ge1xuXHRcdFx0XHRzUGFnZVZhcmlhbnRJZDogYVBhZ2VWYXJpYW50SWQgJiYgYVBhZ2VWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNGaWx0ZXJCYXJWYXJpYW50SWQ6IGFGaWx0ZXJCYXJWYXJpYW50SWQgJiYgYUZpbHRlckJhclZhcmlhbnRJZFswXSxcblx0XHRcdFx0c1RhYmxlVmFyaWFudElkOiBhVGFibGVWYXJpYW50SWQgJiYgYVRhYmxlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzQ2hhcnRWYXJpYW50SWQ6IGFDaGFydFZhcmlhbnRJZCAmJiBhQ2hhcnRWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50SURzKTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMpIHtcblx0XHRsZXQgb1ZNOiBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHR0aGlzLl9oYW5kbGVQYWdlVmFyaWFudElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0fSBlbHNlIGlmIChvVmFyaWFudElEcyAmJiBzVmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCkge1xuXHRcdFx0XHRvVk0gPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQob1ZhcmlhbnRJRHMsIG9WTSwgYVByb21pc2VzKTtcblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvVmFyaWFudElEcy5zQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xuXHR9LFxuXHQvKlxuXHQgKiBIYW5kbGVzIHBhZ2UgbGV2ZWwgdmFyaWFudCBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgcGFnZSB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlUGFnZVZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zUGFnZVZhcmlhbnRJZCwgb1ZNLCBhUHJvbWlzZXMsIHRydWUpO1xuXHRcdH0pO1xuXHR9LFxuXG5cdC8qXG5cdCAqIEhhbmRsZXMgY29udHJvbCBsZXZlbCB2YXJpYW50IGZvciBmaWx0ZXIgYmFyIGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvVk0gY29udGFpbnMgdGhlIHZhaXJhbnQgbWFuYWdlbWVudCBvYmplY3QgZm9yIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXG5cdF9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9WTTogVmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdXG5cdCkge1xuXHRcdGlmIChvVk0pIHtcblx0XHRcdG9WTS5nZXRWYXJpYW50cygpLmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCwgb1ZNLCBhUHJvbWlzZXMsIHRydWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qXG5cdCAqIEhhbmRsZXMgY29udHJvbCBsZXZlbCB2YXJpYW50IGZvciB0YWJsZSBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgaGFzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIG9iamVjdFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvQ29udHJvbGxlcjogTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdXG5cdCkge1xuXHRcdGNvbnN0IGFUYWJsZXMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKTtcblx0XHRhVGFibGVzLmZvckVhY2goKG9UYWJsZTogVGFibGUpID0+IHtcblx0XHRcdGNvbnN0IG9UYWJsZVZhcmlhbnQgPSBvVGFibGUuZ2V0VmFyaWFudCgpO1xuXHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGVWYXJpYW50KSB7XG5cdFx0XHRcdG9UYWJsZVZhcmlhbnQuZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkLCBvVGFibGVWYXJpYW50LCBhUHJvbWlzZXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgY2hhcnQgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIGhhcyB0aGUgbGlzdCByZXBvcnQgY29udHJvbGxlciBvYmplY3Rcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b0NvbnRyb2xsZXI6IExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRjb25zdCBhQ2hhcnRzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIik7XG5cdFx0YUNoYXJ0cy5mb3JFYWNoKChvQ2hhcnQ6IENoYXJ0KSA9PiB7XG5cdFx0XHRjb25zdCBvQ2hhcnRWYXJpYW50ID0gb0NoYXJ0LmdldFZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IGFWYXJpYW50cyA9IG9DaGFydFZhcmlhbnQuZ2V0VmFyaWFudHMoKTtcblx0XHRcdGlmIChhVmFyaWFudHMpIHtcblx0XHRcdFx0YVZhcmlhbnRzLmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zQ2hhcnRWYXJpYW50SWQsIG9DaGFydFZhcmlhbnQsIGFQcm9taXNlcyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXHQvKlxuXHQgKiBNYXRjaGVzIHRoZSB2YXJpYW50IElEIHByb3ZpZGVkIGluIHRoZSB1cmwgdG8gdGhlIGF2YWlsYWJsZSB2YWlyYW50IElEcyBhbmQgcHVzaGVzIHRoZSBhcHByb3ByaWF0ZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaWFudCBpcyBhbiBvYmplY3QgZm9yIGEgc3BlY2lmaWMgdmFyaWFudFxuXHQgKiBAcGFyYW0gc1ZhcmlhbnRJZCBpcyB0aGUgdmFyaWFudCBJRCBwcm92aWRlZCBpbiB0aGUgdXJsXG5cdCAqIEBwYXJhbSBvVk0gaXMgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBvYmplY3QgZm9yIHRoZSBzcGVjZmljIHZhcmlhbnRcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBwcm9taXNlc1xuXHQgKiBAcGFyYW0gYkZpbHRlclZhcmlhbnRBcHBsaWVkIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyBzZXQgdG8gdHVyZSBpbiBjYXNlIHRoZSBmaWx0ZXIgdmFyaWFudCBpcyBhcHBsaWVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlOiBmdW5jdGlvbiAoXG5cdFx0Ly9UaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBzdWl0YWJsZSB2YXJpYW50IGZvciB0aGUgdmFyaWFudElEIHByb3ZpZGVkIGluIHRoZSB1cmwgYW5kIHB1c2hlcyB0aGVtIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50OiBWYXJpYW50T2JqZWN0LFxuXHRcdHNWYXJpYW50SWQ6IFN0cmluZyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXSxcblx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQ/OiBib29sZWFuXG5cdCkge1xuXHRcdGlmIChvVmFyaWFudC5rZXkgPT09IHNWYXJpYW50SWQpIHtcblx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBzVmFyaWFudElkLCBiRmlsdGVyVmFyaWFudEFwcGxpZWQpKTtcblx0XHR9XG5cdH0sXG5cblx0X2FwcGx5Q29udHJvbFZhcmlhbnQ6IGZ1bmN0aW9uIChvVmFyaWFudDogYW55LCBzVmFyaWFudElEOiBhbnksIGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55KSB7XG5cdFx0Y29uc3Qgc1ZhcmlhbnRSZWZlcmVuY2UgPSB0aGlzLl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUob1ZhcmlhbnQsIHNWYXJpYW50SUQpID8gc1ZhcmlhbnRJRCA6IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpO1xuXHRcdGNvbnN0IG9WTSA9IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0dmFyaWFudFJlZmVyZW5jZTogc1ZhcmlhbnRSZWZlcmVuY2Vcblx0XHR9KTtcblx0XHRyZXR1cm4gb1ZNLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGJGaWx0ZXJWYXJpYW50QXBwbGllZDtcblx0XHR9KTtcblx0fSxcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogcHJpdmF0ZSBoZWxwZXIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0X2dldEZpbHRlckJhclZNOiBmdW5jdGlvbiAob1ZpZXc6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLlBhZ2U6XG5cdFx0XHRcdHJldHVybiBvVmlldy5ieUlkKFwiZmU6OlBhZ2VWYXJpYW50TWFuYWdlbWVudFwiKTtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdHJldHVybiBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdW5oYW5kbGVkIHZhcmlhbnQgc2V0dGluZzogJHtvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnR9YCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9wcmV2ZW50SW5pdGlhbFNlYXJjaDogZnVuY3Rpb24gKG9WYXJpYW50TWFuYWdlbWVudDogYW55KSB7XG5cdFx0aWYgKCFvVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBhVmFyaWFudHMgPSBvVmFyaWFudE1hbmFnZW1lbnQuZ2V0VmFyaWFudHMoKTtcblx0XHRjb25zdCBvQ3VycmVudFZhcmlhbnQgPSBhVmFyaWFudHMuZmluZChmdW5jdGlvbiAob0l0ZW06IGFueSkge1xuXHRcdFx0cmV0dXJuIG9JdGVtLmtleSA9PT0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuICFvQ3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0O1xuXHR9LFxuXG5cdF9hcHBseVNlbGVjdGlvblZhcmlhbnQ6IGZ1bmN0aW9uIChvVmlldzogYW55LCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhckNvbnRyb2woKSxcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMgPSBvTmF2aWdhdGlvblBhcmFtZXRlci5zZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM7XG5cdFx0aWYgKCFvRmlsdGVyQmFyIHx8ICFvU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0XHRsZXQgb0NvbmRpdGlvbnMgPSB7fTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1ZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHNDb250ZXh0UGF0aCA9IG9WaWV3RGF0YS5jb250ZXh0UGF0aCB8fCBgLyR7b1ZpZXdEYXRhLmVudGl0eVNldH1gO1xuXHRcdGNvbnN0IGFNYW5kYXRvcnlGaWx0ZXJGaWVsZHMgPSBDb21tb25VdGlscy5nZXRNYW5kYXRvcnlGaWx0ZXJGaWVsZHMob01ldGFNb2RlbCwgc0NvbnRleHRQYXRoKTtcblx0XHRjb25zdCBiVXNlU2VtYW50aWNEYXRlUmFuZ2UgPSBvRmlsdGVyQmFyLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKTtcblx0XHRsZXQgb1ZhcmlhbnQ7XG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLlBhZ2U6XG5cdFx0XHRcdG9WYXJpYW50ID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0b1ZhcmlhbnQgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjb25zdCBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgPSBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudDtcblx0XHQvLyBjaGVjayBpZiBGTFAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZXJlIGFuZCBpcyBpdCBzdGFuZGFyZCB2YXJpYW50XG5cdFx0Y29uc3QgYklzRkxQVmFsdWVQcmVzZW50OiBib29sZWFuID1cblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMgJiZcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMuZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMoKS5sZW5ndGggPiAwICYmXG5cdFx0XHRvVmFyaWFudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSAmJlxuXHRcdFx0b05hdmlnYXRpb25QYXJhbWV0ZXIuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTtcblxuXHRcdC8vIGdldCBjb25kaXRpb25zIHdoZW4gRkxQIHZhbHVlIGlzIHByZXNlbnRcblx0XHRpZiAoYkZpbHRlclZhcmlhbnRBcHBsaWVkIHx8IGJJc0ZMUFZhbHVlUHJlc2VudCkge1xuXHRcdFx0b0NvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKTtcblx0XHR9XG5cdFx0Q29tbW9uVXRpbHMuYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeShhTWFuZGF0b3J5RmlsdGVyRmllbGRzLCBvU2VsZWN0aW9uVmFyaWFudCwgb1NlbGVjdGlvblZhcmlhbnREZWZhdWx0cyk7XG5cdFx0Q29tbW9uVXRpbHMuYWRkU2VsZWN0aW9uVmFyaWFudFRvQ29uZGl0aW9ucyhcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0b0NvbmRpdGlvbnMsXG5cdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0c0NvbnRleHRQYXRoLFxuXHRcdFx0YklzRkxQVmFsdWVQcmVzZW50LFxuXHRcdFx0YlVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0b1ZpZXdEYXRhXG5cdFx0KTtcblxuXHRcdHJldHVybiB0aGlzLl9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQoXG5cdFx0XHRvRmlsdGVyQmFyLFxuXHRcdFx0b0NvbmRpdGlvbnMsXG5cdFx0XHRvVmFyaWFudCxcblx0XHRcdGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCxcblx0XHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZCxcblx0XHRcdGJJc0ZMUFZhbHVlUHJlc2VudFxuXHRcdCk7XG5cdH0sXG5cdF9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQ6IGZ1bmN0aW9uIChcblx0XHRvRmlsdGVyQmFyOiBhbnksXG5cdFx0b0NvbmRpdGlvbnM6IGFueSxcblx0XHRvVmFyaWFudDogYW55LFxuXHRcdGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogYW55LFxuXHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55LFxuXHRcdGJJc0ZMUFZhbHVlUHJlc2VudD86IGJvb2xlYW5cblx0KSB7XG5cdFx0bGV0IG9Qcm9taXNlO1xuXG5cdFx0aWYgKG9WYXJpYW50ICYmICFiRmlsdGVyVmFyaWFudEFwcGxpZWQpIHtcblx0XHRcdGxldCBvVmFyaWFudEtleSA9IGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCA/IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpIDogb1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKTtcblx0XHRcdGlmIChvVmFyaWFudEtleSA9PT0gbnVsbCkge1xuXHRcdFx0XHRvVmFyaWFudEtleSA9IG9WYXJpYW50LmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRvUHJvbWlzZSA9IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0ZWxlbWVudDogb1ZhcmlhbnQsXG5cdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IG9WYXJpYW50S2V5XG5cdFx0XHR9KS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCB8fCBvVmFyaWFudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Qcm9taXNlLnRoZW4oKGJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0aWYgKGJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX2ZuQXBwbHlDb25kaXRpb25zKG9GaWx0ZXJCYXIsIG9Db25kaXRpb25zLCBiSXNGTFBWYWx1ZVByZXNlbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdC8qXG5cdCAqIFNldHMgZmlsdGVyZWQ6IGZhbHNlIGZsYWcgdG8gZXZlcnkgZmllbGQgc28gdGhhdCBpdCBjYW4gYmUgY2xlYXJlZCBvdXRcblx0ICpcblx0ICogQHBhcmFtIG9GaWx0ZXJCYXIgZmlsdGVyYmFyIGNvbnRyb2wgaXMgdXNlZCB0byBkaXNwbGF5IGZpbHRlciBwcm9wZXJ0aWVzIGluIGEgdXNlci1mcmllbmRseSBtYW5uZXIgdG8gcG9wdWxhdGUgdmFsdWVzIGZvciBhIHF1ZXJ5XG5cdCAqIEByZXR1cm5zIHByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBvYmplY3Rcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9mbkNsZWFyU3RhdGVCZWZvcmV4QXBwTmF2OiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogRmlsdGVyQmFyKSB7XG5cdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUob0ZpbHRlckJhcilcblx0XHRcdC50aGVuKChvRXh0ZXJuYWxTdGF0ZTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db25kaXRpb24gPSBvRXh0ZXJuYWxTdGF0ZS5maWx0ZXI7XG5cdFx0XHRcdGZvciAoY29uc3QgZmllbGQgaW4gb0NvbmRpdGlvbikge1xuXHRcdFx0XHRcdGlmIChmaWVsZCAhPT0gXCIkZWRpdFN0YXRlXCIgJiYgZmllbGQgIT09IFwiJHNlYXJjaFwiICYmIG9Db25kaXRpb25bZmllbGRdKSB7XG5cdFx0XHRcdFx0XHRvQ29uZGl0aW9uW2ZpZWxkXS5mb3JFYWNoKChjb25kaXRpb246IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbltcImZpbHRlcmVkXCJdID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShvQ29uZGl0aW9uKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJldHJpZXZpbmcgdGhlIGV4dGVybmFsIHN0YXRlXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSxcblxuXHRfZm5BcHBseUNvbmRpdGlvbnM6IGFzeW5jIGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBhbnksIG9Db25kaXRpb25zOiBhbnksIGJJc0ZMUFZhbHVlUHJlc2VudD86IGJvb2xlYW4pIHtcblx0XHRjb25zdCBtRmlsdGVyOiBhbnkgPSB7fSxcblx0XHRcdGFJdGVtczogYW55W10gPSBbXSxcblx0XHRcdGZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uID0gZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHQvLyBpbiBjYXNlIHRoZSBjb25kaXRpb24gaXMgbWVhbnQgZm9yIGEgZmllbGQgaGF2aW5nIGEgVkgsIHRoZSBmb3JtYXQgcmVxdWlyZWQgYnkgTURDIGRpZmZlcnNcblx0XHRcdFx0b0NvbmRpdGlvbi52YWxpZGF0ZWQgPSBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkO1xuXHRcdFx0XHRpZiAob0NvbmRpdGlvbi5vcGVyYXRvciA9PT0gXCJFbXB0eVwiKSB7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi5vcGVyYXRvciA9IFwiRVFcIjtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbHVlcyA9IFtcIlwiXTtcblx0XHRcdFx0fSBlbHNlIGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIk5vdEVtcHR5XCIpIHtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLm9wZXJhdG9yID0gXCJORVwiO1xuXHRcdFx0XHRcdG9Db25kaXRpb24udmFsdWVzID0gW1wiXCJdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlbGV0ZSBvQ29uZGl0aW9uLmlzRW1wdHk7XG5cdFx0XHR9O1xuXHRcdGNvbnN0IGZuR2V0UHJvcGVydHlJbmZvID0gZnVuY3Rpb24gKG9GaWx0ZXJDb250cm9sOiBhbnksIHNFbnRpdHlUeXBlUGF0aDogYW55KSB7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoc0VudGl0eVR5cGVQYXRoKSxcblx0XHRcdFx0b01ldGFNb2RlbCA9IG9GaWx0ZXJDb250cm9sLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdG9GUiA9IENvbW1vblV0aWxzLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aChzRW50aXR5U2V0UGF0aCwgb01ldGFNb2RlbCksXG5cdFx0XHRcdGFOb25GaWx0ZXJhYmxlUHJvcHMgPSBvRlIuTm9uRmlsdGVyYWJsZVByb3BlcnRpZXMsXG5cdFx0XHRcdG1GaWx0ZXJGaWVsZHMgPSBGaWx0ZXJVdGlscy5nZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckNvbnRyb2wsIHNFbnRpdHlUeXBlUGF0aCksXG5cdFx0XHRcdGFQcm9wZXJ0eUluZm86IGFueVtdID0gW107XG5cdFx0XHRtRmlsdGVyRmllbGRzLmZvckVhY2goZnVuY3Rpb24gKG9Db252ZXJ0ZWRQcm9wZXJ0eSkge1xuXHRcdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gb0NvbnZlcnRlZFByb3BlcnR5LmNvbmRpdGlvblBhdGgucmVwbGFjZShDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYLCBcIlwiKTtcblx0XHRcdFx0aWYgKGFOb25GaWx0ZXJhYmxlUHJvcHMuaW5kZXhPZihzUHJvcGVydHlQYXRoKSA9PT0gLTEpIHtcblx0XHRcdFx0XHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSBvQ29udmVydGVkUHJvcGVydHkuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRcdFx0Y29uc3Qgb1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Fubm90YXRpb25QYXRoKTtcblx0XHRcdFx0XHRhUHJvcGVydHlJbmZvLnB1c2goe1xuXHRcdFx0XHRcdFx0cGF0aDogb0NvbnZlcnRlZFByb3BlcnR5LmNvbmRpdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRoaWRkZW5GaWx0ZXI6IG9Db252ZXJ0ZWRQcm9wZXJ0eS5hdmFpbGFiaWxpdHkgPT09IFwiSGlkZGVuXCIsXG5cdFx0XHRcdFx0XHRoYXNWYWx1ZUhlbHA6ICFzQW5ub3RhdGlvblBhdGhcblx0XHRcdFx0XHRcdFx0PyBmYWxzZVxuXHRcdFx0XHRcdFx0XHQ6IFByb3BlcnR5Rm9ybWF0dGVycy5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q29udGV4dC5nZXRPYmplY3QoKSwgeyBjb250ZXh0OiBvUHJvcGVydHlDb250ZXh0IH0pXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFQcm9wZXJ0eUluZm87XG5cdFx0fTtcblxuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVR5cGVQYXRoID0gRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGEob0ZpbHRlckJhciwgXCJlbnRpdHlUeXBlXCIpO1xuXHRcdFx0Ly8gRHVyaW5nIGV4dGVybmFsIGFwcCBuYXZpZ2F0aW9uLCB3ZSBoYXZlIHRvIGNsZWFyIHRoZSBleGlzdGluZyBjb25kaXRpb25zIHRvIGF2b2lkIG1lcmdpbmcgb2YgdmFsdWVzIGNvbWluZyBmcm9tIGFubm90YXRpb24gYW5kIGNvbnRleHRcblx0XHRcdC8vIENvbmRpdGlvbiAhYklzRkxQVmFsdWVQcmVzZW50IGluZGljYXRlcyBpdCdzIGV4dGVybmFsIGFwcCBuYXZpZ2F0aW9uXG5cdFx0XHRpZiAoIWJJc0ZMUFZhbHVlUHJlc2VudCkge1xuXHRcdFx0XHRjb25zdCBvQ2xlYXJDb25kaXRpb25zID0gYXdhaXQgdGhpcy5fZm5DbGVhclN0YXRlQmVmb3JleEFwcE5hdihvRmlsdGVyQmFyKTtcblx0XHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyLCB7XG5cdFx0XHRcdFx0ZmlsdGVyOiBvQ2xlYXJDb25kaXRpb25zLFxuXHRcdFx0XHRcdGl0ZW1zOiBhSXRlbXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhUHJvcGVydHlJbmZvID0gZm5HZXRQcm9wZXJ0eUluZm8ob0ZpbHRlckJhciwgc0VudGl0eVR5cGVQYXRoKTtcblx0XHRcdGFQcm9wZXJ0eUluZm9cblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob1Byb3BlcnR5SW5mbzogYW55KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkZWRpdFN0YXRlXCIgJiYgb1Byb3BlcnR5SW5mby5wYXRoICE9PSBcIiRzZWFyY2hcIjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZvckVhY2goKG9Qcm9wZXJ0eUluZm86IGFueSkgPT4ge1xuXHRcdFx0XHRcdGlmIChvUHJvcGVydHlJbmZvLnBhdGggaW4gb0NvbmRpdGlvbnMpIHtcblx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXSA9IG9Db25kaXRpb25zW29Qcm9wZXJ0eUluZm8ucGF0aF07XG5cdFx0XHRcdFx0XHRpZiAoIW9Qcm9wZXJ0eUluZm8uaGlkZGVuRmlsdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGFJdGVtcy5wdXNoKHsgbmFtZTogb1Byb3BlcnR5SW5mby5wYXRoIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG9Qcm9wZXJ0eUluZm8uaGFzVmFsdWVIZWxwKSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbGlkYXRlZCA9IG9Db25kaXRpb24uZmlsdGVyZWQgPyBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkIDogb0NvbmRpdGlvbi52YWxpZGF0ZWQ7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUob0ZpbHRlckJhciwgeyBmaWx0ZXI6IG1GaWx0ZXIsIGl0ZW1zOiBhSXRlbXMgfSk7XG5cdFx0fSk7XG5cdH0sXG5cdF9jbGVhckZpbHRlckNvbmRpdGlvbnM6IGFzeW5jIGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBGaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBhSXRlbXM6IFByb3BlcnR5SW5mb1tdID0gW107XG5cdFx0cmV0dXJuIG9GaWx0ZXJCYXIud2FpdEZvckluaXRpYWxpemF0aW9uKCkudGhlbihhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCBvQ2xlYXJDb25kaXRpb25zID0gYXdhaXQgdGhpcy5fZm5DbGVhclN0YXRlQmVmb3JleEFwcE5hdihvRmlsdGVyQmFyKTtcblx0XHRcdHJldHVybiBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIsIHtcblx0XHRcdFx0ZmlsdGVyOiBvQ2xlYXJDb25kaXRpb25zLFxuXHRcdFx0XHRpdGVtczogYUl0ZW1zXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld1N0YXRlT3ZlcnJpZGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7O0VBK0NBLE1BQU1BLE9BQU8sR0FBR0MsVUFBVSxDQUFDRCxPQUFPO0lBQ2pDRSxxQkFBcUIsR0FBR0MsV0FBVyxDQUFDQyxpQkFBaUI7SUFDckRDLG1CQUFtQixHQUFHRixXQUFXLENBQUNFLG1CQUFtQjtJQUNyREMsZUFBZSxHQUFHSCxXQUFXLENBQUNHLGVBQWU7SUFDN0NDLHFDQUFxQyxHQUFHLFFBQVE7RUFFakQsTUFBTUMsaUJBQXNCLEdBQUc7SUFDOUJDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJDLHFCQUFxQixFQUFFLFlBQVk7TUFDbEMsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUNEQyxvQkFBb0IsRUFBRSxVQUFzREMsU0FBYyxFQUFFQyxjQUF1QixFQUFFO01BQ3BILE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLE9BQU8sRUFBRTtRQUMzQkMsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQWEsRUFBMEI7UUFDM0RDLFVBQVUsR0FBR0YsV0FBVyxDQUFDRyxvQkFBb0IsRUFBRTtRQUMvQ0MsT0FBTyxHQUFHSixXQUFXLENBQUNLLFlBQVksQ0FBQyxPQUFPLENBQUM7TUFDNUMsSUFBSUgsVUFBVSxFQUFFO1FBQ2ZBLFVBQVUsQ0FBQ0ksbUJBQW1CLENBQUMsSUFBSSxDQUFD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
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/helpers/KeepAliveHelper","sap/fe/core/helpers/ModelHelper","sap/fe/core/library","sap/fe/core/templating/PropertyFormatters","sap/fe/macros/DelegateUtil","sap/fe/macros/filter/FilterUtils","sap/fe/navigation/library","sap/ui/Device","sap/ui/fl/apply/api/ControlVariantApplyAPI","sap/ui/mdc/enum/ConditionValidated","sap/ui/mdc/p13n/StateUtil"],function(t,e,a,n,i,r,o,s,l,d,c,f,u){"use strict";var h=d.system;const g=l.NavType,p=i.VariantManagement,V=i.TemplateContentView,C=i.InitialLoadMode,_=/\+|\*/g;const y={_bSearchTriggered:false,applyInitialStateOnly:function(){return true},onBeforeStateApplied:function(t){const e=this.getView(),a=e.getController(),n=a._getFilterBarControl(),i=a._getControls("table");if(n){n.setSuspendSelection(true);t.push(n.waitForInitialization())}i.forEach(function(e){t.push(e.initialized())});delete this._bSearchTriggered},onAfterStateApplied:function(){const t=this.getView().getController();const e=t._getFilterBarControl();if(e){e.setSuspendSelection(false)}else if(t._isFilterBarHidden()){const e=t.getView().getBindingContext("internal");e.setProperty("hasPendingFilters",false);if(t._isMultiMode()){t._getMultiModeControl().setCountsOutDated(true)}}},adaptBindingRefreshControls:function(t){const e=this.getView(),n=e.getController(),i=n._getControls(),r=a.getControlsForRefresh(e,i);Array.prototype.push.apply(t,r)},adaptStateControls:function(t){const e=this.getView(),a=e.getController(),n=e.getViewData(),i=n.variantManagement===p.Control;const r=this._getFilterBarVM(e);if(r){t.push(r)}if(a._isMultiMode()){t.push(a._getMultiModeControl())}a._getControls("table").forEach(function(e){const a=e.getQuickFilter();if(a){t.push(a)}if(i){t.push(e.getVariant())}t.push(e)});if(a._getControls("Chart")){a._getControls("Chart").forEach(function(e){if(i){t.push(e.getVariant())}t.push(e)})}if(a._hasMultiVisualizations()){t.push(a._getSegmentedButton(V.Chart));t.push(a._getSegmentedButton(V.Table))}const o=a._getFilterBarControl();if(o){t.push(o)}t.push(e.byId("fe::ListReport"))},retrieveAdditionalStates:function(t){const e=this.getView(),a=e.getController(),n=e.getBindingContext("internal").getProperty("hasPendingFilters");t.dataLoaded=!n||!!this._bSearchTriggered;if(a._hasMultiVisualizations()){const a=e.getBindingContext("internal").getProperty("alpContentView");t.alpContentView=a}delete this._bSearchTriggered},applyAdditionalStates:function(t){const e=this.getView(),a=e.getController(),n=a._getFilterBarControl();if(t){if(t.dataLoaded===false&&n){n._bSearchTriggered=false}else if(t.dataLoaded===true){if(n){n.triggerSearch()}this._bSearchTriggered=true}if(a._hasMultiVisualizations()){const a=e.getBindingContext("internal");if(!h.desktop&&t.alpContentView==V.Hybrid){t.alpContentView=V.Chart}a.getModel().setProperty(`${a.getPath()}/alpContentView`,t.alpContentView)}}},_applyNavigationParametersToFilterbar:function(e,a){const n=this.getView();const i=n.getController();const r=i.getAppComponent();const o=r.getComponentData();const s=o&&o.startupParameters||{};const l=this.handleVariantIdPassedViaURLParams(s);let d;a.push(l.then(t=>{if(t&&t.length>0){if(t[0]===true||t[1]===true){d=true}}return this._applySelectionVariant(n,e,d)}).then(()=>{const t=i._getDynamicListReportControl();let a=false;const r=this._getFilterBarVM(n);const o=i._getFilterBarControl();if(o){if(e.navigationType!==g.initial&&e.requiresStandardVariant||!r&&n.getViewData().initialLoad===C.Enabled||i._shouldAutoTriggerSearch(r)){o.triggerSearch()}else{a=this._preventInitialSearch(r)}o.setSuspendSelection(false);this._bSearchTriggered=!a;t.setHeaderExpanded(h.desktop||a)}}).catch(function(){t.error("Variant ID cannot be applied")}))},handleVariantIdPassedViaURLParams:function(t){const e=t["sap-ui-fe-variant-id"],a=t["sap-ui-fe-filterbar-variant-id"],n=t["sap-ui-fe-table-variant-id"],i=t["sap-ui-fe-chart-variant-id"];let r;if(e||a||n||i){r={sPageVariantId:e&&e[0],sFilterBarVariantId:a&&a[0],sTableVariantId:n&&n[0],sChartVariantId:i&&i[0]}}return this._handleControlVariantId(r)},_handleControlVariantId:function(t){let e;const a=this.getView(),n=[];const i=a.getViewData().variantManagement;if(t&&t.sPageVariantId&&i==="Page"){e=a.byId("fe::PageVariantManagement");this._handlePageVariantId(t,e,n)}else if(t&&i==="Control"){if(t.sFilterBarVariantId){e=a.getController()._getFilterBarVariantControl();this._handleFilterBarVariantControlId(t,e,n)}if(t.sTableVariantId){const e=a.getController();this._handleTableControlVariantId(t,e,n)}if(t.sChartVariantId){const e=a.getController();this._handleChartControlVariantId(t,e,n)}}return Promise.all(n)},_handlePageVariantId:function(t,e,a){e.getVariants().forEach(n=>{this._findAndPushVariantToPromise(n,t.sPageVariantId,e,a,true)})},_handleFilterBarVariantControlId:function(t,e,a){if(e){e.getVariants().forEach(n=>{this._findAndPushVariantToPromise(n,t.sFilterBarVariantId,e,a,true)})}},_handleTableControlVariantId:function(t,e,a){const n=e._getControls("table");n.forEach(e=>{const n=e.getVariant();if(e&&n){n.getVariants().forEach(e=>{this._findAndPushVariantToPromise(e,t.sTableVariantId,n,a)})}})},_handleChartControlVariantId:function(t,e,a){const n=e._getControls("Chart");n.forEach(e=>{const n=e.getVariant();const i=n.getVariants();if(i){i.forEach(e=>{this._findAndPushVariantToPromise(e,t.sChartVariantId,n,a)})}})},_findAndPushVariantToPromise:function(t,e,a,n,i){if(t.key===e){n.push(this._applyControlVariant(a,e,i))}},_applyControlVariant:function(t,e,a){const n=this._checkIfVariantIdIsAvailable(t,e)?e:t.getStandardVariantKey();const i=c.activateVariant({element:t,variantReference:n});return i.then(function(){return a})},_getFilterBarVM:function(t){const e=t.getViewData();switch(e.variantManagement){case p.Page:return t.byId("fe::PageVariantManagement");case p.Control:return t.getController()._getFilterBarVariantControl();case p.None:return null;default:throw new Error(`unhandled variant setting: ${e.variantManagement}`)}},_preventInitialSearch:function(t){if(!t){return true}const e=t.getVariants();const a=e.find(function(e){return e.key===t.getCurrentVariantKey()});return!a.executeOnSelect},_applySelectionVariant:function(t,a,n){const i=t.getController()._getFilterBarControl(),r=a.selectionVariant,o=a.selectionVariantDefaults;if(!i||!r){return Promise.resolve()}let s={};const l=t.getModel().getMetaModel();const d=t.getViewData();const c=d.contextPath||`/${d.entitySet}`;const f=e.getMandatoryFilterFields(l,c);const u=i.data("useSemanticDateRange");let h;switch(d.variantManagement){case p.Page:h=t.byId("fe::PageVariantManagement");break;case p.Control:h=t.getController()._getFilterBarVariantControl();break;case p.None:default:break}const g=a.requiresStandardVariant;const V=o&&o.getSelectOptionsPropertyNames().length>0&&h.getDefaultVariantKey()===h.getStandardVariantKey()&&a.bNavSelVarHasDefaultsOnly;if(n||V){s=i.getConditions()}e.addDefaultDisplayCurrency(f,r,o);e.addSelectionVariantToConditions(r,s,l,c,V,u,d);return this._activateSelectionVariant(i,s,h,g,n,V)},_activateSelectionVariant:function(t,e,a,n,i,r){let o;if(a&&!i){let t=n?a.getStandardVariantKey():a.getDefaultVariantKey();if(t===null){t=a.getId()}o=c.activateVariant({element:a,variantReference:t}).then(function(){return n||a.getDefaultVariantKey()===a.getStandardVariantKey()})}else{o=Promise.resolve(true)}return o.then(a=>{if(a){return this._fnApplyConditions(t,e,r)}})},_fnClearStateBeforexAppNav:async function(e){return await u.retrieveExternalState(e).then(t=>{const e=t.filter;for(const t in e){if(t!=="$editState"&&t!=="$search"&&e[t]){e[t].forEach(t=>{t["filtered"]=false})}}return Promise.resolve(e)}).catch(function(e){t.error("Error while retrieving the external state",e)})},_fnApplyConditions:async function(t,a,i){const l={},d=[],c=function(t){t.validated=f.Validated;if(t.operator==="Empty"){t.operator="EQ";t.values=[""]}else if(t.operator==="NotEmpty"){t.operator="NE";t.values=[""]}delete t.isEmpty};const h=function(t,a){const i=n.getEntitySetPath(a),o=t.getModel().getMetaModel(),l=e.getFilterRestrictionsByPath(i,o),d=l.NonFilterableProperties,c=s.getConvertedFilterFields(t,a),f=[];c.forEach(function(t){const e=t.conditionPath.replace(_,"");if(d.indexOf(e)===-1){const e=t.annotationPath;const a=o.createBindingContext(e);f.push({path:t.conditionPath,hiddenFilter:t.availability==="Hidden",hasValueHelp:!e?false:r.hasValueHelp(a.getObject(),{context:a})})}});return f};return t.waitForInitialization().then(async()=>{const e=o.getCustomData(t,"entityType");if(!i){const e=await this._fnClearStateBeforexAppNav(t);await u.applyExternalState(t,{filter:e,items:d})}const n=h(t,e);n.filter(function(t){return t.path!=="$editState"&&t.path!=="$search"}).forEach(t=>{if(t.path in a){l[t.path]=this._fnDecodeConditionsValues(a[t.path]);if(!t.hiddenFilter){d.push({name:t.path})}if(t.hasValueHelp){l[t.path].forEach(c)}else{l[t.path].forEach(function(t){t.validated=t.filtered?f.NotValidated:t.validated})}}else{l[t.path]=[]}});return u.applyExternalState(t,{filter:l,items:d})})},_isEncoded:function(t){return decodeURI(t)!==t},_decodeValue:function(t){let e=t;let a="";while(this._isEncoded(e)&&e!==a){a=e;e=decodeURI(e)}return e},_fnDecodeConditionsValues:function(t){const e=t.filter(t=>t.values);e.forEach(t=>{t.values=t.values.map(t=>{if(typeof t==="string"){return this._decodeValue(t)}else{return t}})});return t}};return y},false);
5
+ sap.ui.define(["sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/helpers/KeepAliveHelper","sap/fe/core/helpers/ModelHelper","sap/fe/core/library","sap/fe/core/templating/PropertyFormatters","sap/fe/macros/DelegateUtil","sap/fe/macros/filter/FilterUtils","sap/fe/navigation/library","sap/ui/Device","sap/ui/fl/apply/api/ControlVariantApplyAPI","sap/ui/mdc/enum/ConditionValidated","sap/ui/mdc/p13n/StateUtil"],function(t,e,a,n,i,r,o,s,l,c,d,f,h){"use strict";var g=c.system;const u=l.NavType,p=i.VariantManagement,V=i.TemplateContentView,C=i.InitialLoadMode,_=/\+|\*/g;const y={_bSearchTriggered:false,applyInitialStateOnly:function(){return true},onBeforeStateApplied:function(t,e){const a=this.getView(),n=a.getController(),i=n._getFilterBarControl(),r=n._getControls("table");if(i){i.setSuspendSelection(true);t.push(i.waitForInitialization());if(e===u.hybrid){this._clearFilterConditions(i)}}r.forEach(function(e){t.push(e.initialized())});delete this._bSearchTriggered},onAfterStateApplied:function(){const t=this.getView().getController();const e=t._getFilterBarControl();if(e){e.setSuspendSelection(false)}else if(t._isFilterBarHidden()){const e=t.getView().getBindingContext("internal");e.setProperty("hasPendingFilters",false);if(t._isMultiMode()){t._getMultiModeControl().setCountsOutDated(true)}}},adaptBindingRefreshControls:function(t){const e=this.getView(),n=e.getController(),i=n._getControls(),r=a.getControlsForRefresh(e,i);Array.prototype.push.apply(t,r)},adaptStateControls:function(t){const e=this.getView(),a=e.getController(),n=e.getViewData(),i=n.variantManagement===p.Control;const r=this._getFilterBarVM(e);if(r){t.push(r)}if(a._isMultiMode()){t.push(a._getMultiModeControl())}a._getControls("table").forEach(function(e){const a=e.getQuickFilter();if(a){t.push(a)}if(i){t.push(e.getVariant())}t.push(e)});if(a._getControls("Chart")){a._getControls("Chart").forEach(function(e){if(i){t.push(e.getVariant())}t.push(e)})}if(a._hasMultiVisualizations()){t.push(a._getSegmentedButton(V.Chart));t.push(a._getSegmentedButton(V.Table))}const o=a._getFilterBarControl();if(o){t.push(o)}t.push(e.byId("fe::ListReport"))},retrieveAdditionalStates:function(t){const e=this.getView(),a=e.getController(),n=e.getBindingContext("internal").getProperty("hasPendingFilters");t.dataLoaded=!n||!!this._bSearchTriggered;if(a._hasMultiVisualizations()){const a=e.getBindingContext("internal").getProperty("alpContentView");t.alpContentView=a}delete this._bSearchTriggered},applyAdditionalStates:function(t){const e=this.getView(),a=e.getController(),n=a._getFilterBarControl();if(t){if(t.dataLoaded===false&&n){n._bSearchTriggered=false}else if(t.dataLoaded===true){if(n){n.triggerSearch()}this._bSearchTriggered=true}if(a._hasMultiVisualizations()){const a=e.getBindingContext("internal");if(!g.desktop&&t.alpContentView==V.Hybrid){t.alpContentView=V.Chart}a.getModel().setProperty(`${a.getPath()}/alpContentView`,t.alpContentView)}}},_applyNavigationParametersToFilterbar:function(e,a){const n=this.getView();const i=n.getController();const r=i.getAppComponent();const o=r.getComponentData();const s=o&&o.startupParameters||{};const l=this.handleVariantIdPassedViaURLParams(s);let c;a.push(l.then(t=>{if(t&&t.length>0){if(t[0]===true||t[1]===true){c=true}}return this._applySelectionVariant(n,e,c)}).then(()=>{const t=i._getDynamicListReportControl();let a=false;const r=this._getFilterBarVM(n);const o=i._getFilterBarControl();if(o){if(e.navigationType!==u.initial&&e.requiresStandardVariant||!r&&n.getViewData().initialLoad===C.Enabled||i._shouldAutoTriggerSearch(r)){o.triggerSearch()}else{a=this._preventInitialSearch(r)}o.setSuspendSelection(false);this._bSearchTriggered=!a;t.setHeaderExpanded(g.desktop||a)}}).catch(function(){t.error("Variant ID cannot be applied")}))},handleVariantIdPassedViaURLParams:function(t){const e=t["sap-ui-fe-variant-id"],a=t["sap-ui-fe-filterbar-variant-id"],n=t["sap-ui-fe-table-variant-id"],i=t["sap-ui-fe-chart-variant-id"];let r;if(e||a||n||i){r={sPageVariantId:e&&e[0],sFilterBarVariantId:a&&a[0],sTableVariantId:n&&n[0],sChartVariantId:i&&i[0]}}return this._handleControlVariantId(r)},_handleControlVariantId:function(t){let e;const a=this.getView(),n=[];const i=a.getViewData().variantManagement;if(t&&t.sPageVariantId&&i==="Page"){e=a.byId("fe::PageVariantManagement");this._handlePageVariantId(t,e,n)}else if(t&&i==="Control"){if(t.sFilterBarVariantId){e=a.getController()._getFilterBarVariantControl();this._handleFilterBarVariantControlId(t,e,n)}if(t.sTableVariantId){const e=a.getController();this._handleTableControlVariantId(t,e,n)}if(t.sChartVariantId){const e=a.getController();this._handleChartControlVariantId(t,e,n)}}return Promise.all(n)},_handlePageVariantId:function(t,e,a){e.getVariants().forEach(n=>{this._findAndPushVariantToPromise(n,t.sPageVariantId,e,a,true)})},_handleFilterBarVariantControlId:function(t,e,a){if(e){e.getVariants().forEach(n=>{this._findAndPushVariantToPromise(n,t.sFilterBarVariantId,e,a,true)})}},_handleTableControlVariantId:function(t,e,a){const n=e._getControls("table");n.forEach(e=>{const n=e.getVariant();if(e&&n){n.getVariants().forEach(e=>{this._findAndPushVariantToPromise(e,t.sTableVariantId,n,a)})}})},_handleChartControlVariantId:function(t,e,a){const n=e._getControls("Chart");n.forEach(e=>{const n=e.getVariant();const i=n.getVariants();if(i){i.forEach(e=>{this._findAndPushVariantToPromise(e,t.sChartVariantId,n,a)})}})},_findAndPushVariantToPromise:function(t,e,a,n,i){if(t.key===e){n.push(this._applyControlVariant(a,e,i))}},_applyControlVariant:function(t,e,a){const n=this._checkIfVariantIdIsAvailable(t,e)?e:t.getStandardVariantKey();const i=d.activateVariant({element:t,variantReference:n});return i.then(function(){return a})},_getFilterBarVM:function(t){const e=t.getViewData();switch(e.variantManagement){case p.Page:return t.byId("fe::PageVariantManagement");case p.Control:return t.getController()._getFilterBarVariantControl();case p.None:return null;default:throw new Error(`unhandled variant setting: ${e.variantManagement}`)}},_preventInitialSearch:function(t){if(!t){return true}const e=t.getVariants();const a=e.find(function(e){return e.key===t.getCurrentVariantKey()});return!a.executeOnSelect},_applySelectionVariant:function(t,a,n){const i=t.getController()._getFilterBarControl(),r=a.selectionVariant,o=a.selectionVariantDefaults;if(!i||!r){return Promise.resolve()}let s={};const l=t.getModel().getMetaModel();const c=t.getViewData();const d=c.contextPath||`/${c.entitySet}`;const f=e.getMandatoryFilterFields(l,d);const h=i.data("useSemanticDateRange");let g;switch(c.variantManagement){case p.Page:g=t.byId("fe::PageVariantManagement");break;case p.Control:g=t.getController()._getFilterBarVariantControl();break;case p.None:default:break}const u=a.requiresStandardVariant;const V=o&&o.getSelectOptionsPropertyNames().length>0&&g.getDefaultVariantKey()===g.getStandardVariantKey()&&a.bNavSelVarHasDefaultsOnly;if(n||V){s=i.getConditions()}e.addDefaultDisplayCurrency(f,r,o);e.addSelectionVariantToConditions(r,s,l,d,V,h,c);return this._activateSelectionVariant(i,s,g,u,n,V)},_activateSelectionVariant:function(t,e,a,n,i,r){let o;if(a&&!i){let t=n?a.getStandardVariantKey():a.getDefaultVariantKey();if(t===null){t=a.getId()}o=d.activateVariant({element:a,variantReference:t}).then(function(){return n||a.getDefaultVariantKey()===a.getStandardVariantKey()})}else{o=Promise.resolve(true)}return o.then(a=>{if(a){return this._fnApplyConditions(t,e,r)}})},_fnClearStateBeforexAppNav:async function(e){return await h.retrieveExternalState(e).then(t=>{const e=t.filter;for(const t in e){if(t!=="$editState"&&t!=="$search"&&e[t]){e[t].forEach(t=>{t["filtered"]=false})}}return Promise.resolve(e)}).catch(function(e){t.error("Error while retrieving the external state",e)})},_fnApplyConditions:async function(t,a,i){const l={},c=[],d=function(t){t.validated=f.Validated;if(t.operator==="Empty"){t.operator="EQ";t.values=[""]}else if(t.operator==="NotEmpty"){t.operator="NE";t.values=[""]}delete t.isEmpty};const g=function(t,a){const i=n.getEntitySetPath(a),o=t.getModel().getMetaModel(),l=e.getFilterRestrictionsByPath(i,o),c=l.NonFilterableProperties,d=s.getConvertedFilterFields(t,a),f=[];d.forEach(function(t){const e=t.conditionPath.replace(_,"");if(c.indexOf(e)===-1){const e=t.annotationPath;const a=o.createBindingContext(e);f.push({path:t.conditionPath,hiddenFilter:t.availability==="Hidden",hasValueHelp:!e?false:r.hasValueHelp(a.getObject(),{context:a})})}});return f};return t.waitForInitialization().then(async()=>{const e=o.getCustomData(t,"entityType");if(!i){const e=await this._fnClearStateBeforexAppNav(t);await h.applyExternalState(t,{filter:e,items:c})}const n=g(t,e);n.filter(function(t){return t.path!=="$editState"&&t.path!=="$search"}).forEach(t=>{if(t.path in a){l[t.path]=a[t.path];if(!t.hiddenFilter){c.push({name:t.path})}if(t.hasValueHelp){l[t.path].forEach(d)}else{l[t.path].forEach(function(t){t.validated=t.filtered?f.NotValidated:t.validated})}}else{l[t.path]=[]}});return h.applyExternalState(t,{filter:l,items:c})})},_clearFilterConditions:async function(t){const e=[];return t.waitForInitialization().then(async()=>{const a=await this._fnClearStateBeforexAppNav(t);return h.applyExternalState(t,{filter:a,items:e})})}};return y},false);
6
6
  //# sourceMappingURL=ViewState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewState.js","names":["sap","ui","define","Log","CommonUtils","KeepAliveHelper","ModelHelper","CoreLibrary","PropertyFormatters","DelegateUtil","FilterUtils","NavLibrary","Device","ControlVariantApplyAPI","ConditionValidated","StateUtil","system","NavType","VariantManagementType","VariantManagement","TemplateContentView","InitialLoadMode","CONDITION_PATH_TO_PROPERTY_PATH_REGEX","ViewStateOverride","_bSearchTriggered","applyInitialStateOnly","onBeforeStateApplied","aPromises","oView","this","getView","oController","getController","oFilterBar","_getFilterBarControl","aTables","_getControls","setSuspendSelection","push","waitForInitialization","forEach","oTable","initialized","onAfterStateApplied","_isFilterBarHidden","oInternalModelContext","getBindingContext","setProperty","_isMultiMode","_getMultiModeControl","setCountsOutDated","adaptBindingRefreshControls","aControls","aViewControls","aControlsToRefresh","getControlsForRefresh","Array","prototype","apply","adaptStateControls","aStateControls","oViewData","getViewData","bControlVM","variantManagement","Control","oFilterBarVM","_getFilterBarVM","oQuickFilter","getQuickFilter","getVariant","oChart","_hasMultiVisualizations","_getSegmentedButton","Chart","Table","byId","retrieveAdditionalStates","mAdditionalStates","bPendingFilter","getProperty","dataLoaded","sAlpContentView","alpContentView","applyAdditionalStates","oAdditionalStates","triggerSearch","desktop","Hybrid","getModel","getPath","_applyNavigationParametersToFilterbar","oNavigationParameter","aResults","oAppComponent","getAppComponent","oComponentData","getComponentData","oStartupParameters","startupParameters","oVariantPromise","handleVariantIdPassedViaURLParams","bFilterVariantApplied","then","aVariants","length","_applySelectionVariant","oDynamicPage","_getDynamicListReportControl","bPreventInitialSearch","oFilterBarControl","navigationType","initial","requiresStandardVariant","initialLoad","Enabled","_shouldAutoTriggerSearch","_preventInitialSearch","setHeaderExpanded","catch","error","oUrlParams","aPageVariantId","aFilterBarVariantId","aTableVariantId","aChartVariantId","oVariantIDs","sPageVariantId","sFilterBarVariantId","sTableVariantId","sChartVariantId","_handleControlVariantId","oVM","sVariantManagement","_handlePageVariantId","_getFilterBarVariantControl","_handleFilterBarVariantControlId","_handleTableControlVariantId","_handleChartControlVariantId","Promise","all","getVariants","oVariant","_findAndPushVariantToPromise","oTableVariant","aCharts","oChartVariant","sVariantId","key","_applyControlVariant","sVariantID","sVariantReference","_checkIfVariantIdIsAvailable","getStandardVariantKey","activateVariant","element","variantReference","Page","None","Error","oVariantManagement","oCurrentVariant","find","oItem","getCurrentVariantKey","executeOnSelect","oSelectionVariant","selectionVariant","oSelectionVariantDefaults","selectionVariantDefaults","resolve","oConditions","oMetaModel","getMetaModel","sContextPath","contextPath","entitySet","aMandatoryFilterFields","getMandatoryFilterFields","bUseSemanticDateRange","data","bRequiresStandardVariant","bIsFLPValuePresent","getSelectOptionsPropertyNames","getDefaultVariantKey","bNavSelVarHasDefaultsOnly","getConditions","addDefaultDisplayCurrency","addSelectionVariantToConditions","_activateSelectionVariant","oPromise","oVariantKey","getId","bClearFilterAndReplaceWithAppState","_fnApplyConditions","_fnClearStateBeforexAppNav","async","retrieveExternalState","oExternalState","oCondition","filter","field","condition","oError","mFilter","aItems","fnAdjustValueHelpCondition","validated","Validated","operator","values","isEmpty","fnGetPropertyInfo","oFilterControl","sEntityTypePath","sEntitySetPath","getEntitySetPath","oFR","getFilterRestrictionsByPath","aNonFilterableProps","NonFilterableProperties","mFilterFields","getConvertedFilterFields","aPropertyInfo","oConvertedProperty","sPropertyPath","conditionPath","replace","indexOf","sAnnotationPath","annotationPath","oPropertyContext","createBindingContext","path","hiddenFilter","availability","hasValueHelp","getObject","context","getCustomData","oClearConditions","applyExternalState","items","oPropertyInfo","_fnDecodeConditionsValues","name","filtered","NotValidated","_isEncoded","str","decodeURI","_decodeValue","value","decodedValue","previousValue","conditions","item","map"],"sources":["ViewState-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"ViewState.js","names":["sap","ui","define","Log","CommonUtils","KeepAliveHelper","ModelHelper","CoreLibrary","PropertyFormatters","DelegateUtil","FilterUtils","NavLibrary","Device","ControlVariantApplyAPI","ConditionValidated","StateUtil","system","NavType","VariantManagementType","VariantManagement","TemplateContentView","InitialLoadMode","CONDITION_PATH_TO_PROPERTY_PATH_REGEX","ViewStateOverride","_bSearchTriggered","applyInitialStateOnly","onBeforeStateApplied","aPromises","navigationType","oView","this","getView","oController","getController","oFilterBar","_getFilterBarControl","aTables","_getControls","setSuspendSelection","push","waitForInitialization","hybrid","_clearFilterConditions","forEach","oTable","initialized","onAfterStateApplied","_isFilterBarHidden","oInternalModelContext","getBindingContext","setProperty","_isMultiMode","_getMultiModeControl","setCountsOutDated","adaptBindingRefreshControls","aControls","aViewControls","aControlsToRefresh","getControlsForRefresh","Array","prototype","apply","adaptStateControls","aStateControls","oViewData","getViewData","bControlVM","variantManagement","Control","oFilterBarVM","_getFilterBarVM","oQuickFilter","getQuickFilter","getVariant","oChart","_hasMultiVisualizations","_getSegmentedButton","Chart","Table","byId","retrieveAdditionalStates","mAdditionalStates","bPendingFilter","getProperty","dataLoaded","sAlpContentView","alpContentView","applyAdditionalStates","oAdditionalStates","triggerSearch","desktop","Hybrid","getModel","getPath","_applyNavigationParametersToFilterbar","oNavigationParameter","aResults","oAppComponent","getAppComponent","oComponentData","getComponentData","oStartupParameters","startupParameters","oVariantPromise","handleVariantIdPassedViaURLParams","bFilterVariantApplied","then","aVariants","length","_applySelectionVariant","oDynamicPage","_getDynamicListReportControl","bPreventInitialSearch","oFilterBarControl","initial","requiresStandardVariant","initialLoad","Enabled","_shouldAutoTriggerSearch","_preventInitialSearch","setHeaderExpanded","catch","error","oUrlParams","aPageVariantId","aFilterBarVariantId","aTableVariantId","aChartVariantId","oVariantIDs","sPageVariantId","sFilterBarVariantId","sTableVariantId","sChartVariantId","_handleControlVariantId","oVM","sVariantManagement","_handlePageVariantId","_getFilterBarVariantControl","_handleFilterBarVariantControlId","_handleTableControlVariantId","_handleChartControlVariantId","Promise","all","getVariants","oVariant","_findAndPushVariantToPromise","oTableVariant","aCharts","oChartVariant","sVariantId","key","_applyControlVariant","sVariantID","sVariantReference","_checkIfVariantIdIsAvailable","getStandardVariantKey","activateVariant","element","variantReference","Page","None","Error","oVariantManagement","oCurrentVariant","find","oItem","getCurrentVariantKey","executeOnSelect","oSelectionVariant","selectionVariant","oSelectionVariantDefaults","selectionVariantDefaults","resolve","oConditions","oMetaModel","getMetaModel","sContextPath","contextPath","entitySet","aMandatoryFilterFields","getMandatoryFilterFields","bUseSemanticDateRange","data","bRequiresStandardVariant","bIsFLPValuePresent","getSelectOptionsPropertyNames","getDefaultVariantKey","bNavSelVarHasDefaultsOnly","getConditions","addDefaultDisplayCurrency","addSelectionVariantToConditions","_activateSelectionVariant","oPromise","oVariantKey","getId","bClearFilterAndReplaceWithAppState","_fnApplyConditions","_fnClearStateBeforexAppNav","async","retrieveExternalState","oExternalState","oCondition","filter","field","condition","oError","mFilter","aItems","fnAdjustValueHelpCondition","validated","Validated","operator","values","isEmpty","fnGetPropertyInfo","oFilterControl","sEntityTypePath","sEntitySetPath","getEntitySetPath","oFR","getFilterRestrictionsByPath","aNonFilterableProps","NonFilterableProperties","mFilterFields","getConvertedFilterFields","aPropertyInfo","oConvertedProperty","sPropertyPath","conditionPath","replace","indexOf","sAnnotationPath","annotationPath","oPropertyContext","createBindingContext","path","hiddenFilter","availability","hasValueHelp","getObject","context","getCustomData","oClearConditions","applyExternalState","items","oPropertyInfo","name","filtered","NotValidated"],"sources":["ViewState-dbg.js"],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
6
6
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
7
7
  import CoreLibrary from "sap/fe/core/library";
8
8
  import * as PropertyFormatters from "sap/fe/core/templating/PropertyFormatters";
9
- import DelegateUtil from "sap/fe/macros/DelegateUtil";
9
+ import DelegateUtil, { PropertyInfo } from "sap/fe/macros/DelegateUtil";
10
10
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
11
11
  import NavLibrary from "sap/fe/navigation/library";
12
12
  import type ListReportController from "sap/fe/templates/ListReport/ListReportController.controller";
@@ -56,7 +56,7 @@ const ViewStateOverride: any = {
56
56
  applyInitialStateOnly: function () {
57
57
  return true;
58
58
  },
59
- onBeforeStateApplied: function (this: ViewState & typeof ViewStateOverride, aPromises: any) {
59
+ onBeforeStateApplied: function (this: ViewState & typeof ViewStateOverride, aPromises: any, navigationType?: string) {
60
60
  const oView = this.getView(),
61
61
  oController = oView.getController() as ListReportController,
62
62
  oFilterBar = oController._getFilterBarControl(),
@@ -64,6 +64,10 @@ const ViewStateOverride: any = {
64
64
  if (oFilterBar) {
65
65
  oFilterBar.setSuspendSelection(true);
66
66
  aPromises.push((oFilterBar as any).waitForInitialization());
67
+ //This is required to remove any existing or default filter conditions before restoring the filter bar state in hybrid navigation mode.
68
+ if (navigationType === NavType.hybrid) {
69
+ this._clearFilterConditions(oFilterBar);
70
+ }
67
71
  }
68
72
  aTables.forEach(function (oTable: any) {
69
73
  aPromises.push(oTable.initialized());
@@ -582,7 +586,7 @@ const ViewStateOverride: any = {
582
586
  })
583
587
  .forEach((oPropertyInfo: any) => {
584
588
  if (oPropertyInfo.path in oConditions) {
585
- mFilter[oPropertyInfo.path] = this._fnDecodeConditionsValues(oConditions[oPropertyInfo.path]);
589
+ mFilter[oPropertyInfo.path] = oConditions[oPropertyInfo.path];
586
590
  if (!oPropertyInfo.hiddenFilter) {
587
591
  aItems.push({ name: oPropertyInfo.path });
588
592
  }
@@ -600,47 +604,15 @@ const ViewStateOverride: any = {
600
604
  return StateUtil.applyExternalState(oFilterBar, { filter: mFilter, items: aItems });
601
605
  });
602
606
  },
603
-
604
- _isEncoded: function (str: string) {
605
- return decodeURI(str) !== str;
606
- },
607
-
608
- /*
609
- * Decode the value as many times as necessary to get the decoded value
610
- *
611
- * @param value
612
- * @returns the decoded value
613
- * @private
614
- */
615
- _decodeValue: function (value: string): string {
616
- let decodedValue = value;
617
- let previousValue = "";
618
- while (this._isEncoded(decodedValue) && decodedValue !== previousValue) {
619
- previousValue = decodedValue;
620
- decodedValue = decodeURI(decodedValue);
621
- }
622
- return decodedValue;
623
- },
624
-
625
- /*
626
- * Decode the conditions values when necessary
627
- *
628
- * @param object conditions
629
- * @returns the object conditions with all the values decoded
630
- * @private
631
- */
632
- _fnDecodeConditionsValues: function (conditions: any) {
633
- const values = conditions.filter((condition: any) => condition.values);
634
- values.forEach((item: { values: (string | boolean | number)[] }) => {
635
- item.values = item.values.map((value) => {
636
- if (typeof value === "string") {
637
- return this._decodeValue(value);
638
- } else {
639
- return value;
640
- }
607
+ _clearFilterConditions: async function (oFilterBar: FilterBar) {
608
+ const aItems: PropertyInfo[] = [];
609
+ return oFilterBar.waitForInitialization().then(async () => {
610
+ const oClearConditions = await this._fnClearStateBeforexAppNav(oFilterBar);
611
+ return StateUtil.applyExternalState(oFilterBar, {
612
+ filter: oClearConditions,
613
+ items: aItems
641
614
  });
642
615
  });
643
- return conditions;
644
616
  }
645
617
  };
646
618