@sapui5/sap.fe.core 1.120.3 → 1.120.6

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 (79) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppStateHandler.js +10 -4
  4. package/src/sap/fe/core/AppStateHandler.ts +10 -4
  5. package/src/sap/fe/core/controllerextensions/EditFlow.js +5 -3
  6. package/src/sap/fe/core/controllerextensions/EditFlow.ts +4 -2
  7. package/src/sap/fe/core/controllerextensions/InternalRouting.js +5 -5
  8. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +6 -4
  9. package/src/sap/fe/core/controllerextensions/Paginator.js +3 -1
  10. package/src/sap/fe/core/controllerextensions/Paginator.ts +2 -0
  11. package/src/sap/fe/core/controllerextensions/ViewState.js +16 -2
  12. package/src/sap/fe/core/controllerextensions/ViewState.ts +22 -1
  13. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +2 -2
  14. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +1 -1
  15. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +3 -3
  16. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +9 -2
  17. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +3 -3
  18. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -2
  19. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +2 -2
  20. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +2 -2
  21. package/src/sap/fe/core/converters/common/AnnotationConverter.js +29 -23
  22. package/src/sap/fe/core/converters/controls/Common/Table.js +4 -2
  23. package/src/sap/fe/core/converters/controls/Common/Table.ts +3 -1
  24. package/src/sap/fe/core/fpm/manifest.json +1 -1
  25. package/src/sap/fe/core/helpers/DeleteHelper.js +2 -2
  26. package/src/sap/fe/core/helpers/DeleteHelper.ts +1 -1
  27. package/src/sap/fe/core/library.js +1 -1
  28. package/src/sap/fe/core/messagebundle_ar.properties +69 -3
  29. package/src/sap/fe/core/messagebundle_bg.properties +71 -5
  30. package/src/sap/fe/core/messagebundle_ca.properties +0 -245
  31. package/src/sap/fe/core/messagebundle_cnr.properties +0 -245
  32. package/src/sap/fe/core/messagebundle_cs.properties +69 -3
  33. package/src/sap/fe/core/messagebundle_cy.properties +69 -3
  34. package/src/sap/fe/core/messagebundle_da.properties +69 -3
  35. package/src/sap/fe/core/messagebundle_de.properties +69 -3
  36. package/src/sap/fe/core/messagebundle_el.properties +69 -3
  37. package/src/sap/fe/core/messagebundle_en.properties +0 -245
  38. package/src/sap/fe/core/messagebundle_en_GB.properties +69 -3
  39. package/src/sap/fe/core/messagebundle_es.properties +71 -5
  40. package/src/sap/fe/core/messagebundle_es_MX.properties +69 -3
  41. package/src/sap/fe/core/messagebundle_et.properties +69 -3
  42. package/src/sap/fe/core/messagebundle_fi.properties +69 -3
  43. package/src/sap/fe/core/messagebundle_fr.properties +76 -10
  44. package/src/sap/fe/core/messagebundle_fr_CA.properties +75 -9
  45. package/src/sap/fe/core/messagebundle_hi.properties +69 -3
  46. package/src/sap/fe/core/messagebundle_hr.properties +96 -30
  47. package/src/sap/fe/core/messagebundle_hu.properties +69 -3
  48. package/src/sap/fe/core/messagebundle_id.properties +69 -3
  49. package/src/sap/fe/core/messagebundle_it.properties +69 -3
  50. package/src/sap/fe/core/messagebundle_iw.properties +69 -3
  51. package/src/sap/fe/core/messagebundle_ja.properties +69 -3
  52. package/src/sap/fe/core/messagebundle_kk.properties +74 -8
  53. package/src/sap/fe/core/messagebundle_ko.properties +69 -3
  54. package/src/sap/fe/core/messagebundle_lt.properties +69 -3
  55. package/src/sap/fe/core/messagebundle_lv.properties +72 -6
  56. package/src/sap/fe/core/messagebundle_mk.properties +109 -43
  57. package/src/sap/fe/core/messagebundle_ms.properties +70 -4
  58. package/src/sap/fe/core/messagebundle_nl.properties +69 -3
  59. package/src/sap/fe/core/messagebundle_no.properties +69 -3
  60. package/src/sap/fe/core/messagebundle_pl.properties +69 -3
  61. package/src/sap/fe/core/messagebundle_pt.properties +69 -3
  62. package/src/sap/fe/core/messagebundle_pt_PT.properties +69 -3
  63. package/src/sap/fe/core/messagebundle_ro.properties +69 -3
  64. package/src/sap/fe/core/messagebundle_ru.properties +72 -6
  65. package/src/sap/fe/core/messagebundle_sh.properties +133 -67
  66. package/src/sap/fe/core/messagebundle_sk.properties +69 -3
  67. package/src/sap/fe/core/messagebundle_sl.properties +69 -3
  68. package/src/sap/fe/core/messagebundle_sr.properties +474 -0
  69. package/src/sap/fe/core/messagebundle_sv.properties +69 -3
  70. package/src/sap/fe/core/messagebundle_th.properties +69 -3
  71. package/src/sap/fe/core/messagebundle_tr.properties +70 -4
  72. package/src/sap/fe/core/messagebundle_uk.properties +69 -3
  73. package/src/sap/fe/core/messagebundle_vi.properties +69 -3
  74. package/src/sap/fe/core/messagebundle_zh_CN.properties +69 -3
  75. package/src/sap/fe/core/messagebundle_zh_TW.properties +69 -3
  76. package/src/sap/fe/core/services/ShellServicesFactory.js +15 -4
  77. package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
  78. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  79. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.120.3",
3
+ "version": "1.120.6",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.120.3</version>
9
+ <version>1.120.6</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -170,7 +170,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
170
170
  return [{
171
171
  /* app data */
172
172
  }, aErrorData[1], aErrorData[2]];
173
- }).then(aResults => {
173
+ }).then(async aResults => {
174
174
  var _oAppData$appState;
175
175
  Log.info("APPSTATE: Parse Navigation done");
176
176
 
@@ -183,16 +183,22 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
183
183
  // fetch the skipMerge flag from appState for save as tile
184
184
  const skipMerge = oAppData === null || oAppData === void 0 ? void 0 : (_oAppData$appState = oAppData.appState) === null || _oAppData$appState === void 0 ? void 0 : _oAppData$appState[SKIP_MERGE_KEY];
185
185
  this._mCurrentAppState = sNavType === NavType.iAppState || sNavType === NavType.hybrid ? appStateData : undefined;
186
+ let shouldApplyState = true;
186
187
  if (!oRootController.viewState) {
187
188
  throw new Error(`viewState extension required for controller ${oRootController.getMetadata().getName()}`);
188
189
  }
189
- if ((!oAppData || Object.keys(oAppData).length === 0) && sNavType == NavType.iAppState) {
190
+ if (oRootController.viewState._isStateEmptyForIAppStateNavType(oAppData, sNavType)) {
190
191
  if (!oRootController.viewState._getInitialStateApplied()) {
191
192
  oRootController.viewState._setInitialStateApplied();
192
193
  }
194
+ shouldApplyState = false;
195
+ }
196
+ const applyViewState = await oRootController.viewState.applyViewState(this._mCurrentAppState, this._createNavigationParameters(oAppData, sNavType), skipMerge);
197
+ if (!shouldApplyState) {
193
198
  return {};
199
+ } else {
200
+ return applyViewState;
194
201
  }
195
- return oRootController.viewState.applyViewState(this._mCurrentAppState, this._createNavigationParameters(oAppData, sNavType), skipMerge);
196
202
  }).catch(function (oError) {
197
203
  Log.error("appState could not be applied", oError);
198
204
  throw oError;
@@ -226,4 +232,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
226
232
  */
227
233
  return AppStateHandler;
228
234
  }, true);
229
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiQXBwU3RhdGVIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJvQXBwQ29tcG9uZW50IiwiX21DdXJyZW50QXBwU3RhdGUiLCJzSWQiLCJnZXRJZCIsIm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsImNyZWF0ZUFwcFN0YXRlIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiQXBwU3RhdGUiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJyZXBsYWNlSGFzaCIsInNraXBNZXJnZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJyb3V0ZXJQcm94eSIsImdldFJvdXRlclByb3h5IiwiaGFzaCIsImdldEhhc2giLCJjb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiaXNTdGlja3lNb2RlIiwiTW9kZWxIZWxwZXIiLCJpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJnZXRNZXRhTW9kZWwiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImlubmVyQXBwU3RhdGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsImFwcFN0YXRlRGF0YSIsImFwcFN0YXRlIiwiYXBwU3RhdGVLZXkiLCJkZWVwRXF1YWwiLCJzdG9yZUlubmVyQXBwU3RhdGVBc3luYyIsInNOZXdIYXNoIiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJuYXZUb0hhc2giLCJ1bmRlZmluZWQiLCJvRXJyb3IiLCJlcnJvciIsImZpbmRBcHBTdGF0ZUluSGFzaCIsIl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm9BcHBEYXRhIiwic05hdlR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsIm5hdmlnYXRpb25UeXBlIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJ2aWV3SWQiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdG9FUzZQcm9taXNlIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1RvRVM2UHJvbWlzZVwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwiLi9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBsaWJyYXJ5Lk5hdlR5cGU7XG50eXBlIEFwcFN0YXRlID0ge1xuXHRza2lwTWVyZ2U/OiBib29sZWFuO1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcbmV4cG9ydCB0eXBlIEFwcERhdGEgPSB7XG5cdG9EZWZhdWx0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRvU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudDtcblx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogYm9vbGVhbjtcblx0YXBwU3RhdGU6IEFwcFN0YXRlO1xuXHRpQXBwU3RhdGU/OiB7XG5cdFx0YXBwU3RhdGU6IEFwcFN0YXRlO1xuXHR9O1xufTtcbmNvbnN0IFNLSVBfTUVSR0VfS0VZID0gXCJza2lwTWVyZ2VcIjtcbmV4cG9ydCB0eXBlIElBcHBTdGF0ZSA9IHtcblx0YXBwU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuZXhwb3J0IHR5cGUgQXBwRGF0YUluZm8gPSB7XG5cdGFwcFN0YXRlRGF0YTogeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH07XG5cdGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsO1xufTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU/OiBBcHBTdGF0ZSA9IHt9O1xuXG5cdG5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdDogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gb0FwcENvbXBvbmVudDtcblx0XHR0aGlzLnNJZCA9IGAke29BcHBDb21wb25lbnQuZ2V0SWQoKX0vQXBwU3RhdGVIYW5kbGVyYDtcblx0XHR0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9IDA7XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgdXBkYXRlcyB0aGUgYXBwc3RhdGUuXG5cdCAqIFJlcGxhY2VzIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBhcHBzdGF0ZSBiYXNlZCBvbiByZXBsYWNlSGFzaFxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleSBiYXNlZCBvbiByZXR1cm5LZXkgcHJvcGVydHlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiB7IHJlcGxhY2VIYXNoPzogYm9vbGVhbjsgc2tpcE1lcmdlPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgeyByZXBsYWNlSGFzaCA9IHRydWUsIHNraXBNZXJnZSA9IGZhbHNlIH0gPSBjcmVhdGVBcHBQYXJhbWV0ZXJzIHx8IHt9O1xuXG5cdFx0Y29uc3QgbmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdHJvdXRlclByb3h5ID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCksXG5cdFx0XHRoYXNoID0gcm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0Y29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCh0aGlzLm9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpO1xuXG5cdFx0aWYgKCFjb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBmb3IgY29udHJvbGxlcjogJHtjb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdH1cblx0XHRsZXQgaW5uZXJBcHBTdGF0ZSA9IGF3YWl0IGNvbnRyb2xsZXIudmlld1N0YXRlLnJldHJpZXZlVmlld1N0YXRlKCk7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiBpbm5lckFwcFN0YXRlIH07XG5cdFx0bGV0IGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0XHRpZiAoaW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIGlubmVyQXBwU3RhdGUpKSB7XG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRoaXMubmJTaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0Kys7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogQXBwc3RhdGUgc3RvcmVkXCIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHRjb25zdCBzTmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KGhhc2gsIGFwcFN0YXRlS2V5KTtcblx0XHRcdFx0XHR0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdC0tO1xuXHRcdFx0XHRcdGlmICh0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9PT0gMCAmJiBzTmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0XHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKHNOZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdFx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YTogYXBwU3RhdGVEYXRhLFxuXHRcdFx0YXBwU3RhdGVLZXk6IGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdF9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YTogQXBwRGF0YSwgc05hdlR5cGU6IHN0cmluZyk6IE5hdmlnYXRpb25QYXJhbWV0ZXIge1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBvQXBwRGF0YSwge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudERlZmF1bHRzOiBvQXBwRGF0YS5vRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9BcHBEYXRhLm9TZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0cmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6ICFvQXBwRGF0YS5iTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5LFxuXHRcdFx0bmF2aWdhdGlvblR5cGU6IHNOYXZUeXBlXG5cdFx0fSk7XG5cdH1cblxuXHRfY2hlY2tJZkxhc3RTZWVuUmVjb3JkKHZpZXc/OiBWaWV3KSB7XG5cdFx0Ly9nZXR0aW5nIHRoZSBpbnRlcm5hbCBtb2RlbCBjb250ZXh0IGluIG9yZGVyIHRvIGZldGNoIHRoZSB0ZWNobmljYWxrZXlzIG9mIGxhc3Qgc2VlbiByZWNvcmQgYW5kIGNsb3NlIGNvbHVtbiBmbGFnIHNldCBpbiB0aGUgaW50ZXJuYWxyb3V0aW5nIGZvciByZXRhaW5pbmcgc2V0dGluZ3MgaW4gcGVyc2lzdGVuY2UgbW9kZVxuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldyAmJiAodmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRpZiAoaW50ZXJuYWxNb2RlbENvbnRleHQgJiYgaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIikgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXNPYmplY3QgPSBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInRlY2huaWNhbEtleXNPZkxhc3RTZWVuUmVjb3JkXCIpO1xuXHRcdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB2aWV3Py5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBwYXRoID0gKGJpbmRpbmdDb250ZXh0ICYmIGJpbmRpbmdDb250ZXh0LmdldFBhdGgoKSkgfHwgXCJcIjtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IGJpbmRpbmdDb250ZXh0Py5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGggPSBtZXRhTW9kZWw/LmdldE1ldGFQYXRoKHBhdGgpO1xuXHRcdFx0Y29uc3QgdGVjaG5pY2FsS2V5cyA9IG1ldGFNb2RlbD8uZ2V0T2JqZWN0KGAke21ldGFQYXRofS8kVHlwZS8kS2V5YCk7XG5cdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGVjaG5pY2FsS2V5cykge1xuXHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRpZiAoa2V5VmFsdWUgIT09IHRlY2huaWNhbEtleXNPYmplY3RbZWxlbWVudF0pIHtcblx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImZjbENvbHVtbkNsb3NlZFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vdGhlIHJlY29yZCBvcGVuZWQgaXMgbm90IHRoZSBsYXN0IHNlZW4gb25lIDogbm8gbmVlZCB0byBwZXJzaXN0IHRoZSBjaGFuZ2VzLCByZXNldCB0byBkZWZhdWx0IGluc3RlYWRcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0X2dldEFwcFN0YXRlRGF0YShvQXBwRGF0YTogQXBwRGF0YSwgdmlld0lkPzogc3RyaW5nLCBuYXZUeXBlPzogc3RyaW5nKSB7XG5cdFx0bGV0IGtleSA9IFwiXCIsXG5cdFx0XHRpID0gMDtcblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSBuYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IG9BcHBEYXRhLmlBcHBTdGF0ZSA6IG9BcHBEYXRhO1xuXG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdGZvciAoaTsgaSA8IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV0gPT09IHZpZXdJZCkge1xuXHRcdFx0XHRcdGtleSA9IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldXTogYXBwU3RhdGVEYXRhLmFwcFN0YXRlW2tleV0gfHwge31cblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQHBhcmFtIHZpZXdJZFxuXHQgKiBAcGFyYW0gdmlld1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqL1xuXHRhc3luYyBhcHBseUFwcFN0YXRlKHZpZXdJZD86IHN0cmluZywgdmlldz86IFZpZXcpIHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBjaGVja0lmTGFzdFNlZW5SZWNvcmQgPSB0aGlzLl9jaGVja0lmTGFzdFNlZW5SZWNvcmQodmlldyk7XG5cdFx0aWYgKGNoZWNrSWZMYXN0U2VlblJlY29yZCA9PT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzKTtcblx0XHQvLyBEb25lIGZvciBidXN5IGluZGljYXRvclxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCk7XG5cdFx0Ly8gVE9ETyBvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkgc2hvdWxkIHJldHVybiBFUzYgcHJvbWlzZSBpbnN0ZWFkIGpRdWVyeS5wcm9taXNlXG5cdFx0cmV0dXJuIHRvRVM2UHJvbWlzZShvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkpXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGFFcnJvckRhdGE6IHVua25vd25bXSkge1xuXHRcdFx0XHRpZiAoIWFFcnJvckRhdGEpIHtcblx0XHRcdFx0XHRhRXJyb3JEYXRhID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0TG9nLndhcm5pbmcoXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBmYWlsZWRcIiwgYUVycm9yRGF0YVswXSBhcyBzdHJpbmcpO1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8qIGFwcCBkYXRhICovXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzFdLFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMl1cblx0XHRcdFx0XTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYVJlc3VsdHM6IHVua25vd25bXSkgPT4ge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGRvbmVcIik7XG5cblx0XHRcdFx0Ly8gYVJlc3VsdHNbMV0gPT4gb1N0YXJ0dXBQYXJhbWV0ZXJzIChub3QgZXZhbHVhdGVkKVxuXHRcdFx0XHRjb25zdCBvQXBwRGF0YSA9IChhUmVzdWx0c1swXSB8fCB7fSkgYXMgQXBwRGF0YSxcblx0XHRcdFx0XHRzTmF2VHlwZSA9IChhUmVzdWx0c1syXSBhcyBzdHJpbmcpIHx8IE5hdlR5cGUuaW5pdGlhbCxcblx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRcdC8vIGFwcGx5IHRoZSBhcHBzdGF0ZSBkZXBlbmRpbmcgdXBvbiB0aGUgdmlldyAoTFIvT1ApXG5cdFx0XHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IHRoaXMuX2dldEFwcFN0YXRlRGF0YShvQXBwRGF0YSwgdmlld0lkLCBzTmF2VHlwZSk7XG5cdFx0XHRcdC8vIGZldGNoIHRoZSBza2lwTWVyZ2UgZmxhZyBmcm9tIGFwcFN0YXRlIGZvciBzYXZlIGFzIHRpbGVcblx0XHRcdFx0Y29uc3Qgc2tpcE1lcmdlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gb0FwcERhdGE/LmFwcFN0YXRlPy5bU0tJUF9NRVJHRV9LRVldO1xuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gc05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IGFwcFN0YXRlRGF0YSA6IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRpZiAoIW9Sb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBleHRlbnNpb24gcmVxdWlyZWQgZm9yIGNvbnRyb2xsZXIgJHtvUm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCghb0FwcERhdGEgfHwgT2JqZWN0LmtleXMob0FwcERhdGEpLmxlbmd0aCA9PT0gMCkgJiYgc05hdlR5cGUgPT0gTmF2VHlwZS5pQXBwU3RhdGUpIHtcblx0XHRcdFx0XHRpZiAoIW9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX2dldEluaXRpYWxTdGF0ZUFwcGxpZWQoKSkge1xuXHRcdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5fc2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihcImFwcFN0YXRlIGNvdWxkIG5vdCBiZSBhcHBsaWVkXCIsIG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHR0aHJvdyBvRXJyb3I7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gY2hlY2sgaXMgcm91dGUgaXMgY2hhbmdlZCBieSBjaGFuZ2UgaW4gdGhlIGlBUFBTdGF0ZS5cblx0ICpcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByb3V0ZSBoYXMgY2huYWdlZFxuXHQgKi9cblx0Y2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5iTm9Sb3V0ZUNoYW5nZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldCB0aGUgcm91dGUgY2hhbmdlZCBieSBpQVBQU3RhdGUuXG5cdCAqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBnbG9iYWxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgQXBwU3RhdGVIYW5kbGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQWVBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBQUMsSUFXN0JDLGVBQWUsV0FEcEJDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQztJQUFBO0lBWTdDLHlCQUFZQyxhQUEyQixFQUFFO01BQUE7TUFDeEMsOEJBQU87TUFBQyxNQUxEQyxpQkFBaUIsR0FBYyxDQUFDLENBQUM7TUFNeEMsTUFBS0QsYUFBYSxHQUFHQSxh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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiQXBwU3RhdGVIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJvQXBwQ29tcG9uZW50IiwiX21DdXJyZW50QXBwU3RhdGUiLCJzSWQiLCJnZXRJZCIsIm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsImNyZWF0ZUFwcFN0YXRlIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiQXBwU3RhdGUiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJyZXBsYWNlSGFzaCIsInNraXBNZXJnZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJyb3V0ZXJQcm94eSIsImdldFJvdXRlclByb3h5IiwiaGFzaCIsImdldEhhc2giLCJjb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiaXNTdGlja3lNb2RlIiwiTW9kZWxIZWxwZXIiLCJpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJnZXRNZXRhTW9kZWwiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImlubmVyQXBwU3RhdGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsImFwcFN0YXRlRGF0YSIsImFwcFN0YXRlIiwiYXBwU3RhdGVLZXkiLCJkZWVwRXF1YWwiLCJzdG9yZUlubmVyQXBwU3RhdGVBc3luYyIsInNOZXdIYXNoIiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJuYXZUb0hhc2giLCJ1bmRlZmluZWQiLCJvRXJyb3IiLCJlcnJvciIsImZpbmRBcHBTdGF0ZUluSGFzaCIsIl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm9BcHBEYXRhIiwic05hdlR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsIm5hdmlnYXRpb25UeXBlIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJ2aWV3SWQiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdG9FUzZQcm9taXNlIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1RvRVM2UHJvbWlzZVwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwiLi9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBsaWJyYXJ5Lk5hdlR5cGU7XG50eXBlIEFwcFN0YXRlID0ge1xuXHRza2lwTWVyZ2U/OiBib29sZWFuO1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcbmV4cG9ydCB0eXBlIEFwcERhdGEgPSB7XG5cdG9EZWZhdWx0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRvU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudDtcblx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogYm9vbGVhbjtcblx0YXBwU3RhdGU6IEFwcFN0YXRlO1xuXHRpQXBwU3RhdGU/OiB7XG5cdFx0YXBwU3RhdGU6IEFwcFN0YXRlO1xuXHR9O1xufTtcbmNvbnN0IFNLSVBfTUVSR0VfS0VZID0gXCJza2lwTWVyZ2VcIjtcbmV4cG9ydCB0eXBlIElBcHBTdGF0ZSA9IHtcblx0YXBwU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuZXhwb3J0IHR5cGUgQXBwRGF0YUluZm8gPSB7XG5cdGFwcFN0YXRlRGF0YTogeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH07XG5cdGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsO1xufTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU/OiBBcHBTdGF0ZSA9IHt9O1xuXG5cdG5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdDogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gb0FwcENvbXBvbmVudDtcblx0XHR0aGlzLnNJZCA9IGAke29BcHBDb21wb25lbnQuZ2V0SWQoKX0vQXBwU3RhdGVIYW5kbGVyYDtcblx0XHR0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9IDA7XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgdXBkYXRlcyB0aGUgYXBwc3RhdGUuXG5cdCAqIFJlcGxhY2VzIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBhcHBzdGF0ZSBiYXNlZCBvbiByZXBsYWNlSGFzaFxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleSBiYXNlZCBvbiByZXR1cm5LZXkgcHJvcGVydHlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiB7IHJlcGxhY2VIYXNoPzogYm9vbGVhbjsgc2tpcE1lcmdlPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgeyByZXBsYWNlSGFzaCA9IHRydWUsIHNraXBNZXJnZSA9IGZhbHNlIH0gPSBjcmVhdGVBcHBQYXJhbWV0ZXJzIHx8IHt9O1xuXG5cdFx0Y29uc3QgbmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdHJvdXRlclByb3h5ID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCksXG5cdFx0XHRoYXNoID0gcm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0Y29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCh0aGlzLm9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpO1xuXG5cdFx0aWYgKCFjb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBmb3IgY29udHJvbGxlcjogJHtjb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdH1cblx0XHRsZXQgaW5uZXJBcHBTdGF0ZSA9IGF3YWl0IGNvbnRyb2xsZXIudmlld1N0YXRlLnJldHJpZXZlVmlld1N0YXRlKCk7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiBpbm5lckFwcFN0YXRlIH07XG5cdFx0bGV0IGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0XHRpZiAoaW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIGlubmVyQXBwU3RhdGUpKSB7XG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRoaXMubmJTaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0Kys7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogQXBwc3RhdGUgc3RvcmVkXCIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHRjb25zdCBzTmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KGhhc2gsIGFwcFN0YXRlS2V5KTtcblx0XHRcdFx0XHR0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdC0tO1xuXHRcdFx0XHRcdGlmICh0aGlzLm5iU2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9PT0gMCAmJiBzTmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0XHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKHNOZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdFx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YTogYXBwU3RhdGVEYXRhLFxuXHRcdFx0YXBwU3RhdGVLZXk6IGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdF9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YTogQXBwRGF0YSwgc05hdlR5cGU6IHN0cmluZyk6IE5hdmlnYXRpb25QYXJhbWV0ZXIge1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBvQXBwRGF0YSwge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudERlZmF1bHRzOiBvQXBwRGF0YS5vRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9BcHBEYXRhLm9TZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0cmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6ICFvQXBwRGF0YS5iTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5LFxuXHRcdFx0bmF2aWdhdGlvblR5cGU6IHNOYXZUeXBlXG5cdFx0fSk7XG5cdH1cblxuXHRfY2hlY2tJZkxhc3RTZWVuUmVjb3JkKHZpZXc/OiBWaWV3KSB7XG5cdFx0Ly9nZXR0aW5nIHRoZSBpbnRlcm5hbCBtb2RlbCBjb250ZXh0IGluIG9yZGVyIHRvIGZldGNoIHRoZSB0ZWNobmljYWxrZXlzIG9mIGxhc3Qgc2VlbiByZWNvcmQgYW5kIGNsb3NlIGNvbHVtbiBmbGFnIHNldCBpbiB0aGUgaW50ZXJuYWxyb3V0aW5nIGZvciByZXRhaW5pbmcgc2V0dGluZ3MgaW4gcGVyc2lzdGVuY2UgbW9kZVxuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldyAmJiAodmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRpZiAoaW50ZXJuYWxNb2RlbENvbnRleHQgJiYgaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIikgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXNPYmplY3QgPSBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInRlY2huaWNhbEtleXNPZkxhc3RTZWVuUmVjb3JkXCIpO1xuXHRcdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB2aWV3Py5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBwYXRoID0gKGJpbmRpbmdDb250ZXh0ICYmIGJpbmRpbmdDb250ZXh0LmdldFBhdGgoKSkgfHwgXCJcIjtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IGJpbmRpbmdDb250ZXh0Py5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGggPSBtZXRhTW9kZWw/LmdldE1ldGFQYXRoKHBhdGgpO1xuXHRcdFx0Y29uc3QgdGVjaG5pY2FsS2V5cyA9IG1ldGFNb2RlbD8uZ2V0T2JqZWN0KGAke21ldGFQYXRofS8kVHlwZS8kS2V5YCk7XG5cdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGVjaG5pY2FsS2V5cykge1xuXHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRpZiAoa2V5VmFsdWUgIT09IHRlY2huaWNhbEtleXNPYmplY3RbZWxlbWVudF0pIHtcblx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImZjbENvbHVtbkNsb3NlZFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vdGhlIHJlY29yZCBvcGVuZWQgaXMgbm90IHRoZSBsYXN0IHNlZW4gb25lIDogbm8gbmVlZCB0byBwZXJzaXN0IHRoZSBjaGFuZ2VzLCByZXNldCB0byBkZWZhdWx0IGluc3RlYWRcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0X2dldEFwcFN0YXRlRGF0YShvQXBwRGF0YTogQXBwRGF0YSwgdmlld0lkPzogc3RyaW5nLCBuYXZUeXBlPzogc3RyaW5nKSB7XG5cdFx0bGV0IGtleSA9IFwiXCIsXG5cdFx0XHRpID0gMDtcblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSBuYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IG9BcHBEYXRhLmlBcHBTdGF0ZSA6IG9BcHBEYXRhO1xuXG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdGZvciAoaTsgaSA8IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV0gPT09IHZpZXdJZCkge1xuXHRcdFx0XHRcdGtleSA9IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldXTogYXBwU3RhdGVEYXRhLmFwcFN0YXRlW2tleV0gfHwge31cblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQHBhcmFtIHZpZXdJZFxuXHQgKiBAcGFyYW0gdmlld1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqL1xuXHRhc3luYyBhcHBseUFwcFN0YXRlKHZpZXdJZD86IHN0cmluZywgdmlldz86IFZpZXcpIHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBjaGVja0lmTGFzdFNlZW5SZWNvcmQgPSB0aGlzLl9jaGVja0lmTGFzdFNlZW5SZWNvcmQodmlldyk7XG5cdFx0aWYgKGNoZWNrSWZMYXN0U2VlblJlY29yZCA9PT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzKTtcblx0XHQvLyBEb25lIGZvciBidXN5IGluZGljYXRvclxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCk7XG5cdFx0Ly8gVE9ETyBvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkgc2hvdWxkIHJldHVybiBFUzYgcHJvbWlzZSBpbnN0ZWFkIGpRdWVyeS5wcm9taXNlXG5cdFx0cmV0dXJuIHRvRVM2UHJvbWlzZShvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkpXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGFFcnJvckRhdGE6IHVua25vd25bXSkge1xuXHRcdFx0XHRpZiAoIWFFcnJvckRhdGEpIHtcblx0XHRcdFx0XHRhRXJyb3JEYXRhID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0TG9nLndhcm5pbmcoXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBmYWlsZWRcIiwgYUVycm9yRGF0YVswXSBhcyBzdHJpbmcpO1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8qIGFwcCBkYXRhICovXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzFdLFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMl1cblx0XHRcdFx0XTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihhc3luYyAoYVJlc3VsdHM6IHVua25vd25bXSkgPT4ge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGRvbmVcIik7XG5cblx0XHRcdFx0Ly8gYVJlc3VsdHNbMV0gPT4gb1N0YXJ0dXBQYXJhbWV0ZXJzIChub3QgZXZhbHVhdGVkKVxuXHRcdFx0XHRjb25zdCBvQXBwRGF0YSA9IChhUmVzdWx0c1swXSB8fCB7fSkgYXMgQXBwRGF0YSxcblx0XHRcdFx0XHRzTmF2VHlwZSA9IChhUmVzdWx0c1syXSBhcyBzdHJpbmcpIHx8IE5hdlR5cGUuaW5pdGlhbCxcblx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRcdC8vIGFwcGx5IHRoZSBhcHBzdGF0ZSBkZXBlbmRpbmcgdXBvbiB0aGUgdmlldyAoTFIvT1ApXG5cdFx0XHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IHRoaXMuX2dldEFwcFN0YXRlRGF0YShvQXBwRGF0YSwgdmlld0lkLCBzTmF2VHlwZSk7XG5cdFx0XHRcdC8vIGZldGNoIHRoZSBza2lwTWVyZ2UgZmxhZyBmcm9tIGFwcFN0YXRlIGZvciBzYXZlIGFzIHRpbGVcblx0XHRcdFx0Y29uc3Qgc2tpcE1lcmdlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gb0FwcERhdGE/LmFwcFN0YXRlPy5bU0tJUF9NRVJHRV9LRVldO1xuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gc05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IGFwcFN0YXRlRGF0YSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwcGx5Vmlld1N0YXRlID0gYXdhaXQgb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShcblx0XHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdFx0XHRcdHRoaXMuX2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhLCBzTmF2VHlwZSksXG5cdFx0XHRcdFx0c2tpcE1lcmdlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICghc2hvdWxkQXBwbHlTdGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwbHlWaWV3U3RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0dGhyb3cgb0Vycm9yO1xuXHRcdFx0fSlcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm91dGUgaGFzIGNobmFnZWRcblx0ICovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXQgdGhlIHJvdXRlIGNoYW5nZWQgYnkgaUFQUFN0YXRlLlxuXHQgKi9cblx0cmVzZXRSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0aWYgKHRoaXMuYk5vUm91dGVDaGFuZ2UpIHtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXRlSGFuZGxlcjtcbiJd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
@@ -206,7 +206,7 @@ class AppStateHandler extends BaseObject {
206
206
  aErrorData[2]
207
207
  ];
208
208
  })
209
- .then((aResults: unknown[]) => {
209
+ .then(async (aResults: unknown[]) => {
210
210
  Log.info("APPSTATE: Parse Navigation done");
211
211
 
212
212
  // aResults[1] => oStartupParameters (not evaluated)
@@ -218,21 +218,27 @@ class AppStateHandler extends BaseObject {
218
218
  // fetch the skipMerge flag from appState for save as tile
219
219
  const skipMerge: boolean | undefined = oAppData?.appState?.[SKIP_MERGE_KEY];
220
220
  this._mCurrentAppState = sNavType === NavType.iAppState || sNavType === NavType.hybrid ? appStateData : undefined;
221
+ let shouldApplyState = true;
221
222
 
222
223
  if (!oRootController.viewState) {
223
224
  throw new Error(`viewState extension required for controller ${oRootController.getMetadata().getName()}`);
224
225
  }
225
- if ((!oAppData || Object.keys(oAppData).length === 0) && sNavType == NavType.iAppState) {
226
+ if (oRootController.viewState._isStateEmptyForIAppStateNavType(oAppData, sNavType)) {
226
227
  if (!oRootController.viewState._getInitialStateApplied()) {
227
228
  oRootController.viewState._setInitialStateApplied();
228
229
  }
229
- return {};
230
+ shouldApplyState = false;
230
231
  }
231
- return oRootController.viewState.applyViewState(
232
+ const applyViewState = await oRootController.viewState.applyViewState(
232
233
  this._mCurrentAppState as Record<string, unknown>,
233
234
  this._createNavigationParameters(oAppData, sNavType),
234
235
  skipMerge
235
236
  );
237
+ if (!shouldApplyState) {
238
+ return {};
239
+ } else {
240
+ return applyViewState;
241
+ }
236
242
  })
237
243
  .catch(function (oError: unknown) {
238
244
  Log.error("appState could not be applied", oError as string);